HDFS-10965. Add unit test for HDFS command 'dfsadmin -printTopology'. Contributed by Xiaobing Zhou
This commit is contained in:
parent
bc5a9931d7
commit
0f481e2022
|
@ -28,6 +28,8 @@ import org.apache.hadoop.hdfs.MiniDFSCluster;
|
|||
import org.apache.hadoop.hdfs.server.common.Storage;
|
||||
import org.apache.hadoop.hdfs.server.datanode.DataNode;
|
||||
import org.apache.hadoop.hdfs.server.datanode.StorageLocation;
|
||||
import org.apache.hadoop.test.GenericTestUtils;
|
||||
import org.apache.hadoop.test.PathUtils;
|
||||
import org.apache.hadoop.util.ToolRunner;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
@ -196,6 +198,55 @@ public class TestDFSAdmin {
|
|||
}
|
||||
}
|
||||
|
||||
@Test(timeout = 30000)
|
||||
public void testPrintTopology() throws Exception {
|
||||
redirectStream();
|
||||
|
||||
/* init conf */
|
||||
final Configuration dfsConf = new HdfsConfiguration();
|
||||
final File baseDir = new File(
|
||||
PathUtils.getTestDir(getClass()),
|
||||
GenericTestUtils.getMethodName());
|
||||
dfsConf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, baseDir.getAbsolutePath());
|
||||
|
||||
final int numDn = 4;
|
||||
final String[] racks = {
|
||||
"/d1/r1", "/d1/r2",
|
||||
"/d2/r1", "/d2/r2"};
|
||||
|
||||
/* init cluster using topology */
|
||||
try (MiniDFSCluster miniCluster = new MiniDFSCluster.Builder(dfsConf)
|
||||
.numDataNodes(numDn).racks(racks).build()) {
|
||||
|
||||
miniCluster.waitActive();
|
||||
assertEquals(numDn, miniCluster.getDataNodes().size());
|
||||
final DFSAdmin dfsAdmin = new DFSAdmin(dfsConf);
|
||||
|
||||
resetStream();
|
||||
final int ret = ToolRunner.run(dfsAdmin, new String[] {"-printTopology"});
|
||||
|
||||
/* collect outputs */
|
||||
final List<String> outs = Lists.newArrayList();
|
||||
scanIntoList(out, outs);
|
||||
|
||||
/* verify results */
|
||||
assertEquals(0, ret);
|
||||
assertEquals(
|
||||
"There should be three lines per Datanode: the 1st line is"
|
||||
+ " rack info, 2nd node info, 3rd empty line. The total"
|
||||
+ " should be as a result of 3 * numDn.",
|
||||
12, outs.size());
|
||||
assertThat(outs.get(0),
|
||||
is(allOf(containsString("Rack:"), containsString("/d1/r1"))));
|
||||
assertThat(outs.get(3),
|
||||
is(allOf(containsString("Rack:"), containsString("/d1/r2"))));
|
||||
assertThat(outs.get(6),
|
||||
is(allOf(containsString("Rack:"), containsString("/d2/r1"))));
|
||||
assertThat(outs.get(9),
|
||||
is(allOf(containsString("Rack:"), containsString("/d2/r2"))));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test reconfiguration and check the status outputs.
|
||||
* @param expectedSuccuss set true if the reconfiguration task should success.
|
||||
|
|
Loading…
Reference in New Issue