@Test public void testBackupFailure() throws Exception { IPartitionManager pm = ManagementContainer.getInstance().getPartitionManager(); m_part.setAccessibleRemotely(true); pm.updatePartition(m_part); m_part = pm.getPartition(TEST_PID); Customer cust = TestUtils.createActiveMailboxTestCustomer(Capabilities.ActiveMailboxSupport.ARCHIVE); try { MockMessageImporter mock = new MockMessageImporter(getClass().getSimpleName()); PartitionStoreStage stg = new PartitionStoreStage(mock) { public void finish() { super.finish(); ((StatComponent) m_importer.getStatComponent()).stop(); } }; MockStageController ctrl = new MockStageController("test"); stg.setStageController(ctrl); assertEquals(0, mock.getNumFailedMessages()); assertEquals(0, mock.getNumSucceededMessages()); // Partition dummyPart = new Partition(10, "sdcvsdv"); File backupSubDir = new File(m_part.getStorageDirectory(), Partition.BACKUP_SUBDIR); Pair<Partition, List<IMessageContext>> buffer = new Pair<Partition, List<IMessageContext>>( m_part, generateMockMessageContext(10000, 10, cust)); stg.process(buffer); // Nothing should have failed assertEquals(0, mock.getNumFailedMessages()); assertEquals(10, ctrl.getOutputCount()); assertTrue(backupSubDir.exists()); // Stop backup writers, delete backup directory and then make sure everything works when we // start back up Utils.finishBackupWriters(); FileUtils.deleteDirectory(backupSubDir); assertFalse(backupSubDir.exists()); Utils.startBackupWriters(); ctrl.resetOutputCount(); buffer = new Pair<Partition, List<IMessageContext>>( m_part, generateMockMessageContext(100000, 10, cust)); stg.process(buffer); // Nothing should have failed assertEquals(0, mock.getNumFailedMessages()); assertEquals(10, ctrl.getOutputCount()); assertTrue(backupSubDir.exists()); stg.finish(); } finally { TestUtils.quietDeleteCustomer(cust); } }