Forráskód Böngészése

HDFS-11290. TestFSNameSystemMBean should wait until JMX cache is cleared. Contributed by Erik Krogen.

(cherry picked from commit b1a9ec856b572894e769f052aea2340fc3f23c78)
(cherry picked from commit db47bd15dd80a4a5727607832c16635cb0ec7726)
Akira Ajisaka 8 éve
szülő
commit
71cbc4f6b5

+ 10 - 0
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java

@@ -34,6 +34,8 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
+import org.apache.hadoop.metrics2.impl.ConfigBuilder;
+import org.apache.hadoop.metrics2.impl.TestMetricsConfig;
 import org.junit.Test;
 import org.mortbay.util.ajax.JSON;
 
@@ -139,12 +141,16 @@ public class TestFSNamesystemMBean {
     MiniDFSCluster cluster = null;
     FSNamesystem fsn = null;
 
+    int jmxCachePeriod = 1;
+    new ConfigBuilder().add("namenode.period", jmxCachePeriod)
+        .save(TestMetricsConfig.getTestFilename("hadoop-metrics2-namenode"));
     try {
       cluster = new MiniDFSCluster.Builder(conf).build();
       cluster.waitActive();
 
       fsn = cluster.getNameNode().namesystem;
       fsn.writeLock();
+      Thread.sleep(jmxCachePeriod * 1000);
 
       MBeanClient client = new MBeanClient();
       client.start();
@@ -167,11 +173,15 @@ public class TestFSNamesystemMBean {
   @Test
   public void testWithFSEditLogLock() throws Exception {
     Configuration conf = new Configuration();
+    int jmxCachePeriod = 1;
+    new ConfigBuilder().add("namenode.period", jmxCachePeriod)
+        .save(TestMetricsConfig.getTestFilename("hadoop-metrics2-namenode"));
     MiniDFSCluster cluster = null;
     try {
       cluster = new MiniDFSCluster.Builder(conf).build();
       cluster.waitActive();
       synchronized (cluster.getNameNode().getFSImage().getEditLog()) {
+        Thread.sleep(jmxCachePeriod * 1000);
         MBeanClient client = new MBeanClient();
         client.start();
         client.join(20000);