@Test(timeout = 30000)
public void testGetDatanodeInfo() throws Exception {

  redirectStream();
  final DFSAdmin dfsAdmin = new DFSAdmin(conf);
  for (int i = 0; i < cluster.getDataNodes().size(); i++) {
    resetStream();
    final DataNode dn = cluster.getDataNodes().get(i);
    final String addr = String.format(
        "%s:%d",
        dn.getXferAddress().getHostString(),
        dn.getIpcPort());
    final int ret = ToolRunner.run(dfsAdmin,
        new String[]{"-getDatanodeInfo", addr});
    assertEquals(0, ret);
    /* collect outputs */
    final List<String> outs = Lists.newArrayList();
    scanIntoList(out, outs);
    /* verify results */
    assertEquals(
        "One line per DataNode like: Uptime: XXX, Software version: x.y.z,"
            + " Config version: core-x.y.z,hdfs-x",
        1, outs.size());
    assertThat(outs.get(0),
        is(allOf(containsString("Uptime:"),
            containsString("Software version"),
            containsString("Config version"))));
  }
}