Browse Source

YARN-9551. TestTimelineClientV2Impl.testSyncCall fails intermittent (#3212)

Co-authored-by: Andras Gyori <gandras@cloudera.com>
9uapaw 3 years ago
parent
commit
b4a524722a

+ 24 - 12
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClientV2Impl.java

@@ -248,24 +248,36 @@ public class TestTimelineClientV2Impl {
       Thread.sleep(TIME_TO_SLEEP);
     }
     printReceivedEntities();
-    Assert.assertEquals("TimelineEntities not published as desired", 3,
-        client.getNumOfTimelineEntitiesPublished());
+
+    boolean asyncPushesMerged = client.getNumOfTimelineEntitiesPublished() == 3;
+    int lastPublishIndex = asyncPushesMerged ? 2 : 3;
+
     TimelineEntities firstPublishedEntities = client.getPublishedEntities(0);
     Assert.assertEquals("sync entities should not be merged with async", 1,
         firstPublishedEntities.getEntities().size());
 
-    // test before pushing the sync entities asyncs are merged and pushed
-    TimelineEntities secondPublishedEntities = client.getPublishedEntities(1);
-    Assert.assertEquals(
-        "async entities should be merged before publishing sync", 2,
-        secondPublishedEntities.getEntities().size());
-    Assert.assertEquals("Order of Async Events Needs to be FIFO", "2",
-        secondPublishedEntities.getEntities().get(0).getId());
-    Assert.assertEquals("Order of Async Events Needs to be FIFO", "3",
-        secondPublishedEntities.getEntities().get(1).getId());
+    // async push does not guarantee a merge but is FIFO
+    if (asyncPushesMerged) {
+      TimelineEntities secondPublishedEntities = client.getPublishedEntities(1);
+      Assert.assertEquals(
+          "async entities should be merged before publishing sync", 2,
+          secondPublishedEntities.getEntities().size());
+      Assert.assertEquals("Order of Async Events Needs to be FIFO", "2",
+          secondPublishedEntities.getEntities().get(0).getId());
+      Assert.assertEquals("Order of Async Events Needs to be FIFO", "3",
+          secondPublishedEntities.getEntities().get(1).getId());
+    } else {
+      TimelineEntities secondAsyncPublish = client.getPublishedEntities(1);
+      Assert.assertEquals("Order of Async Events Needs to be FIFO", "2",
+          secondAsyncPublish.getEntities().get(0).getId());
+      TimelineEntities thirdAsyncPublish = client.getPublishedEntities(2);
+      Assert.assertEquals("Order of Async Events Needs to be FIFO", "3",
+          thirdAsyncPublish.getEntities().get(0).getId());
+    }
 
     // test the last entity published is sync put
-    TimelineEntities thirdPublishedEntities = client.getPublishedEntities(2);
+    TimelineEntities thirdPublishedEntities =
+        client.getPublishedEntities(lastPublishIndex);
     Assert.assertEquals("sync entities had to be published at the last", 1,
         thirdPublishedEntities.getEntities().size());
     Assert.assertEquals("Expected last sync Event is not proper", "4",