/** * Test if the OfflineImageViewer can correctly parse a fsimage containing * snapshots */ @Test public void testOfflineImageViewer() throws Throwable { runTestSnapshot(SNAPSHOT_ITERATION_NUMBER); // retrieve the fsimage. Note that we already save namespace to fsimage at // the end of each iteration of runTestSnapshot. File originalFsimage = FSImageTestUtil.findLatestImageFile( FSImageTestUtil.getFSImage( cluster.getNameNode()).getStorage().getStorageDir(0)); assertNotNull("Didn't generate or can't find fsimage", originalFsimage); String ROOT = System.getProperty("test.build.data", "build/test/data"); File testFile = new File(ROOT, "/image"); String xmlImage = ROOT + "/image_xml"; boolean success = false; try { DFSTestUtil.copyFile(originalFsimage, testFile); XmlImageVisitor v = new XmlImageVisitor(xmlImage, true); OfflineImageViewer oiv = new OfflineImageViewer(testFile.getPath(), v, true); oiv.go(); success = true; } finally { if (testFile.exists()) { testFile.delete(); } // delete the xml file if the parsing is successful if (success) { File xmlImageFile = new File(xmlImage); if (xmlImageFile.exists()) { xmlImageFile.delete(); } } } }
private ImageValidator(File imageFile) throws IOException { LOG.info("Validating image file " + imageFile); tmpImageFileForValidation.delete(); LsImageVisitor v = new LsImageVisitor(tmpImageFileForValidation.toString()); viewer = new OfflineImageViewer(imageFile.toString(), v, true); }