Fix 2 test bugs that fails mvn test.

TestZkReconnect has a racing issue that the expected flag maybe set earlier. 
Change the test script to wait until the flag is configured.
BestPossibleExternalViewVerifier has an issue that when best possible state is 
not able to be calculated, the verifier always return false. The expected 
behavior is return true if the external view does not exist.


Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/964b802c
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/964b802c
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/964b802c

Branch: refs/heads/master
Commit: 964b802cfb5ea32bd1ff4f780c0efff97ceb64b3
Parents: acea2f1
Author: Jiajun Wang <[email protected]>
Authored: Mon Jul 9 15:08:12 2018 -0700
Committer: jiajunwang <[email protected]>
Committed: Tue Jul 17 11:52:50 2018 -0700

----------------------------------------------------------------------
 .../BestPossibleExternalViewVerifier.java            | 10 +++++-----
 .../org/apache/helix/manager/zk/TestZkReconnect.java | 15 ++++++++++++---
 2 files changed, 17 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/helix/blob/964b802c/helix-core/src/main/java/org/apache/helix/tools/ClusterVerifiers/BestPossibleExternalViewVerifier.java
----------------------------------------------------------------------
diff --git 
a/helix-core/src/main/java/org/apache/helix/tools/ClusterVerifiers/BestPossibleExternalViewVerifier.java
 
b/helix-core/src/main/java/org/apache/helix/tools/ClusterVerifiers/BestPossibleExternalViewVerifier.java
index fa5d29f..6e73df6 100644
--- 
a/helix-core/src/main/java/org/apache/helix/tools/ClusterVerifiers/BestPossibleExternalViewVerifier.java
+++ 
b/helix-core/src/main/java/org/apache/helix/tools/ClusterVerifiers/BestPossibleExternalViewVerifier.java
@@ -82,7 +82,7 @@ public class BestPossibleExternalViewVerifier extends 
ZkHelixClusterVerifier {
     _expectLiveInstances = expectLiveInstances;
     _clusterDataCache = new ClusterDataCache();
   }
-  
+
   public static class Builder {
     private String _clusterName;
     private Map<String, Map<String, String>> _errStates;
@@ -260,15 +260,15 @@ public class BestPossibleExternalViewVerifier extends 
ZkHelixClusterVerifier {
       }
 
       for (String resourceName : idealStates.keySet()) {
-        ExternalView extView = extViews.get(resourceName);
         IdealState is = idealStates.get(resourceName);
+        ExternalView extView = extViews.get(resourceName);
         if (extView == null) {
           if (is.isExternalViewDisabled()) {
             continue;
-          } else {
-            LOG.error("externalView for " + resourceName + " is not 
available");
-            return false;
           }
+          LOG.warn("externalView for " + resourceName
+              + " is not available, check if best possible state is 
available.");
+          extView = new ExternalView(resourceName);
         }
 
         // step 0: remove empty map and DROPPED state from best possible state

http://git-wip-us.apache.org/repos/asf/helix/blob/964b802c/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkReconnect.java
----------------------------------------------------------------------
diff --git 
a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkReconnect.java 
b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkReconnect.java
index 303cf68..1f72948 100644
--- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkReconnect.java
+++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkReconnect.java
@@ -109,13 +109,22 @@ public class TestZkReconnect {
       ZkHelixPropertyStore propertyStore = controller.getHelixPropertyStore();
       propertyStore.get("/", null, 0);
 
-      onConnectedFlag.set(false);
+      TestHelper.verify(new TestHelper.Verifier() {
+        @Override
+        public boolean verify() throws Exception {
+          return onConnectedFlag.getAndSet(false);
+        }
+      }, 1000);
 
       // Inject expire to test handler
       // onDisconnectedFlag should be set within onDisconnected handler
       controller.handleSessionEstablishmentError(new Exception("For testing"));
-      Thread.sleep(10);
-      Assert.assertTrue(onDisconnectedFlag.get());
+      TestHelper.verify(new TestHelper.Verifier() {
+        @Override
+        public boolean verify() throws Exception {
+          return onDisconnectedFlag.get();
+        }
+      }, 1000);
       Assert.assertFalse(onConnectedFlag.get());
       Assert.assertFalse(controller.isConnected());
 

Reply via email to