Repository: helix
Updated Branches:
  refs/heads/helix-0.6.2-release 7e48570a2 -> c7b54e26b


[HELIX-378] Add instance gauges to ClusterStatusMonitor, fix test failure


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

Branch: refs/heads/helix-0.6.2-release
Commit: c7b54e26bd1ed4341a95009b7e7ceef08fca6778
Parents: 7e48570
Author: Kanak Biscuitwala <[email protected]>
Authored: Wed Feb 19 13:34:44 2014 -0800
Committer: Kanak Biscuitwala <[email protected]>
Committed: Wed Feb 19 13:34:44 2014 -0800

----------------------------------------------------------------------
 .../controller/stages/ReadClusterDataStage.java |  7 +-
 .../TestClusterStatusMonitorLifecycle.java      | 99 ++++++++++----------
 2 files changed, 56 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/helix/blob/c7b54e26/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java
----------------------------------------------------------------------
diff --git 
a/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java
 
b/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java
index 3633e5e..abce878 100644
--- 
a/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java
+++ 
b/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java
@@ -19,6 +19,8 @@ package org.apache.helix.controller.stages;
  * under the License.
  */
 
+import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -78,7 +80,10 @@ public class ReadClusterDataStage extends AbstractBaseStage {
         if (!config.getInstanceEnabled()) {
           disabledInstanceSet.add(instanceName);
         }
-        Set<String> partitionNames = 
Sets.newHashSet(config.getDisabledPartitions());
+        List<String> disabledPartitionsList = config.getDisabledPartitions();
+        Set<String> partitionNames =
+            disabledPartitionsList != null ? new 
HashSet<String>(config.getDisabledPartitions())
+                : new HashSet<String>();
         disabledPartitions.put(instanceName, partitionNames);
         Set<String> instanceTags = Sets.newHashSet(config.getTags());
         tags.put(instanceName, instanceTags);

http://git-wip-us.apache.org/repos/asf/helix/blob/c7b54e26/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 65d60fb..45bc709 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
@@ -10,7 +10,6 @@ import javax.management.MalformedObjectNameException;
 
 import org.apache.helix.HelixDataAccessor;
 import org.apache.helix.TestHelper;
-import org.apache.helix.integration.TestDistributedCMMain;
 import org.apache.helix.integration.ZkIntegrationTestBase;
 import org.apache.helix.integration.manager.ClusterDistributedController;
 import org.apache.helix.integration.manager.MockParticipantManager;
@@ -24,25 +23,25 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase{
+public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase {
 
   MockParticipantManager[] _participants;
   ClusterDistributedController[] _controllers;
   String _controllerClusterName;
   String _clusterNamePrefix;
   String _firstClusterName;
-  
+
   final int n = 5;
   final int clusterNb = 10;
-    
+
   @BeforeClass
   public void beforeClass() throws Exception {
     String className = TestHelper.getTestClassName();
     String methodName = TestHelper.getTestMethodName();
     _clusterNamePrefix = className + "_" + methodName;
 
-    System.out
-        .println("START " + _clusterNamePrefix + " at " + new 
Date(System.currentTimeMillis()));
+    System.out.println("START " + _clusterNamePrefix + " at "
+        + new Date(System.currentTimeMillis()));
 
     // setup 10 clusters
     for (int i = 0; i < clusterNb; i++) {
@@ -62,7 +61,7 @@ public class TestClusterStatusMonitorLifecycle extends 
ZkIntegrationTestBase{
     // setup controller cluster
     _controllerClusterName = "CONTROLLER_" + _clusterNamePrefix;
     TestHelper.setupCluster("CONTROLLER_" + _clusterNamePrefix, ZK_ADDR, 0, // 
controller
-                                                                           // 
port
+                                                                            // 
port
         "controller", // participant name prefix
         _clusterNamePrefix, // resource name prefix
         1, // resources
@@ -125,9 +124,9 @@ public class TestClusterStatusMonitorLifecycle extends 
ZkIntegrationTestBase{
             _firstClusterName));
     Assert.assertTrue(result, "first cluster NOT in ideal state");
   }
-  
+
   @AfterClass
-  public void afterClass(){
+  public void afterClass() {
     System.out.println("Cleaning up...");
     for (int i = 0; i < 5; i++) {
       boolean result =
@@ -144,13 +143,13 @@ public class TestClusterStatusMonitorLifecycle extends 
ZkIntegrationTestBase{
     System.out.println("END " + _clusterNamePrefix + " at " + new 
Date(System.currentTimeMillis()));
 
   }
-  
+
   class ParticipantMonitorListener extends ClusterMBeanObserver {
-    
+
     int _nMbeansUnregistered = 0;
     int _nMbeansRegistered = 0;
-    public ParticipantMonitorListener(String domain)
-        throws InstanceNotFoundException, IOException,
+
+    public ParticipantMonitorListener(String domain) throws 
InstanceNotFoundException, IOException,
         MalformedObjectNameException, NullPointerException {
       super(domain);
     }
@@ -158,73 +157,75 @@ public class TestClusterStatusMonitorLifecycle extends 
ZkIntegrationTestBase{
     @Override
     public void onMBeanRegistered(MBeanServerConnection server,
         MBeanServerNotification mbsNotification) {
-      _nMbeansRegistered ++;
+      _nMbeansRegistered++;
     }
 
     @Override
     public void onMBeanUnRegistered(MBeanServerConnection server,
         MBeanServerNotification mbsNotification) {
       _nMbeansUnregistered++;
-    }}
-  
+    }
+  }
+
   @Test
-  public void testClusterStatusMonitorLifecycle() throws 
InstanceNotFoundException, MalformedObjectNameException, NullPointerException, 
IOException, InterruptedException{
+  public void testClusterStatusMonitorLifecycle() throws 
InstanceNotFoundException,
+      MalformedObjectNameException, NullPointerException, IOException, 
InterruptedException {
     ParticipantMonitorListener listener = new 
ParticipantMonitorListener("ClusterStatus");
-    
+
     int nMbeansUnregistered = listener._nMbeansUnregistered;
     int nMbeansRegistered = listener._nMbeansRegistered;
-    
+
     _participants[0].disconnect();
 
-    // participant goes away. should be no change
+    // participant goes away. should be no change in number of beans as config 
is still present
     Thread.sleep(1000);
     Assert.assertTrue(nMbeansUnregistered == listener._nMbeansUnregistered);
     Assert.assertTrue(nMbeansRegistered == listener._nMbeansRegistered);
-    
-    HelixDataAccessor accessor = _participants[n-1].getHelixDataAccessor();
-    String firstControllerName = 
accessor.getProperty(accessor.keyBuilder().controllerLeader()).getId();
-    
+
+    HelixDataAccessor accessor = _participants[n - 1].getHelixDataAccessor();
+    String firstControllerName =
+        accessor.getProperty(accessor.keyBuilder().controllerLeader()).getId();
+
     ClusterDistributedController firstController = null;
-    for(ClusterDistributedController controller : _controllers)
-    {
-      if(controller.getInstanceName().equals(firstControllerName))
-      {
+    for (ClusterDistributedController controller : _controllers) {
+      if (controller.getInstanceName().equals(firstControllerName)) {
         firstController = controller;
       }
     }
     firstController.disconnect();
     Thread.sleep(1000);
-    
-    // 1 cluster status monitor and 1 resource monitor
-    Assert.assertTrue(nMbeansUnregistered == listener._nMbeansUnregistered - 
2);
-    Assert.assertTrue(nMbeansRegistered == listener._nMbeansRegistered - 2);
-    
+
+    // 1 cluster status monitor, 1 resource monitor, 5 instances
+    Assert.assertTrue(nMbeansUnregistered == listener._nMbeansUnregistered - 
7);
+    Assert.assertTrue(nMbeansRegistered == listener._nMbeansRegistered - 7);
+
     String instanceName = "localhost0_" + (12918 + 0);
     _participants[0] = new MockParticipantManager(ZK_ADDR, _firstClusterName, 
instanceName);
     _participants[0].syncStart();
-    
+
     // participant goes back. should be no change
     Thread.sleep(1000);
-    Assert.assertTrue(nMbeansUnregistered == listener._nMbeansUnregistered - 
2);
-    Assert.assertTrue(nMbeansRegistered == listener._nMbeansRegistered - 2);
-    
+    Assert.assertTrue(nMbeansUnregistered == listener._nMbeansUnregistered - 
7);
+    Assert.assertTrue(nMbeansRegistered == listener._nMbeansRegistered - 7);
+
     // Add a resource, one more mbean registered
     ClusterSetup setupTool = new ClusterSetup(ZK_ADDR);
     IdealState idealState = 
accessor.getProperty(accessor.keyBuilder().idealStates("TestDB00"));
-    
-    setupTool.addResourceToCluster(_firstClusterName, "TestDB1", 
idealState.getNumPartitions(), "MasterSlave");
-    setupTool.rebalanceResource(_firstClusterName, "TestDB1", 
Integer.parseInt(idealState.getReplicas()));
-    
+
+    setupTool.addResourceToCluster(_firstClusterName, "TestDB1", 
idealState.getNumPartitions(),
+        "MasterSlave");
+    setupTool.rebalanceResource(_firstClusterName, "TestDB1",
+        Integer.parseInt(idealState.getReplicas()));
+
     Thread.sleep(1000);
-    Assert.assertTrue(nMbeansUnregistered == listener._nMbeansUnregistered - 
2);
-    Assert.assertTrue(nMbeansRegistered == listener._nMbeansRegistered - 3);
-    
+    Assert.assertTrue(nMbeansUnregistered == listener._nMbeansUnregistered - 
7);
+    Assert.assertTrue(nMbeansRegistered == listener._nMbeansRegistered - 8);
+
     // remove resource, no change
     setupTool.dropResourceFromCluster(_firstClusterName, "TestDB1");
     Thread.sleep(1000);
-    Assert.assertTrue(nMbeansUnregistered == listener._nMbeansUnregistered - 
2);
-    Assert.assertTrue(nMbeansRegistered == listener._nMbeansRegistered - 3);
-    
-    
+    Assert.assertTrue(nMbeansUnregistered == listener._nMbeansUnregistered - 
7);
+    Assert.assertTrue(nMbeansRegistered == listener._nMbeansRegistered - 8);
+
   }
-}
\ No newline at end of file
+}

Reply via email to