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());
