Refactor freeze mode naming and getStatus default value (#1818)

Rename CLUSTER_PAUSE with CLUSTER_FREEZE mode.
Change default return value for LiveInstance#getStatus(): null -> NORMAL. And fix tests accordingly.
diff --git a/helix-core/src/main/java/org/apache/helix/api/status/ClusterManagementMode.java b/helix-core/src/main/java/org/apache/helix/api/status/ClusterManagementMode.java
index 86817d1..a342a8c 100644
--- a/helix-core/src/main/java/org/apache/helix/api/status/ClusterManagementMode.java
+++ b/helix-core/src/main/java/org/apache/helix/api/status/ClusterManagementMode.java
@@ -33,10 +33,10 @@
         NORMAL,
 
         /**
-         * Puts a cluster into pause mode, which will pause controller and participants.
+         * Puts a cluster into freeze mode, which will freeze controller and participants.
          * This can be used to retain the cluster state.
          */
-        CLUSTER_PAUSE,
+        CLUSTER_FREEZE,
 
         /** Pause controller only, but not participants. */
         CONTROLLER_PAUSE,
@@ -88,7 +88,7 @@
      */
     public LiveInstance.LiveInstanceStatus getDesiredParticipantStatus() {
         switch (mode) {
-            case CLUSTER_PAUSE:
+            case CLUSTER_FREEZE:
                 return LiveInstance.LiveInstanceStatus.PAUSED;
             case NORMAL:
                 return LiveInstance.LiveInstanceStatus.NORMAL;
diff --git a/helix-core/src/main/java/org/apache/helix/controller/stages/ManagementMessageGenerationPhase.java b/helix-core/src/main/java/org/apache/helix/controller/stages/ManagementMessageGenerationPhase.java
index c795deb..4479d50 100644
--- a/helix-core/src/main/java/org/apache/helix/controller/stages/ManagementMessageGenerationPhase.java
+++ b/helix-core/src/main/java/org/apache/helix/controller/stages/ManagementMessageGenerationPhase.java
@@ -96,9 +96,7 @@
       LiveInstance liveInstance = liveInstanceMap.get(instanceName);
       Collection<Message> pendingMessages = allInstanceMessages.get(instanceName);
       String sessionId = liveInstance.getEphemeralOwner();
-      LiveInstanceStatus liveInstanceStatus = liveInstance.getStatus();
-      LiveInstanceStatus currentStatus = (liveInstanceStatus == null
-          ? LiveInstanceStatus.NORMAL : liveInstanceStatus);
+      LiveInstanceStatus currentStatus = liveInstance.getStatus();
 
       if (needStatusChangeMessage(pendingMessages, currentStatus, desiredStatus)) {
         Message statusChangeMessage = MessageUtil.createStatusChangeMessage(currentStatus,
diff --git a/helix-core/src/main/java/org/apache/helix/controller/stages/ManagementModeStage.java b/helix-core/src/main/java/org/apache/helix/controller/stages/ManagementModeStage.java
index b639685..55a320a 100644
--- a/helix-core/src/main/java/org/apache/helix/controller/stages/ManagementModeStage.java
+++ b/helix-core/src/main/java/org/apache/helix/controller/stages/ManagementModeStage.java
@@ -30,7 +30,6 @@
 import org.apache.helix.PropertyKey;
 import org.apache.helix.PropertyType;
 import org.apache.helix.api.status.ClusterManagementMode;
-import org.apache.helix.controller.LogUtil;
 import org.apache.helix.controller.dataproviders.ManagementControllerDataProvider;
 import org.apache.helix.controller.pipeline.AbstractBaseStage;
 import org.apache.helix.controller.pipeline.StageException;
@@ -40,7 +39,6 @@
 import org.apache.helix.model.LiveInstance.LiveInstanceStatus;
 import org.apache.helix.model.Message;
 import org.apache.helix.model.Message.MessageType;
-import org.apache.helix.model.Partition;
 import org.apache.helix.model.PauseSignal;
 import org.apache.helix.model.Resource;
 import org.apache.helix.util.HelixUtil;
@@ -104,7 +102,7 @@
         status = ClusterManagementMode.Status.IN_PROGRESS;
       }
     } else if (pauseSignal.isClusterPause()) {
-      type = ClusterManagementMode.Type.CLUSTER_PAUSE;
+      type = ClusterManagementMode.Type.CLUSTER_FREEZE;
       if (!instancesFullyFrozen(enabledLiveInstances, liveInstanceMap, allInstanceMessages)) {
         status = ClusterManagementMode.Status.IN_PROGRESS;
       }
@@ -144,9 +142,9 @@
 
     // If there is any pending message sent by users, status could be computed as in progress.
     // Skip recording status change to avoid confusion after cluster is already fully frozen.
-    if (ClusterManagementMode.Type.CLUSTER_PAUSE.equals(recordedType)
+    if (ClusterManagementMode.Type.CLUSTER_FREEZE.equals(recordedType)
         && ClusterManagementMode.Status.COMPLETED.equals(recordedStatus)
-        && ClusterManagementMode.Type.CLUSTER_PAUSE.equals(mode.getMode())
+        && ClusterManagementMode.Type.CLUSTER_FREEZE.equals(mode.getMode())
         && ClusterManagementMode.Status.IN_PROGRESS.equals(mode.getStatus())) {
       LOG.info("Skip recording status mode={}, status={}, because cluster is fully frozen",
           mode.getMode(), mode.getStatus());
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
index 73c699e..05bef08 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
@@ -509,7 +509,7 @@
 
     // TODO: support other modes
     switch (mode) {
-      case CLUSTER_PAUSE:
+      case CLUSTER_FREEZE:
         enableClusterPauseMode(clusterName, request.isCancelPendingST(), reason);
         break;
       case NORMAL:
diff --git a/helix-core/src/main/java/org/apache/helix/messaging/handling/HelixTaskExecutor.java b/helix-core/src/main/java/org/apache/helix/messaging/handling/HelixTaskExecutor.java
index ff970c2..11badac 100644
--- a/helix-core/src/main/java/org/apache/helix/messaging/handling/HelixTaskExecutor.java
+++ b/helix-core/src/main/java/org/apache/helix/messaging/handling/HelixTaskExecutor.java
@@ -187,6 +187,7 @@
     _timer = new Timer("HelixTaskExecutor_Timer", true);
 
     _isShuttingDown = false;
+    _liveInstanceStatus = LiveInstanceStatus.NORMAL;
 
     startMonitorThread();
   }
@@ -1370,7 +1371,7 @@
               manager.getStateMachineEngine(), false);
         }
         _freezeSessionId = null;
-        _liveInstanceStatus = null;
+        _liveInstanceStatus = toStatus;
         success = accessor.getBaseDataAccessor().update(path, record -> {
           // Remove the status field for backwards compatibility
           record.getSimpleFields().remove(LiveInstance.LiveInstanceProperty.STATUS.name());
diff --git a/helix-core/src/main/java/org/apache/helix/model/LiveInstance.java b/helix-core/src/main/java/org/apache/helix/model/LiveInstance.java
index fed2940..e711fea 100644
--- a/helix-core/src/main/java/org/apache/helix/model/LiveInstance.java
+++ b/helix-core/src/main/java/org/apache/helix/model/LiveInstance.java
@@ -142,10 +142,12 @@
   }
 
   /**
-   * Gets the live instance's status. Returns null if the status field is not set.
+   * Gets the live instance's status. Returns {@link LiveInstanceStatus#NORMAL} if the status
+   * field is not set.
    */
   public LiveInstanceStatus getStatus() {
-    return _record.getEnumField(LiveInstanceProperty.STATUS.name(), LiveInstanceStatus.class, null);
+    return _record.getEnumField(LiveInstanceProperty.STATUS.name(), LiveInstanceStatus.class,
+        LiveInstanceStatus.NORMAL);
   }
 
   /**
diff --git a/helix-core/src/test/java/org/apache/helix/controller/stages/TestManagementMessageGeneration.java b/helix-core/src/test/java/org/apache/helix/controller/stages/TestManagementMessageGeneration.java
index c16b503..7c20b02 100644
--- a/helix-core/src/test/java/org/apache/helix/controller/stages/TestManagementMessageGeneration.java
+++ b/helix-core/src/test/java/org/apache/helix/controller/stages/TestManagementMessageGeneration.java
@@ -128,7 +128,7 @@
         RebalanceUtil.buildBestPossibleState(resourceMap.keySet(), currentStateOutput);
 
     // Process the event
-    ClusterManagementMode mode = new ClusterManagementMode(ClusterManagementMode.Type.CLUSTER_PAUSE,
+    ClusterManagementMode mode = new ClusterManagementMode(ClusterManagementMode.Type.CLUSTER_FREEZE,
         ClusterManagementMode.Status.IN_PROGRESS);
     event.addAttribute(AttributeName.BEST_POSSIBLE_STATE.name(), bestPossibleStateOutput);
     event.addAttribute(AttributeName.CLUSTER_STATUS.name(), mode);
diff --git a/helix-core/src/test/java/org/apache/helix/controller/stages/TestManagementModeStage.java b/helix-core/src/test/java/org/apache/helix/controller/stages/TestManagementModeStage.java
index 2737bf7..1be5c6b 100644
--- a/helix-core/src/test/java/org/apache/helix/controller/stages/TestManagementModeStage.java
+++ b/helix-core/src/test/java/org/apache/helix/controller/stages/TestManagementModeStage.java
@@ -76,7 +76,7 @@
     // Freeze cluster
     ClusterManagementModeRequest request = ClusterManagementModeRequest.newBuilder()
         .withClusterName(_clusterName)
-        .withMode(ClusterManagementMode.Type.CLUSTER_PAUSE)
+        .withMode(ClusterManagementMode.Type.CLUSTER_FREEZE)
         .withReason("test")
         .build();
     _gSetupTool.getClusterManagementTool().setClusterManagementMode(request);
@@ -91,7 +91,7 @@
 
     // In frozen mode
     ClusterStatus clusterStatus = _accessor.getProperty(_accessor.keyBuilder().clusterStatus());
-    Assert.assertEquals(clusterStatus.getManagementMode(), ClusterManagementMode.Type.CLUSTER_PAUSE);
+    Assert.assertEquals(clusterStatus.getManagementMode(), ClusterManagementMode.Type.CLUSTER_FREEZE);
 
 
     // Mark a live instance to be pause state
diff --git a/helix-core/src/test/java/org/apache/helix/integration/controller/TestClusterFreezeMode.java b/helix-core/src/test/java/org/apache/helix/integration/controller/TestClusterFreezeMode.java
index cbc8535..afaea91 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/controller/TestClusterFreezeMode.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/controller/TestClusterFreezeMode.java
@@ -153,7 +153,7 @@
     // Freeze cluster
     ClusterManagementModeRequest request = ClusterManagementModeRequest.newBuilder()
         .withClusterName(_clusterName)
-        .withMode(ClusterManagementMode.Type.CLUSTER_PAUSE)
+        .withMode(ClusterManagementMode.Type.CLUSTER_FREEZE)
         .withReason(methodName)
         .build();
     _gSetupTool.getClusterManagementTool().setClusterManagementMode(request);
@@ -164,7 +164,7 @@
 
     // Cluster is in progress to cluster pause because there is a pending state transition message
     ClusterStatus expectedClusterStatus = new ClusterStatus();
-    expectedClusterStatus.setManagementMode(ClusterManagementMode.Type.CLUSTER_PAUSE);
+    expectedClusterStatus.setManagementMode(ClusterManagementMode.Type.CLUSTER_FREEZE);
     expectedClusterStatus.setManagementModeStatus(ClusterManagementMode.Status.IN_PROGRESS);
     verifyClusterStatus(expectedClusterStatus);
 
@@ -175,7 +175,7 @@
     verifyLiveInstanceStatus(_participants, LiveInstance.LiveInstanceStatus.PAUSED);
 
     expectedClusterStatus = new ClusterStatus();
-    expectedClusterStatus.setManagementMode(ClusterManagementMode.Type.CLUSTER_PAUSE);
+    expectedClusterStatus.setManagementMode(ClusterManagementMode.Type.CLUSTER_FREEZE);
     expectedClusterStatus.setManagementModeStatus(ClusterManagementMode.Status.COMPLETED);
     verifyClusterStatus(expectedClusterStatus);
 
@@ -187,7 +187,7 @@
         return false;
       }
       String lastHistory = managementHistory.get(managementHistory.size() - 1);
-      return lastHistory.contains("MODE=" + ClusterManagementMode.Type.CLUSTER_PAUSE)
+      return lastHistory.contains("MODE=" + ClusterManagementMode.Type.CLUSTER_FREEZE)
           && lastHistory.contains("STATUS=" + ClusterManagementMode.Status.COMPLETED)
           && lastHistory.contains("REASON=" + methodName);
     }, TestHelper.WAIT_DURATION));
@@ -303,7 +303,7 @@
         .build();
     _gSetupTool.getClusterManagementTool().setClusterManagementMode(request);
 
-    verifyLiveInstanceStatus(_participants, null);
+    verifyLiveInstanceStatus(_participants, LiveInstance.LiveInstanceStatus.NORMAL);
 
     ClusterStatus expectedClusterStatus = new ClusterStatus();
     expectedClusterStatus.setManagementMode(ClusterManagementMode.Type.NORMAL);
diff --git a/helix-core/src/test/java/org/apache/helix/integration/paticipant/TestParticipantFreeze.java b/helix-core/src/test/java/org/apache/helix/integration/paticipant/TestParticipantFreeze.java
index fedee37..1eb760e 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/paticipant/TestParticipantFreeze.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/paticipant/TestParticipantFreeze.java
@@ -117,7 +117,9 @@
   @Test
   public void testNormalLiveInstanceStatus() {
     LiveInstance liveInstance = _accessor.getProperty(_keyBuilder.liveInstance(_instanceName));
-    Assert.assertNull(liveInstance.getStatus());
+    Assert.assertEquals(liveInstance.getStatus(), LiveInstance.LiveInstanceStatus.NORMAL);
+    Assert.assertNull(
+        liveInstance.getRecord().getSimpleField(LiveInstance.LiveInstanceProperty.STATUS.name()));
   }
 
   @Test(dependsOnMethods = "testNormalLiveInstanceStatus")
@@ -151,7 +153,7 @@
     // New live instance ephemeral node
     Assert.assertEquals(liveInstance.getEphemeralOwner(), _participants[1].getSessionId());
     // Status is not frozen because controller is not running, no freeze message sent.
-    verifyLiveInstanceStatus(_participants[1], null);
+    verifyLiveInstanceStatus(_participants[1], LiveInstance.LiveInstanceStatus.NORMAL);
 
     // Old session current state is deleted because of current state carry-over
     Assert.assertTrue(TestHelper.verify(
@@ -221,7 +223,7 @@
 
     // Live instance status is NORMAL, but set to null value in both memory and zk.
     // After live instance status is updated, the process is completed.
-    verifyLiveInstanceStatus(_participants[0], null);
+    verifyLiveInstanceStatus(_participants[0], LiveInstance.LiveInstanceStatus.NORMAL);
     // Unfreeze message is correctly deleted
     Assert.assertNull(
         _accessor.getProperty(_keyBuilder.message(_instanceName, unfreezeMessage.getId())));
@@ -242,7 +244,7 @@
 
   private void verifyLiveInstanceStatus(MockParticipantManager participant,
       LiveInstance.LiveInstanceStatus status) throws Exception {
-    // Live instance status is frozen in both memory and zk
+    // Verify live instance status in both memory and zk
     Assert.assertTrue(TestHelper.verify(() -> {
       LiveInstance.LiveInstanceStatus inMemoryLiveInstanceStatus =
           ((DefaultMessagingService) participant.getMessagingService()).getExecutor()
@@ -285,7 +287,8 @@
     // Live instance status is frozen in both memory and zk
     verifyLiveInstanceStatus(participant, LiveInstance.LiveInstanceStatus.PAUSED);
     // Freeze message is correctly deleted
-    Assert.assertNull(_accessor
-        .getProperty(_keyBuilder.message(participant.getInstanceName(), freezeMessage.getId())));
+    Assert.assertTrue(TestHelper.verify(() -> !_gZkClient.exists(
+        _keyBuilder.message(participant.getInstanceName(), freezeMessage.getId()).getPath()),
+        TestHelper.WAIT_DURATION));
   }
 }
diff --git a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java
index 7ddf677..968a5d4 100644
--- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java
+++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java
@@ -1087,7 +1087,7 @@
       try {
         ClusterManagementModeRequest request = ClusterManagementModeRequest.newBuilder()
             .withClusterName(clusterName)
-            .withMode(ClusterManagementMode.Type.CLUSTER_PAUSE)
+            .withMode(ClusterManagementMode.Type.CLUSTER_FREEZE)
             .withCancelPendingST(true)
             .withReason(methodName)
             .build();
@@ -1100,7 +1100,7 @@
 
       ClusterManagementModeRequest request = ClusterManagementModeRequest.newBuilder()
           .withClusterName(clusterName)
-          .withMode(ClusterManagementMode.Type.CLUSTER_PAUSE)
+          .withMode(ClusterManagementMode.Type.CLUSTER_FREEZE)
           .withReason(methodName)
           .build();
       _gSetupTool.getClusterManagementTool().setClusterManagementMode(request);
diff --git a/helix-core/src/test/java/org/apache/helix/model/TestControllerHistoryModel.java b/helix-core/src/test/java/org/apache/helix/model/TestControllerHistoryModel.java
index 2e0bab3..d77287a 100644
--- a/helix-core/src/test/java/org/apache/helix/model/TestControllerHistoryModel.java
+++ b/helix-core/src/test/java/org/apache/helix/model/TestControllerHistoryModel.java
@@ -37,7 +37,7 @@
   public void testManagementModeHistory() {
     ControllerHistory controllerHistory = new ControllerHistory("HISTORY");
     String controller = "controller-0";
-    ClusterManagementMode mode = new ClusterManagementMode(ClusterManagementMode.Type.CLUSTER_PAUSE,
+    ClusterManagementMode mode = new ClusterManagementMode(ClusterManagementMode.Type.CLUSTER_FREEZE,
         ClusterManagementMode.Status.COMPLETED);
     long time = System.currentTimeMillis();
     String fromHost = NetworkUtil.getLocalhostName();
diff --git a/helix-core/src/test/java/org/apache/helix/model/TestLiveInstance.java b/helix-core/src/test/java/org/apache/helix/model/TestLiveInstance.java
index 18285f5..b8024bb 100644
--- a/helix-core/src/test/java/org/apache/helix/model/TestLiveInstance.java
+++ b/helix-core/src/test/java/org/apache/helix/model/TestLiveInstance.java
@@ -150,7 +150,9 @@
   @Test
   public void testLiveInstanceStatus() {
     LiveInstance testLiveInstance = new LiveInstance("testLiveInstanceStatus");
-    Assert.assertNull(testLiveInstance.getStatus());
+    Assert.assertNull(testLiveInstance.getRecord()
+        .getSimpleField(LiveInstance.LiveInstanceProperty.STATUS.name()));
+    Assert.assertEquals(testLiveInstance.getStatus(), LiveInstance.LiveInstanceStatus.NORMAL);
     testLiveInstance.setStatus(LiveInstance.LiveInstanceStatus.PAUSED);
     Assert.assertEquals(testLiveInstance.getStatus(), LiveInstance.LiveInstanceStatus.PAUSED);
   }
diff --git a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/ClusterAccessor.java b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/ClusterAccessor.java
index 9efcdc7..552a530 100644
--- a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/ClusterAccessor.java
+++ b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/ClusterAccessor.java
@@ -344,7 +344,7 @@
       List<LiveInstance> liveInstances = accessor.getChildValues(keyBuilder.liveInstances());
       BaseDataAccessor<ZNRecord> baseAccessor = accessor.getBaseDataAccessor();
 
-      if (ClusterManagementMode.Type.CLUSTER_PAUSE.equals(mode.getMode())) {
+      if (ClusterManagementMode.Type.CLUSTER_FREEZE.equals(mode.getMode())) {
         // Entering cluster freeze mode, check live instance freeze status and pending ST
         for (LiveInstance liveInstance : liveInstances) {
           String instanceName = liveInstance.getInstanceName();
@@ -370,7 +370,7 @@
 
     participantDetails.put("status", status.name());
     participantDetails.put("liveInstancesInProgress", liveInstancesInProgress);
-    if (ClusterManagementMode.Type.CLUSTER_PAUSE.equals(mode.getMode())) {
+    if (ClusterManagementMode.Type.CLUSTER_FREEZE.equals(mode.getMode())) {
       // Add pending ST result for cluster freeze mode
       participantDetails.put("hasPendingStateTransition", hasPendingST);
     }
diff --git a/helix-rest/src/test/java/org/apache/helix/rest/server/TestClusterAccessor.java b/helix-rest/src/test/java/org/apache/helix/rest/server/TestClusterAccessor.java
index 8d2de70..8b8f38a 100644
--- a/helix-rest/src/test/java/org/apache/helix/rest/server/TestClusterAccessor.java
+++ b/helix-rest/src/test/java/org/apache/helix/rest/server/TestClusterAccessor.java
@@ -1302,7 +1302,7 @@
 
     // Set cluster pause mode
     ClusterManagementModeRequest request = ClusterManagementModeRequest.newBuilder()
-        .withMode(ClusterManagementMode.Type.CLUSTER_PAUSE)
+        .withMode(ClusterManagementMode.Type.CLUSTER_FREEZE)
         .withClusterName(cluster)
         .build();
     String payload = OBJECT_MAPPER.writeValueAsString(request);
@@ -1321,22 +1321,23 @@
 
     // Verify get cluster status
     String body = get(endpoint, null, Response.Status.OK.getStatusCode(), true);
-    ClusterManagementMode mode =
-        OBJECT_MAPPER.readerFor(ClusterManagementMode.class).readValue(body);
-    Assert.assertEquals(mode.getMode(), ClusterManagementMode.Type.CLUSTER_PAUSE);
+    Map<String, Object> responseMap = OBJECT_MAPPER.readerFor(Map.class).readValue(body);
+    Assert.assertEquals(responseMap.get("mode"), ClusterManagementMode.Type.CLUSTER_FREEZE.name());
     // Depending on timing, it could IN_PROGRESS or COMPLETED.
     // It's just to verify the rest response format is correct
-    Assert.assertTrue(ClusterManagementMode.Status.IN_PROGRESS.equals(mode.getStatus())
-        || ClusterManagementMode.Status.COMPLETED.equals(mode.getStatus()));
+    String status = (String) responseMap.get("status");
+    Assert.assertTrue(ClusterManagementMode.Status.IN_PROGRESS.name().equals(status)
+        || ClusterManagementMode.Status.COMPLETED.name().equals(status));
 
     body = get(endpoint, ImmutableMap.of("showDetails", "true"), Response.Status.OK.getStatusCode(),
         true);
-    Map<String, Object> responseMap = OBJECT_MAPPER.readerFor(Map.class).readValue(body);
+    responseMap = OBJECT_MAPPER.readerFor(Map.class).readValue(body);
     Map<String, Object> detailsMap = (Map<String, Object>) responseMap.get("details");
+    status = (String) responseMap.get("status");
 
     Assert.assertEquals(responseMap.get("cluster"), cluster);
-    Assert.assertEquals(responseMap.get("mode"), mode.getMode().name());
-    Assert.assertEquals(responseMap.get("status"), mode.getStatus().name());
+    Assert.assertEquals(responseMap.get("mode"), ClusterManagementMode.Type.CLUSTER_FREEZE.name());
+    Assert.assertEquals(responseMap.get("status"), status);
     Assert.assertTrue(responseMap.containsKey("details"));
     Assert.assertTrue(detailsMap.containsKey("cluster"));
     Assert.assertTrue(detailsMap.containsKey("liveInstances"));