소스 검색

HDFS-11842. TestDataNodeOutlierDetectionViaMetrics UT fails intermittently. Controbuted by Hanisha Koneru.

Arpit Agarwal 8 년 전
부모
커밋
3db695d400

+ 9 - 1
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/metrics/TestDataNodeOutlierDetectionViaMetrics.java

@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.hdfs.server.datanode.metrics;
 
+import com.google.common.base.Supplier;
 import org.apache.hadoop.test.GenericTestUtils;
 import org.apache.log4j.Level;
 import org.junit.Before;
@@ -71,7 +72,7 @@ public class TestDataNodeOutlierDetectionViaMetrics {
   public void testOutlierIsDetected() throws Exception {
     final String slowNodeName = "SlowNode";
 
-    DataNodePeerMetrics peerMetrics = new DataNodePeerMetrics(
+    final DataNodePeerMetrics peerMetrics = new DataNodePeerMetrics(
         "PeerMetrics-For-Test", WINDOW_INTERVAL_SECONDS,
         ROLLING_AVERAGE_WINDOWS);
 
@@ -81,6 +82,13 @@ public class TestDataNodeOutlierDetectionViaMetrics {
     // Trigger a snapshot.
     peerMetrics.dumpSendPacketDownstreamAvgInfoAsJson();
 
+    GenericTestUtils.waitFor(new Supplier<Boolean>() {
+      @Override
+      public Boolean get() {
+        return peerMetrics.getOutliers().size() > 0;
+      }
+    }, 500, 100_000);
+
     final Map<String, Double> outliers = peerMetrics.getOutliers();
     LOG.info("Got back outlier nodes: {}", outliers);
     assertThat(outliers.size(), is(1));