/** Test the OfflineEditsViewer */ @Test public void testGenerated() throws IOException { LOG.info("START - testing with generated edits"); nnHelper.startCluster(buildDir + "/dfs/"); // edits generated by nnHelper (MiniDFSCluster), should have all op codes // binary, XML, reparsed binary String edits = nnHelper.generateEdits(); String editsParsedXml = cacheDir + "/editsParsed.xml"; String editsReparsed = cacheDir + "/editsReparsed"; // parse to XML then back to binary assertEquals(0, runOev(edits, editsParsedXml, "xml", false)); assertEquals(0, runOev(editsParsedXml, editsReparsed, "binary", false)); // judgment time assertTrue("Edits " + edits + " should have all op codes", hasAllOpCodes(edits)); assertTrue( "Generated edits and reparsed (bin to XML to bin) should be same", filesEqualIgnoreTrailingZeros(edits, editsReparsed)); // removes edits so do this at the end nnHelper.shutdownCluster(); LOG.info("END"); }
@Test public void testRecoveryMode() throws IOException { LOG.info("START - testing with generated edits"); nnHelper.startCluster(buildDir + "/dfs/"); // edits generated by nnHelper (MiniDFSCluster), should have all op codes // binary, XML, reparsed binary String edits = nnHelper.generateEdits(); // Corrupt the file by truncating the end FileChannel editsFile = new FileOutputStream(edits, true).getChannel(); editsFile.truncate(editsFile.size() - 5); String editsParsedXml = cacheDir + "/editsRecoveredParsed.xml"; String editsReparsed = cacheDir + "/editsRecoveredReparsed"; String editsParsedXml2 = cacheDir + "/editsRecoveredParsed2.xml"; // Can't read the corrupted file without recovery mode assertEquals(-1, runOev(edits, editsParsedXml, "xml", false)); // parse to XML then back to binary assertEquals(0, runOev(edits, editsParsedXml, "xml", true)); assertEquals(0, runOev(editsParsedXml, editsReparsed, "binary", false)); assertEquals(0, runOev(editsReparsed, editsParsedXml2, "xml", false)); // judgment time assertTrue("Test round trip", filesEqualIgnoreTrailingZeros(editsParsedXml, editsParsedXml2)); // removes edits so do this at the end nnHelper.shutdownCluster(); LOG.info("END"); }