HDFS-10668. Fix intermittently failing UT TestDataNodeMXBean#testDataNodeMXBeanBlockCount. Contributed by Mingliang Liu.
This commit is contained in:
parent
85a20508bd
commit
7cac7655fd
@ -25,11 +25,13 @@
|
|||||||
import javax.management.MBeanServer;
|
import javax.management.MBeanServer;
|
||||||
import javax.management.ObjectName;
|
import javax.management.ObjectName;
|
||||||
|
|
||||||
|
import com.google.common.base.Supplier;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.fs.FileSystem;
|
import org.apache.hadoop.fs.FileSystem;
|
||||||
import org.apache.hadoop.fs.Path;
|
import org.apache.hadoop.fs.Path;
|
||||||
import org.apache.hadoop.hdfs.DFSTestUtil;
|
import org.apache.hadoop.hdfs.DFSTestUtil;
|
||||||
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
||||||
|
import org.apache.hadoop.test.GenericTestUtils;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mortbay.util.ajax.JSON;
|
import org.mortbay.util.ajax.JSON;
|
||||||
@ -119,10 +121,18 @@ public void testDataNodeMXBeanBlockCount() throws Exception {
|
|||||||
cluster.waitActive();
|
cluster.waitActive();
|
||||||
assertEquals("After restart DN", 5, getTotalNumBlocks(mbs, mxbeanName));
|
assertEquals("After restart DN", 5, getTotalNumBlocks(mbs, mxbeanName));
|
||||||
fs.delete(new Path("/tmp.txt1"), true);
|
fs.delete(new Path("/tmp.txt1"), true);
|
||||||
// Wait till replica gets deleted on disk.
|
// The total numBlocks should be updated after one file is deleted
|
||||||
Thread.sleep(5000);
|
GenericTestUtils.waitFor(new Supplier<Boolean>() {
|
||||||
assertEquals("After delete one file", 4,
|
@Override
|
||||||
getTotalNumBlocks(mbs, mxbeanName));
|
public Boolean get() {
|
||||||
|
try {
|
||||||
|
return getTotalNumBlocks(mbs, mxbeanName) == 4;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100, 30000);
|
||||||
} finally {
|
} finally {
|
||||||
if (cluster != null) {
|
if (cluster != null) {
|
||||||
cluster.shutdown();
|
cluster.shutdown();
|
||||||
@ -131,7 +141,7 @@ public void testDataNodeMXBeanBlockCount() throws Exception {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
int getTotalNumBlocks(MBeanServer mbs, ObjectName mxbeanName)
|
private int getTotalNumBlocks(MBeanServer mbs, ObjectName mxbeanName)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
int totalBlocks = 0;
|
int totalBlocks = 0;
|
||||||
String volumeInfo = (String) mbs.getAttribute(mxbeanName, "VolumeInfo");
|
String volumeInfo = (String) mbs.getAttribute(mxbeanName, "VolumeInfo");
|
||||||
|
Loading…
Reference in New Issue
Block a user