/* * Test the API: RepNode.shutdownNetworkBackup/restartNetworkBackup service * used to disable the service around a replica syncup operation. */ @Test public void testLockout() throws IOException { setExceptionListener(repEnvInfo[0]); repEnvInfo[0].openEnv(); RepNode repNode = repEnvInfo[0].getRepNode(); leaveGroupAllButMaster(); repNode.shutdownNetworkBackup(); File backupDir = new File(repEnvInfo[1].getEnvHome().getCanonicalPath() + ".backup"); backupDir.mkdir(); assertTrue(backupDir.exists()); DataChannelFactory channelFactory = DataChannelFactoryBuilder.construct(RepTestUtils.readRepNetConfig()); EnvironmentImpl envImpl = createEnvImpl(backupDir); try { NetworkBackup backup = new NetworkBackup( repNode.getSocket(), backupDir, new NameIdPair("n1", (short) 1), true, envImpl.getFileManager(), channelFactory); backup.execute(); fail("expected exception service should not have been available"); } catch (ServiceConnectFailedException e) { /* Expected. */ } catch (Exception e) { fail("unexpected exception" + e); } repNode.restartNetworkBackup(); try { NetworkBackup backup = new NetworkBackup( repNode.getSocket(), backupDir, new NameIdPair("n1", (short) 1), true, envImpl.getFileManager(), channelFactory); backup.execute(); } catch (Exception e) { fail("unexpected exception:" + e); } envImpl.abnormalClose(); }
/** * Verify that a NetworkBackup that's in progress is aborted by repNode.shutdownNetworkRestore() * and therefore during a rollback operation. */ @Test public void testNBAbortOnSyncup() throws IOException, DatabaseException, ServiceConnectFailedException, LoadThresholdExceededException, InsufficientVLSNRangeException { setExceptionListener(repEnvInfo[0]); repEnvInfo[0].openEnv(); final RepNode repNode = repEnvInfo[0].getRepNode(); leaveGroupAllButMaster(); File backupDir = new File(repEnvInfo[1].getEnvHome().getCanonicalPath() + ".backup"); backupDir.mkdir(); DataChannelFactory channelFactory = DataChannelFactoryBuilder.construct(RepTestUtils.readRepNetConfig()); EnvironmentImpl envImpl = createEnvImpl(backupDir); NetworkBackup backup = new NetworkBackup( repNode.getSocket(), backupDir, new NameIdPair("n1", (short) 1), true, envImpl.getFileManager(), channelFactory); CyclicBarrier testBarrier = new CyclicBarrier( 1, new Runnable() { public void run() { /* The syncup should kill the NB */ repNode.shutdownNetworkBackup(); } }); backup.setTestBarrier(testBarrier); try { backup.execute(); fail("Expected exception"); } catch (IOException e) { /* Expected exception as in progress service was terminated. */ } envImpl.abnormalClose(); }