Repository: helix Updated Branches: refs/heads/master 739adb0d6 -> 67aade646
Enhance the stability of test TestClusterStatusMonitorLifecycle. Project: http://git-wip-us.apache.org/repos/asf/helix/repo Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/67aade64 Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/67aade64 Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/67aade64 Branch: refs/heads/master Commit: 67aade646c346cfee55b6a350253a78d85248c20 Parents: 739adb0 Author: Jiajun Wang <[email protected]> Authored: Mon Sep 17 15:00:59 2018 -0700 Committer: Junkai Xue <[email protected]> Committed: Mon Oct 29 16:41:19 2018 -0700 ---------------------------------------------------------------------- .../TestClusterStatusMonitorLifecycle.java | 71 +++++++++----------- 1 file changed, 30 insertions(+), 41 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/helix/blob/67aade64/helix-core/src/test/java/org/apache/helix/monitoring/TestClusterStatusMonitorLifecycle.java ---------------------------------------------------------------------- diff --git a/helix-core/src/test/java/org/apache/helix/monitoring/TestClusterStatusMonitorLifecycle.java b/helix-core/src/test/java/org/apache/helix/monitoring/TestClusterStatusMonitorLifecycle.java index ffa1966..7eb2b8d 100644 --- a/helix-core/src/test/java/org/apache/helix/monitoring/TestClusterStatusMonitorLifecycle.java +++ b/helix-core/src/test/java/org/apache/helix/monitoring/TestClusterStatusMonitorLifecycle.java @@ -145,6 +145,13 @@ public class TestClusterStatusMonitorLifecycle extends ZkTestBase { // verify first cluster Assert.assertTrue(firstClusterVerifier.verifyByPolling(), "first cluster NOT in ideal state"); + // verify all the rest clusters + for (int i = 1; i < clusterNb; i++) { + ZkHelixClusterVerifier clusterVerifier = + new BestPossibleExternalViewVerifier.Builder(_clusterNamePrefix + "0_" + i) + .setZkClient(_gZkClient).build(); + Assert.assertTrue(clusterVerifier.verifyByPolling(), "Cluster NOT in ideal state."); + } } @AfterClass @@ -209,7 +216,7 @@ public class TestClusterStatusMonitorLifecycle extends ZkTestBase { // Filter other unrelated clusters' metrics final QueryExp exp1 = Query.match(Query.attr("SensorName"), Query.value("*" + _clusterNamePrefix + "*")); - Set<ObjectInstance> mbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() + final Set<ObjectInstance> mbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); _participants[0].disconnect(); @@ -218,17 +225,15 @@ public class TestClusterStatusMonitorLifecycle extends ZkTestBase { // No change in instance/resource mbean // Unregister 1 per-instance resource mbean and message queue mbean final int previousMBeanCount = mbeans.size(); - TestHelper.verify(new TestHelper.Verifier() { + Assert.assertTrue(TestHelper.verify(new TestHelper.Verifier() { @Override public boolean verify() throws Exception { Set<ObjectInstance> newMbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); + mbeans.clear(); + mbeans.addAll(newMbeans); return newMbeans.size() == (previousMBeanCount - 2); } - }, 4000); - - mbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() - .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); - Assert.assertEquals(mbeans.size(), previousMBeanCount - 2); + }, 10000)); HelixDataAccessor accessor = _participants[n - 1].getHelixDataAccessor(); String firstControllerName = @@ -245,17 +250,15 @@ public class TestClusterStatusMonitorLifecycle extends ZkTestBase { // 1 controller goes away // 1 message queue mbean, 1 PerInstanceResource mbean, and one message queue mbean final int previousMBeanCount2 = mbeans.size(); - TestHelper.verify(new TestHelper.Verifier() { + Assert.assertTrue(TestHelper.verify(new TestHelper.Verifier() { @Override public boolean verify() throws Exception { Set<ObjectInstance> newMbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); + mbeans.clear(); + mbeans.addAll(newMbeans); return newMbeans.size() == (previousMBeanCount2 - 3); } - }, 4000); - - mbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() - .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); - Assert.assertEquals(mbeans.size(), previousMBeanCount2 - 3); + }, 10000)); String instanceName = "localhost0_" + (12918 + 0); _participants[0] = new MockParticipantManager(ZK_ADDR, _firstClusterName, instanceName); @@ -265,17 +268,15 @@ public class TestClusterStatusMonitorLifecycle extends ZkTestBase { // No change in instance/resource mbean // Register 1 per-instance resource mbean and 1 message queue mbean final int previousMBeanCount3 = mbeans.size(); - TestHelper.verify(new TestHelper.Verifier() { + Assert.assertTrue(TestHelper.verify(new TestHelper.Verifier() { @Override public boolean verify() throws Exception { Set<ObjectInstance> newMbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); + mbeans.clear(); + mbeans.addAll(newMbeans); return newMbeans.size() == (previousMBeanCount3 + 2); } - }, 4000); - - mbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() - .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); - Assert.assertEquals(mbeans.size(), previousMBeanCount3 + 2); + }, 10000)); // Add a resource // Register 1 resource mbean @@ -290,17 +291,15 @@ public class TestClusterStatusMonitorLifecycle extends ZkTestBase { // Add one resource, PerInstanceResource mbeans and 1 resource monitor final int previousMBeanCount4 = mbeans.size(); - TestHelper.verify(new TestHelper.Verifier() { + Assert.assertTrue(TestHelper.verify(new TestHelper.Verifier() { @Override public boolean verify() throws Exception { Set<ObjectInstance> newMbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); + mbeans.clear(); + mbeans.addAll(newMbeans); return newMbeans.size() == (previousMBeanCount4 + _participants.length + 1); } - }, 4000); - - mbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() - .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); - Assert.assertEquals(mbeans.size(), previousMBeanCount4 + _participants.length + 1); + }, 10000)); // Remove a resource // No change in instance/resource mbean @@ -308,17 +307,15 @@ public class TestClusterStatusMonitorLifecycle extends ZkTestBase { setupTool.dropResourceFromCluster(_firstClusterName, "TestDB1"); final int previousMBeanCount5 = mbeans.size(); - TestHelper.verify(new TestHelper.Verifier() { + Assert.assertTrue(TestHelper.verify(new TestHelper.Verifier() { @Override public boolean verify() throws Exception { Set<ObjectInstance> newMbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); + mbeans.clear(); + mbeans.addAll(newMbeans); return newMbeans.size() == (previousMBeanCount5 - (_participants.length + 1)); } - }, 4000); - - mbeans = new HashSet<>(ManagementFactory.getPlatformMBeanServer() - .queryMBeans(new ObjectName("ClusterStatus:*"), exp1)); - Assert.assertEquals(mbeans.size(), previousMBeanCount5 - (_participants.length + 1)); + }, 10000)); // Cleanup controllers then MBeans should all be removed. cleanupControllers(); @@ -329,19 +326,11 @@ public class TestClusterStatusMonitorLifecycle extends ZkTestBase { Query.not(Query.match(Query.attr("SensorName"), Query.value("MessageQueueStatus.*"))), exp1); - TestHelper.verify(new TestHelper.Verifier() { + Assert.assertTrue(TestHelper.verify(new TestHelper.Verifier() { @Override public boolean verify() throws Exception { return ManagementFactory.getPlatformMBeanServer() .queryMBeans(new ObjectName("ClusterStatus:*"), exp2).isEmpty(); } - }, 4000); - - if (!ManagementFactory.getPlatformMBeanServer() - .queryMBeans(new ObjectName("ClusterStatus:*"), exp2).isEmpty()) { - System.out.println(ManagementFactory.getPlatformMBeanServer() - .queryMBeans(new ObjectName("ClusterStatus:*"), exp2)); - } - Assert.assertTrue(ManagementFactory.getPlatformMBeanServer() - .queryMBeans(new ObjectName("ClusterStatus:*"), exp2).isEmpty()); + }, 10000)); } }
