/** Checks the JournalManager.isSegmentInProgress() */ @Test public void testInprogressSegment() throws IOException { File f = new File(TestEditLog.TEST_DIR + "/testInprogressSegment"); // abort after the 5th roll NNStorage storage = setupEdits(Collections.<URI>singletonList(f.toURI()), 5, new AbortSpec(5, 0)); StorageDirectory sd = storage.dirIterator(NameNodeDirType.EDITS).next(); FileJournalManager jm = new FileJournalManager(sd); assertEquals(5 * TXNS_PER_ROLL + TXNS_PER_FAIL, jm.getNumberOfTransactions(0)); boolean isOneInProgress = false; boolean isOneNotInProgress = false; for (RemoteEditLog rel : jm.getRemoteEditLogs(0)) { if (rel.inProgress()) { isOneInProgress = true; assertTrue(jm.isSegmentInProgress(rel.getStartTxId())); } else { isOneNotInProgress = true; assertFalse(jm.isSegmentInProgress(rel.getStartTxId())); } } assertTrue(isOneInProgress); assertTrue(isOneNotInProgress); }
private static String getLogsAsString(FileJournalManager fjm, long firstTxId) throws IOException { return Joiner.on(",").join(fjm.getRemoteEditLogs(firstTxId)); }