This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 884dbdbb6e Fix flaky TableViewsTest (#11770)
884dbdbb6e is described below

commit 884dbdbb6e2242f65f9b1614bf96e304e7acd5de
Author: Xiaotian (Jackie) Jiang <17555551+jackie-ji...@users.noreply.github.com>
AuthorDate: Wed Oct 11 12:03:56 2023 -0700

    Fix flaky TableViewsTest (#11770)
---
 .../pinot/controller/api/TableViewsTest.java       | 42 +++++++++-------------
 1 file changed, 17 insertions(+), 25 deletions(-)

diff --git 
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableViewsTest.java
 
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableViewsTest.java
index 178fb5720b..639542eab1 100644
--- 
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableViewsTest.java
+++ 
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableViewsTest.java
@@ -18,7 +18,6 @@
  */
 package org.apache.pinot.controller.api;
 
-import java.io.IOException;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.Map;
@@ -34,12 +33,16 @@ import org.apache.pinot.spi.utils.InstanceTypeUtils;
 import org.apache.pinot.spi.utils.JsonUtils;
 import org.apache.pinot.spi.utils.builder.TableConfigBuilder;
 import org.apache.pinot.spi.utils.builder.TableNameBuilder;
+import org.apache.pinot.util.TestUtils;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 
 public class TableViewsTest extends ControllerTest {
@@ -67,37 +70,26 @@ public class TableViewsTest extends ControllerTest {
     tableConfig = new 
TableConfigBuilder(TableType.OFFLINE).setTableName(HYBRID_TABLE_NAME)
         .setNumReplicas(DEFAULT_MIN_NUM_REPLICAS).build();
     DEFAULT_INSTANCE.getHelixResourceManager().addTable(tableConfig);
-
-    // add schema for realtime table
     StreamConfig streamConfig = 
FakeStreamConfigUtils.getDefaultLowLevelStreamConfigs(4);
     tableConfig = new 
TableConfigBuilder(TableType.REALTIME).setTableName(HYBRID_TABLE_NAME)
         
.setNumReplicas(DEFAULT_MIN_NUM_REPLICAS).setStreamConfigs(streamConfig.getStreamConfigsMap()).build();
     DEFAULT_INSTANCE.getHelixResourceManager().addTable(tableConfig);
 
     // Wait for external view get updated
-    long endTime = System.currentTimeMillis() + 10_000L;
-    while (System.currentTimeMillis() < endTime) {
-      Thread.sleep(100L);
-      TableViews.TableView tableView;
+    TestUtils.waitForCondition(aVoid -> {
       try {
-        tableView = getTableView(OFFLINE_TABLE_NAME, TableViews.EXTERNALVIEW, 
null);
-      } catch (IOException e) {
-        // Table may not be created yet.
-        continue;
-      }
-      if ((tableView._offline == null) || (tableView._offline.size() != 1)) {
-        continue;
-      }
-      tableView = getTableView(HYBRID_TABLE_NAME, TableViews.EXTERNALVIEW, 
null);
-      if (tableView._offline == null) {
-        continue;
+        TableViews.TableView tableView = getTableView(OFFLINE_TABLE_NAME, 
TableViews.EXTERNALVIEW, null);
+        if (tableView._offline == null || tableView._offline.size() != 1) {
+          return false;
+        }
+        tableView = getTableView(HYBRID_TABLE_NAME, TableViews.EXTERNALVIEW, 
null);
+        return tableView._offline != null && tableView._realtime != null
+            && tableView._realtime.size() == DEFAULT_NUM_SERVER_INSTANCES;
+      } catch (Exception e) {
+        // Expected before external view is created
+        return false;
       }
-      if ((tableView._realtime == null) || (tableView._realtime.size() != 
DEFAULT_NUM_SERVER_INSTANCES)) {
-        continue;
-      }
-      return;
-    }
-    fail("Failed to get external view updated");
+    }, 10_000L, "Failed to get external view updated");
   }
 
   @DataProvider(name = "viewProvider")


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to