### Question:
DumpTypedBytes implements Tool { public int run(String[] args) throws Exception { if (args.length == 0) { System.err.println("Too few arguments!"); printUsage(); return 1; } Path pattern = new Path(args[0]); FileSystem fs = pattern.getFileSystem(getConf()); fs.setVerifyChecksum(true); for (Path p : FileUtil.stat2Paths(fs.globStatus(pattern), pattern)) { List<FileStatus> inputFiles = new ArrayList<FileStatus>(); FileStatus status = fs.getFileStatus(p); if (status.isDirectory()) { FileStatus[] files = fs.listStatus(p); Collections.addAll(inputFiles, files); } else { inputFiles.add(status); } return dumpTypedBytes(inputFiles); } return -1; } DumpTypedBytes(Configuration conf);  DumpTypedBytes(); Configuration getConf(); void setConf(Configuration conf); int run(String[] args); static void main(String[] args);  }### Answer:
@Test public void testDumping() throws Exception { Configuration conf = new Configuration(); MiniDFSCluster cluster = new MiniDFSCluster(conf, 2, true, null); FileSystem fs = cluster.getFileSystem(); PrintStream psBackup = System.out; ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintStream psOut = new PrintStream(out); System.setOut(psOut); DumpTypedBytes dumptb = new DumpTypedBytes(conf); try { Path root = new Path("/typedbytestest"); assertTrue(fs.mkdirs(root)); assertTrue(fs.exists(root)); OutputStreamWriter writer = new OutputStreamWriter(fs.create(new Path( root, "test.txt"))); try { for (int i = 0; i < 100; i++) { writer.write("" + (10 * i) + "\n"); } } finally { writer.close(); } String[] args = new String[1]; args[0] = "/typedbytestest"; int ret = dumptb.run(args); assertEquals("Return value != 0.", 0, ret); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); TypedBytesInput tbinput = new TypedBytesInput(new DataInputStream(in)); int counter = 0; Object key = tbinput.read(); while (key != null) { assertEquals(Long.class, key.getClass()); Object value = tbinput.read(); assertEquals(String.class, value.getClass()); assertTrue("Invalid output.", Integer.parseInt(value.toString()) % 10 == 0); counter++; key = tbinput.read(); } assertEquals("Wrong number of outputs.", 100, counter); } finally { try { fs.close(); } catch (Exception e) { } System.setOut(psBackup); cluster.shutdown(); } }