helix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject [helix] branch customizeView updated: Add REST API to add, remove and update CustomizedStateAggregationConfig (#797)
Date Tue, 25 Feb 2020 22:05:20 GMT
This is an automated email from the ASF dual-hosted git repository.

jxue pushed a commit to branch customizeView
in repository https://gitbox.apache.org/repos/asf/helix.git


The following commit(s) were added to refs/heads/customizeView by this push:
     new bdd66cc  Add REST API to add, remove and update CustomizedStateAggregationConfig
(#797)
bdd66cc is described below

commit bdd66cc0b82f5e917602c94a487c65a4a7db7eab
Author: Ali Reza Zamani Zadeh Najari <anajari@linkedin.com>
AuthorDate: Tue Feb 25 14:05:10 2020 -0800

    Add REST API to add, remove and update CustomizedStateAggregationConfig (#797)
    
    In this commit the below REST APIs have been added.
    1- addCustomizedStateAggregationConfig
    2- removeCustomizedStateAggregationConfig
    3- getCustomizedStateAggregationConfig
    4- updateCustomizedStateAggregationConfig
    Tests have been added to check the functionality of these REST APIs.
    Also some of the depricated calls have been updated.
---
 .../apache/helix/manager/zk/TestZkHelixAdmin.java  |  12 +-
 .../TestCustomizedStateAggregationConfig.java      |  12 +-
 .../rest/server/resources/AbstractResource.java    |   1 +
 .../server/resources/helix/ClusterAccessor.java    | 109 +++++++++++++++
 .../helix/rest/server/TestClusterAccessor.java     | 148 +++++++++++++++++++++
 5 files changed, 270 insertions(+), 12 deletions(-)

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 df9336c..10f5d72 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
@@ -515,7 +515,7 @@ public class TestZkHelixAdmin extends ZkUnitTestBase {
     String methodName = TestHelper.getTestMethodName();
     String clusterName = className + "_" + methodName;
 
-    HelixAdmin admin = new ZKHelixAdmin(_gZkClient);
+    HelixAdmin admin = new ZKHelixAdmin(ZK_ADDR);
     admin.addCluster(clusterName, true);
     CustomizedStateAggregationConfig.Builder builder =
         new CustomizedStateAggregationConfig.Builder();
@@ -525,7 +525,7 @@ public class TestZkHelixAdmin extends ZkUnitTestBase {
     admin.addCustomizedStateAggregationConfig(clusterName, customizedStateAggregationConfig);
 
     // Read CustomizedStateAggregationConfig from Zookeeper and check the content
-    ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
     CustomizedStateAggregationConfig configFromZk =
         _configAccessor.getCustomizedStateAggregationConfig(clusterName);
     List<String> listTypesFromZk = configFromZk.getAggregationEnabledTypes();
@@ -538,7 +538,7 @@ public class TestZkHelixAdmin extends ZkUnitTestBase {
     String methodName = TestHelper.getTestMethodName();
     String clusterName = className + "_" + methodName;
 
-    HelixAdmin admin = new ZKHelixAdmin(_gZkClient);
+    HelixAdmin admin = new ZKHelixAdmin(ZK_ADDR);
     admin.addCluster(clusterName, true);
     CustomizedStateAggregationConfig.Builder builder =
         new CustomizedStateAggregationConfig.Builder();
@@ -548,7 +548,7 @@ public class TestZkHelixAdmin extends ZkUnitTestBase {
     admin.addCustomizedStateAggregationConfig(clusterName, customizedStateAggregationConfig);
 
     // Read CustomizedStateAggregationConfig from Zookeeper and check the content
-    ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
     CustomizedStateAggregationConfig configFromZk =
         _configAccessor.getCustomizedStateAggregationConfig(clusterName);
     List<String> listTypesFromZk = configFromZk.getAggregationEnabledTypes();
@@ -567,7 +567,7 @@ public class TestZkHelixAdmin extends ZkUnitTestBase {
     String methodName = TestHelper.getTestMethodName();
     String clusterName = className + "_" + methodName;
 
-    HelixAdmin admin = new ZKHelixAdmin(_gZkClient);
+    HelixAdmin admin = new ZKHelixAdmin(ZK_ADDR);
     admin.addCluster(clusterName, true);
     CustomizedStateAggregationConfig.Builder builder =
         new CustomizedStateAggregationConfig.Builder();
@@ -577,7 +577,7 @@ public class TestZkHelixAdmin extends ZkUnitTestBase {
     admin.addCustomizedStateAggregationConfig(clusterName, customizedStateAggregationConfig);
 
     // Read CustomizedStateAggregationConfig from Zookeeper and check the content
-    ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
     CustomizedStateAggregationConfig configFromZk =
         _configAccessor.getCustomizedStateAggregationConfig(clusterName);
     List<String> listTypesFromZk = configFromZk.getAggregationEnabledTypes();
diff --git a/helix-core/src/test/java/org/apache/helix/model/TestCustomizedStateAggregationConfig.java
b/helix-core/src/test/java/org/apache/helix/model/TestCustomizedStateAggregationConfig.java
index 2b9752a..bda6a50 100644
--- a/helix-core/src/test/java/org/apache/helix/model/TestCustomizedStateAggregationConfig.java
+++ b/helix-core/src/test/java/org/apache/helix/model/TestCustomizedStateAggregationConfig.java
@@ -38,7 +38,7 @@ public class TestCustomizedStateAggregationConfig extends ZkUnitTestBase
{
     String className = getShortClassName();
     String clusterName = "CLUSTER_" + className;
     // Read CustomizedStateAggregationConfig from Zookeeper and get exception since cluster
in not setup yet
-    ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
     CustomizedStateAggregationConfig customizedStateAggregationConfig =
         _configAccessor.getCustomizedStateAggregationConfig(clusterName);
   }
@@ -49,7 +49,7 @@ public class TestCustomizedStateAggregationConfig extends ZkUnitTestBase
{
     String clusterName = "CLUSTER_" + className;
     TestHelper.setupEmptyCluster(_gZkClient, clusterName);
     // Read CustomizedStateAggregationConfig from Zookeeper
-    ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
     CustomizedStateAggregationConfig customizedStateAggregationConfigFromZk =
         _configAccessor.getCustomizedStateAggregationConfig(clusterName);
     Assert.assertNull(customizedStateAggregationConfigFromZk);
@@ -73,13 +73,13 @@ public class TestCustomizedStateAggregationConfig extends ZkUnitTestBase
{
 
     // Write the CustomizedStateAggregationConfig to Zookeeper
     ZKHelixDataAccessor accessor =
-        new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_gZkClient));
+        new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(ZK_ADDR));
     Builder keyBuilder = accessor.keyBuilder();
     accessor.setProperty(keyBuilder.customizedStateAggregationConfig(),
         customizedStateAggregationConfig);
 
     // Read CustomizedStateAggregationConfig from Zookeeper and check the content
-    ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
     CustomizedStateAggregationConfig customizedStateAggregationConfigFromZk =
         _configAccessor.getCustomizedStateAggregationConfig(clusterName);
     Assert.assertEquals(customizedStateAggregationConfigFromZk.getAggregationEnabledTypes().size(),
@@ -107,13 +107,13 @@ public class TestCustomizedStateAggregationConfig extends ZkUnitTestBase
{
     CustomizedStateAggregationConfig customizedStateAggregationConfig = builder.build();
 
     ZKHelixDataAccessor accessor =
-        new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_gZkClient));
+        new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(ZK_ADDR));
     Builder keyBuilder = accessor.keyBuilder();
     accessor.setProperty(keyBuilder.customizedStateAggregationConfig(),
         customizedStateAggregationConfig);
 
     // Read CustomizedStateAggregationConfig from Zookeeper and check the content
-    ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
     CustomizedStateAggregationConfig customizedStateAggregationConfigFromZk =
         _configAccessor.getCustomizedStateAggregationConfig(clusterName);
     List<String> aggregationEnabledTypesFromZk =
diff --git a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/AbstractResource.java
b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/AbstractResource.java
index 78bfd77..4fddf33 100644
--- a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/AbstractResource.java
+++ b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/AbstractResource.java
@@ -62,6 +62,7 @@ public class AbstractResource {
     enablePartitions,
     disablePartitions,
     update,
+    add,
     delete,
     stoppable,
     rebalance,
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 e4f0358..965b3a4 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
@@ -49,6 +49,7 @@ import org.apache.helix.manager.zk.ZKUtil;
 import org.apache.helix.manager.zk.client.HelixZkClient;
 import org.apache.helix.model.ClusterConfig;
 import org.apache.helix.model.ControllerHistory;
+import org.apache.helix.model.CustomizedStateAggregationConfig;
 import org.apache.helix.model.HelixConfigScope;
 import org.apache.helix.model.LiveInstance;
 import org.apache.helix.model.MaintenanceSignal;
@@ -267,6 +268,114 @@ public class ClusterAccessor extends AbstractHelixResource {
     return JSONRepresentation(config.getRecord());
   }
 
+
+  @PUT
+  @Path("{clusterId}/customized-state-aggregation-config")
+  public Response addCustomizedStateAggregationConfig(@PathParam("clusterId") String clusterId,
+      String content) {
+    if (!doesClusterExist(clusterId)) {
+      return notFound(String.format("Cluster %s does not exist", clusterId));
+    }
+
+    HelixAdmin admin = getHelixAdmin();
+    ZNRecord record;
+    try {
+      record = toZNRecord(content);
+    } catch (IOException e) {
+      return badRequest("Input is not a vaild ZNRecord!");
+    }
+
+    try {
+      CustomizedStateAggregationConfig customizedStateAggregationConfig =
+          new CustomizedStateAggregationConfig.Builder(record).build();
+      admin.addCustomizedStateAggregationConfig(clusterId, customizedStateAggregationConfig);
+    } catch (Exception ex) {
+      _logger.error("Cannot add CustomizedStateAggregationConfig to cluster: {} Exception:
{}",
+          clusterId, ex);
+      return serverError(ex);
+    }
+
+    return OK();
+  }
+
+  @DELETE
+  @Path("{clusterId}/customized-state-aggregation-config")
+  public Response removeCustomizedStateAggregationConfig(@PathParam("clusterId") String clusterId)
{
+    if (!doesClusterExist(clusterId)) {
+      return notFound(String.format("Cluster %s does not exist", clusterId));
+    }
+
+    HelixAdmin admin = getHelixAdmin();
+    try {
+      admin.removeCustomizedStateAggregationConfig(clusterId);
+    } catch (Exception ex) {
+      _logger.error(
+          "Cannot remove CustomizedStateAggregationConfig from cluster: {}, Exception: {}",
+          clusterId, ex);
+      return serverError(ex);
+    }
+
+    return OK();
+  }
+
+  @GET
+  @Path("{clusterId}/customized-state-aggregation-config")
+  public Response getCustomizedStateAggregationConfig(@PathParam("clusterId") String clusterId)
{
+    if (!doesClusterExist(clusterId)) {
+      return notFound(String.format("Cluster %s does not exist", clusterId));
+    }
+
+    ConfigAccessor configAccessor = getConfigAccessor();
+    CustomizedStateAggregationConfig customizedStateAggregationConfig =
+        configAccessor.getCustomizedStateAggregationConfig(clusterId);
+
+    if (customizedStateAggregationConfig != null) {
+      return JSONRepresentation(customizedStateAggregationConfig.getRecord());
+    }
+
+    return notFound();
+  }
+
+  @POST
+  @Path("{clusterId}/customized-state-aggregation-config")
+  public Response updateCustomizedStateAggregationConfig(@PathParam("clusterId") String clusterId,
+      @QueryParam("command") String commandStr, @QueryParam("type") String type) {
+    if (!doesClusterExist(clusterId)) {
+      return notFound(String.format("Cluster %s does not exist", clusterId));
+    }
+
+    Command command;
+    if (commandStr == null || commandStr.isEmpty()) {
+      command = Command.add; // Default behavior
+    } else {
+      try {
+        command = getCommand(commandStr);
+      } catch (HelixException ex) {
+        return badRequest(ex.getMessage());
+      }
+    }
+
+    HelixAdmin admin = getHelixAdmin();
+
+    try {
+      switch (command) {
+      case delete:
+        admin.removeTypeFromCustomizedStateAggregationConfig(clusterId, type);
+        break;
+      case add:
+        admin.addTypeToCustomizedStateAggregationConfig(clusterId, type);
+        break;
+      default:
+        return badRequest("Unsupported command " + commandStr);
+      }
+    } catch (Exception ex) {
+      _logger.error("Failed to {} CustomizedStateAggregationConfig for cluster {} new type:
{}, Exception: {}", command, clusterId, type, ex);
+      return serverError(ex);
+    }
+    return OK();
+  }
+
+
   @GET
   @Path("{clusterId}/topology")
   public Response getClusterTopology(@PathParam("clusterId") String clusterId) throws IOException
{
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 b8d8018..ed5bb09 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
@@ -33,6 +33,7 @@ import javax.ws.rs.core.Response;
 
 import com.google.common.collect.ImmutableMap;
 import com.sun.research.ws.wadl.HTTPMethods;
+import org.apache.helix.ConfigAccessor;
 import org.apache.helix.HelixDataAccessor;
 import org.apache.helix.PropertyKey;
 import org.apache.helix.TestHelper;
@@ -43,6 +44,7 @@ import org.apache.helix.integration.manager.ClusterDistributedController;
 import org.apache.helix.manager.zk.ZKHelixDataAccessor;
 import org.apache.helix.manager.zk.ZKUtil;
 import org.apache.helix.model.ClusterConfig;
+import org.apache.helix.model.CustomizedStateAggregationConfig;
 import org.apache.helix.model.ExternalView;
 import org.apache.helix.model.IdealState;
 import org.apache.helix.model.InstanceConfig;
@@ -563,6 +565,152 @@ public class TestClusterAccessor extends AbstractTestClass {
     System.out.println("End test :" + TestHelper.getTestMethodName());
   }
 
+  @Test(dependsOnMethods = "testActivateSuperCluster")
+  public void testAddCustomizedConfigNonExistedCluster() throws IOException {
+    System.out.println("Start test :" + TestHelper.getTestMethodName());
+    String urlBase = "clusters/TestCluster/customized-state-aggregation-config/";
+    ZNRecord record = new ZNRecord("TestCustomizedStateAggregationConfig");
+    List<String> testList = new ArrayList<String>();
+    testList.add("mockType1");
+    record.setListField(
+        CustomizedStateAggregationConfig.CustomizedStateAggregationProperty.AGGREGATION_ENABLED_TYPES
+            .name(),
+        testList);
+
+    // Expecting not found response since the cluster is not setup yet.
+    put(urlBase, null,
+        Entity.entity(OBJECT_MAPPER.writeValueAsString(record), MediaType.APPLICATION_JSON_TYPE),
+        Response.Status.NOT_FOUND.getStatusCode());
+    System.out.println("End test :" + TestHelper.getTestMethodName());
+  }
+
+  @Test(dependsOnMethods = "testAddCustomizedConfigNonExistedCluster")
+  public void testAddCustomizedConfig() throws Exception {
+    System.out.println("Start test :" + TestHelper.getTestMethodName());
+    _gSetupTool.addCluster("TestClusterCustomized", true);
+    String urlBase = "clusters/TestClusterCustomized/customized-state-aggregation-config/";
+    ZNRecord record = new ZNRecord("TestCustomizedStateAggregationConfig");
+    List<String> testList = new ArrayList<String>();
+    testList.add("mockType1");
+    testList.add("mockType2");
+    record.setListField(
+        CustomizedStateAggregationConfig.CustomizedStateAggregationProperty.AGGREGATION_ENABLED_TYPES
+            .name(),
+        testList);
+
+    put(urlBase, null,
+        Entity.entity(OBJECT_MAPPER.writeValueAsString(record), MediaType.APPLICATION_JSON_TYPE),
+        Response.Status.OK.getStatusCode());
+
+    // Read CustomizedStateAggregationConfig from Zookeeper and check the content
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
+    CustomizedStateAggregationConfig customizedConfigFromZk = _configAccessor.getCustomizedStateAggregationConfig("TestClusterCustomized");
+    List<String> listTypesFromZk = customizedConfigFromZk.getAggregationEnabledTypes();
+    Assert.assertEquals(listTypesFromZk.get(0), "mockType1");
+    Assert.assertEquals(listTypesFromZk.get(1), "mockType2");
+
+    // Now test the getCustomizedStateAggregationConfig method.
+    String body = get(urlBase, null, Response.Status.OK.getStatusCode(), true);
+
+    ZNRecord recordFromRest = new ObjectMapper().reader(ZNRecord.class).readValue(body);
+    CustomizedStateAggregationConfig customizedConfigRest = new CustomizedStateAggregationConfig.Builder(recordFromRest).build();
+    CustomizedStateAggregationConfig customizedConfigZk = _configAccessor.getCustomizedStateAggregationConfig("TestClusterCustomized");
+
+    // Check that the CustomizedStateAggregationConfig from Zk and REST get method are equal
+    Assert.assertEquals(customizedConfigRest, customizedConfigZk);
+
+    // Check the fields individually
+    List<String> listUrlFromRest = customizedConfigRest.getAggregationEnabledTypes();
+    Assert.assertEquals(listUrlFromRest.get(0), "mockType1");
+    Assert.assertEquals(listUrlFromRest.get(1), "mockType2");
+
+    System.out.println("End test :" + TestHelper.getTestMethodName());
+  }
+
+  @Test(dependsOnMethods = "testAddCustomizedConfig")
+  public void testDeleteCustomizedConfig() throws IOException {
+    System.out.println("Start test :" + TestHelper.getTestMethodName());
+    _gSetupTool.addCluster("TestClusterCustomized", true);
+    String urlBase = "clusters/TestClusterCustomized/customized-state-aggregation-config/";
+    ZNRecord record = new ZNRecord("TestCustomizedStateAggregationConfig");
+    List<String> testList = new ArrayList<String>();
+    testList.add("mockType1");
+    record.setListField(
+        CustomizedStateAggregationConfig.CustomizedStateAggregationProperty.AGGREGATION_ENABLED_TYPES
+            .name(),
+        testList);
+
+    put(urlBase, null,
+        Entity.entity(OBJECT_MAPPER.writeValueAsString(record), MediaType.APPLICATION_JSON_TYPE),
+        Response.Status.OK.getStatusCode());
+
+    // Read CustomizedStateAggregationConfig from Zookeeper and make sure it exists
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
+    CustomizedStateAggregationConfig customizedConfigFromZk = _configAccessor.getCustomizedStateAggregationConfig("TestClusterCustomized");
+    Assert.assertNotNull(customizedConfigFromZk);
+
+    delete(urlBase, Response.Status.OK.getStatusCode());
+
+    customizedConfigFromZk = _configAccessor.getCustomizedStateAggregationConfig("TestClusterCustomized");
+    Assert.assertNull(customizedConfigFromZk);
+
+    System.out.println("End test :" + TestHelper.getTestMethodName());
+  }
+
+
+  @Test(dependsOnMethods = "testDeleteCustomizedConfig")
+  public void testUpdateCustomizedConfig() throws IOException {
+    System.out.println("Start test :" + TestHelper.getTestMethodName());
+    _gSetupTool.addCluster("TestClusterCustomized", true);
+    String urlBase = "clusters/TestClusterCustomized/customized-state-aggregation-config/";
+    ZNRecord record = new ZNRecord("TestCustomizedStateAggregationConfig");
+    List<String> testList = new ArrayList<String>();
+    testList.add("mockType1");
+    record.setListField(
+        CustomizedStateAggregationConfig.CustomizedStateAggregationProperty.AGGREGATION_ENABLED_TYPES
+            .name(),
+        testList);
+
+    put(urlBase, null,
+        Entity.entity(OBJECT_MAPPER.writeValueAsString(record), MediaType.APPLICATION_JSON_TYPE),
+        Response.Status.OK.getStatusCode());
+
+    // Read CustomizedStateAggregationConfig from Zookeeper and make sure it exists
+    ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR);
+    CustomizedStateAggregationConfig customizedConfigFromZk = _configAccessor.getCustomizedStateAggregationConfig("TestClusterCustomized");
+    Assert.assertNotNull(customizedConfigFromZk);
+
+    // Add new type to CustomizedStateAggregationConfig
+    Map<String, String> map1 = new HashMap<>();
+    map1.put("command", Command.add.name());
+    map1.put("type", "mockType2");
+
+    post(urlBase, map1, Entity.entity("", MediaType.APPLICATION_JSON_TYPE),
+        Response.Status.OK.getStatusCode());
+
+    customizedConfigFromZk =
+        _configAccessor.getCustomizedStateAggregationConfig("TestClusterCustomized");
+    List<String> listTypesFromZk = customizedConfigFromZk.getAggregationEnabledTypes();
+    Assert.assertEquals(listTypesFromZk.get(0), "mockType1");
+    Assert.assertEquals(listTypesFromZk.get(1), "mockType2");
+
+    // Remove a type to CustomizedStateAggregationConfig
+    Map<String, String> map2 = new HashMap<>();
+    map2.put("command", Command.delete.name());
+    map2.put("type", "mockType1");
+
+    post(urlBase, map2, Entity.entity("", MediaType.APPLICATION_JSON_TYPE),
+        Response.Status.OK.getStatusCode());
+
+    customizedConfigFromZk =
+        _configAccessor.getCustomizedStateAggregationConfig("TestClusterCustomized");
+    listTypesFromZk = customizedConfigFromZk.getAggregationEnabledTypes();
+    Assert.assertEquals(listTypesFromZk.get(0), "mockType2");
+    Assert.assertFalse(listTypesFromZk.contains("mockType1"));
+
+    System.out.println("End test :" + TestHelper.getTestMethodName());
+  }
+
   private ClusterConfig getClusterConfigFromRest(String cluster) throws IOException {
     String body = get("clusters/" + cluster + "/configs", null, Response.Status.OK.getStatusCode(),
true);
 


Mime
View raw message