You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ka...@apache.org on 2014/03/06 02:59:49 UTC
git commit: [HELIX-397] REST GET for resources should include tag
information, fix CI issue
Repository: helix
Updated Branches:
refs/heads/helix-0.6.2-release cba24a53b -> 304995e75
[HELIX-397] REST GET for resources should include tag information, fix CI issue
Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/304995e7
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/304995e7
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/304995e7
Branch: refs/heads/helix-0.6.2-release
Commit: 304995e75a1f65810157455b9bc416fc40bf250d
Parents: cba24a5
Author: Kanak Biscuitwala <ka...@apache.org>
Authored: Wed Mar 5 17:59:34 2014 -0800
Committer: Kanak Biscuitwala <ka...@apache.org>
Committed: Wed Mar 5 17:59:34 2014 -0800
----------------------------------------------------------------------
.../org/apache/helix/tools/AdminTestBase.java | 7 +-
.../tools/TestHelixAdminScenariosRest.java | 103 ++++++++++++--
.../webapp/TestClusterManagementWebapp.java | 71 ++++------
.../apache/helix/webapp/TestTagAwareness.java | 141 -------------------
4 files changed, 126 insertions(+), 196 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/helix/blob/304995e7/helix-admin-webapp/src/test/java/org/apache/helix/tools/AdminTestBase.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/tools/AdminTestBase.java b/helix-admin-webapp/src/test/java/org/apache/helix/tools/AdminTestBase.java
index 84ed72f..c9ebed0 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/tools/AdminTestBase.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/tools/AdminTestBase.java
@@ -25,10 +25,11 @@ import org.I0Itec.zkclient.ZkServer;
import org.apache.helix.TestHelper;
import org.apache.helix.manager.zk.ZNRecordSerializer;
import org.apache.helix.manager.zk.ZkClient;
-import org.apache.helix.tools.ClusterSetup;
import org.apache.helix.tools.AdminTestHelper.AdminThread;
import org.apache.helix.util.ZKClientPool;
import org.apache.log4j.Logger;
+import org.restlet.Client;
+import org.restlet.data.Protocol;
import org.testng.AssertJUnit;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
@@ -41,6 +42,7 @@ public class AdminTestBase {
protected static ZkServer _zkServer;
protected static ZkClient _gZkClient;
protected static ClusterSetup _gSetupTool;
+ protected static Client _gClient;
static AdminThread _adminThread;
@@ -63,6 +65,9 @@ public class AdminTestBase {
_adminThread = new AdminThread(ZK_ADDR, ADMIN_PORT);
_adminThread.start();
+ // create a client
+ _gClient = new Client(Protocol.HTTP);
+
// wait for the web service to start
Thread.sleep(100);
}
http://git-wip-us.apache.org/repos/asf/helix/blob/304995e7/helix-admin-webapp/src/test/java/org/apache/helix/tools/TestHelixAdminScenariosRest.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/tools/TestHelixAdminScenariosRest.java b/helix-admin-webapp/src/test/java/org/apache/helix/tools/TestHelixAdminScenariosRest.java
index 6a0e331..0680764 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/tools/TestHelixAdminScenariosRest.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/tools/TestHelixAdminScenariosRest.java
@@ -25,8 +25,10 @@ import java.io.PrintWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import org.apache.helix.HelixAdmin;
import org.apache.helix.HelixDataAccessor;
import org.apache.helix.ZNRecord;
import org.apache.helix.integration.manager.ClusterControllerManager;
@@ -34,25 +36,26 @@ import org.apache.helix.integration.manager.ClusterDistributedController;
import org.apache.helix.integration.manager.MockParticipantManager;
import org.apache.helix.manager.zk.ZKUtil;
import org.apache.helix.model.ExternalView;
+import org.apache.helix.model.IdealState;
import org.apache.helix.model.IdealState.IdealStateProperty;
+import org.apache.helix.model.InstanceConfig;
import org.apache.helix.model.LiveInstance;
import org.apache.helix.tools.ClusterStateVerifier.BestPossAndExtViewZkVerifier;
import org.apache.helix.tools.ClusterStateVerifier.MasterNbInExtViewVerifier;
import org.apache.helix.webapp.RestAdminApplication;
import org.apache.helix.webapp.resources.ClusterRepresentationUtil;
+import org.apache.helix.webapp.resources.InstancesResource.ListInstancesWrapper;
import org.apache.helix.webapp.resources.JsonParameters;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
-import org.restlet.Client;
import org.restlet.Component;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.MediaType;
import org.restlet.data.Method;
-import org.restlet.data.Protocol;
import org.restlet.data.Reference;
import org.restlet.data.Status;
import org.restlet.representation.Representation;
@@ -95,8 +98,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "="
+ ClusterRepresentationUtil.ObjectToJson(jsonParameters), MediaType.APPLICATION_ALL);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
result.write(sw);
@@ -118,8 +120,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
entity = entity + "&" + (key + "=" + extraForm.get(key));
}
request.setEntity(entity, MediaType.APPLICATION_ALL);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
result.write(sw);
@@ -132,8 +133,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
void deleteUrl(String url, boolean hasException) throws IOException {
Reference resourceRef = new Reference(url);
Request request = new Request(Method.DELETE, resourceRef);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
result.write(sw);
@@ -143,8 +143,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
String getUrl(String url) throws IOException {
Reference resourceRef = new Reference(url);
Request request = new Request(Method.GET, resourceRef);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
result.write(sw);
@@ -1026,4 +1025,88 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
response = assertSuccessPostOperation(instanceUrl, removeInstanceTagCmd(_tag1), false);
Assert.assertFalse(response.contains(_tag1));
}
+
+ @Test
+ public void testGetResources() throws IOException {
+ final String clusterName = "TestTagAwareness_testGetResources";
+ final String TAG = "tag";
+ final String URL_BASE =
+ "http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/resourceGroups";
+
+ _gSetupTool.addCluster(clusterName, true);
+ HelixAdmin admin = _gSetupTool.getClusterManagementTool();
+
+ // Add a tagged resource
+ IdealState taggedResource = new IdealState("taggedResource");
+ taggedResource.setInstanceGroupTag(TAG);
+ taggedResource.setStateModelDefRef("OnlineOffline");
+ admin.addResource(clusterName, taggedResource.getId(), taggedResource);
+
+ // Add an untagged resource
+ IdealState untaggedResource = new IdealState("untaggedResource");
+ untaggedResource.setStateModelDefRef("OnlineOffline");
+ admin.addResource(clusterName, untaggedResource.getId(), untaggedResource);
+
+ // Now make a REST call for all resources
+ Reference resourceRef = new Reference(URL_BASE);
+ Request request = new Request(Method.GET, resourceRef);
+ Response response = _gClient.handle(request);
+ ZNRecord responseRecord =
+ ClusterRepresentationUtil.JsonToObject(ZNRecord.class, response.getEntityAsText());
+
+ // Ensure that the tagged resource has information and the untagged one doesn't
+ Assert.assertNotNull(responseRecord.getMapField("ResourceTags"));
+ Assert
+ .assertEquals(TAG, responseRecord.getMapField("ResourceTags").get(taggedResource.getId()));
+ Assert.assertFalse(responseRecord.getMapField("ResourceTags").containsKey(
+ untaggedResource.getId()));
+ }
+
+ @Test
+ public void testGetInstances() throws IOException {
+ final String clusterName = "TestTagAwareness_testGetResources";
+ final String[] TAGS = {
+ "tag1", "tag2"
+ };
+ final String URL_BASE =
+ "http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/instances";
+
+ _gSetupTool.addCluster(clusterName, true);
+ HelixAdmin admin = _gSetupTool.getClusterManagementTool();
+
+ // Add 4 participants, each with differint tag characteristics
+ InstanceConfig instance1 = new InstanceConfig("localhost_1");
+ instance1.addTag(TAGS[0]);
+ admin.addInstance(clusterName, instance1);
+ InstanceConfig instance2 = new InstanceConfig("localhost_2");
+ instance2.addTag(TAGS[1]);
+ admin.addInstance(clusterName, instance2);
+ InstanceConfig instance3 = new InstanceConfig("localhost_3");
+ instance3.addTag(TAGS[0]);
+ instance3.addTag(TAGS[1]);
+ admin.addInstance(clusterName, instance3);
+ InstanceConfig instance4 = new InstanceConfig("localhost_4");
+ admin.addInstance(clusterName, instance4);
+
+ // Now make a REST call for all resources
+ Reference resourceRef = new Reference(URL_BASE);
+ Request request = new Request(Method.GET, resourceRef);
+ Response response = _gClient.handle(request);
+ ListInstancesWrapper responseWrapper =
+ ClusterRepresentationUtil.JsonToObject(ListInstancesWrapper.class,
+ response.getEntityAsText());
+ Map<String, List<String>> tagInfo = responseWrapper.tagInfo;
+
+ // Ensure tag ownership is reported correctly
+ Assert.assertTrue(tagInfo.containsKey(TAGS[0]));
+ Assert.assertTrue(tagInfo.containsKey(TAGS[1]));
+ Assert.assertTrue(tagInfo.get(TAGS[0]).contains("localhost_1"));
+ Assert.assertFalse(tagInfo.get(TAGS[0]).contains("localhost_2"));
+ Assert.assertTrue(tagInfo.get(TAGS[0]).contains("localhost_3"));
+ Assert.assertFalse(tagInfo.get(TAGS[0]).contains("localhost_4"));
+ Assert.assertFalse(tagInfo.get(TAGS[1]).contains("localhost_1"));
+ Assert.assertTrue(tagInfo.get(TAGS[1]).contains("localhost_2"));
+ Assert.assertTrue(tagInfo.get(TAGS[1]).contains("localhost_3"));
+ Assert.assertFalse(tagInfo.get(TAGS[1]).contains("localhost_4"));
+ }
}
http://git-wip-us.apache.org/repos/asf/helix/blob/304995e7/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java
index 3eee0a1..1fba6df 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java
@@ -44,7 +44,6 @@ import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.MediaType;
import org.restlet.data.Method;
-import org.restlet.data.Protocol;
import org.restlet.data.Reference;
import org.restlet.representation.Representation;
import org.testng.Assert;
@@ -85,8 +84,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
+ "/StateModelDefs/MasterSlave";
Reference resourceRef = new Reference(httpUrlBase);
Request request = new Request(Method.GET, resourceRef);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
result.write(sw);
@@ -107,8 +105,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paraMap)
+ "&" + JsonParameters.NEW_STATE_MODEL_DEF + "="
+ ClusterRepresentationUtil.ZNRecordToJson(r), MediaType.APPLICATION_ALL);
- client = new Client(Protocol.HTTP);
- response = client.handle(request);
+ response = _gClient.handle(request);
result = response.getEntity();
sw = new StringWriter();
@@ -133,8 +130,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paraMap),
MediaType.APPLICATION_ALL);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
@@ -165,8 +161,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paraMap),
MediaType.APPLICATION_ALL);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
@@ -185,8 +180,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request = new Request(Method.GET, resourceRef);
- client = new Client(Protocol.HTTP);
- response = client.handle(request);
+ response = _gClient.handle(request);
result = response.getEntity();
sw = new StringWriter();
@@ -210,8 +204,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paraMap),
MediaType.APPLICATION_ALL);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
@@ -252,8 +245,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paraMap),
MediaType.APPLICATION_ALL);
- client = new Client(Protocol.HTTP);
- response = client.handle(request);
+ response = _gClient.handle(request);
result = response.getEntity();
sw = new StringWriter();
@@ -295,8 +287,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paraMap),
MediaType.APPLICATION_ALL);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
@@ -316,8 +307,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
resourceRef = new Reference(httpUrlBase);
request = new Request(Method.GET, resourceRef);
- client = new Client(Protocol.HTTP);
- response = client.handle(request);
+ response = _gClient.handle(request);
result = response.getEntity();
sw = new StringWriter();
@@ -341,8 +331,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paraMap),
MediaType.APPLICATION_ALL);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
@@ -362,8 +351,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paraMap),
MediaType.APPLICATION_ALL);
- client = new Client(Protocol.HTTP);
- response = client.handle(request);
+ response = _gClient.handle(request);
result = response.getEntity();
sw = new StringWriter();
@@ -385,8 +373,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
Reference resourceRef = new Reference(httpUrlBase);
Request request = new Request(Method.GET, resourceRef);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
@@ -410,8 +397,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paraMap)
+ "&" + JsonParameters.NEW_IDEAL_STATE + "="
+ ClusterRepresentationUtil.ZNRecordToJson(r), MediaType.APPLICATION_ALL);
- client = new Client(Protocol.HTTP);
- response = client.handle(request);
+ response = _gClient.handle(request);
result = response.getEntity();
sw = new StringWriter();
@@ -431,16 +417,15 @@ public class TestClusterManagementWebapp extends AdminTestBase {
// verify get/post configs in different scopes
void verifyConfigAccessor() throws Exception {
ObjectMapper mapper = new ObjectMapper();
- Client client = new Client(Protocol.HTTP);
// set/get cluster scope configs
String url =
"http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/configs/cluster/"
+ clusterName;
- postConfig(client, url, mapper, ClusterSetup.setConfig, "key1=value1,key2=value2");
+ postConfig(_gClient, url, mapper, ClusterSetup.setConfig, "key1=value1,key2=value2");
- ZNRecord record = get(client, url, mapper);
+ ZNRecord record = get(_gClient, url, mapper);
Assert.assertEquals(record.getSimpleFields().size(), 2);
Assert.assertEquals(record.getSimpleField("key1"), "value1");
Assert.assertEquals(record.getSimpleField("key2"), "value2");
@@ -451,9 +436,9 @@ public class TestClusterManagementWebapp extends AdminTestBase {
"http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/configs/participant/"
+ participantName;
- postConfig(client, url, mapper, ClusterSetup.setConfig, "key3=value3,key4=value4");
+ postConfig(_gClient, url, mapper, ClusterSetup.setConfig, "key3=value3,key4=value4");
- record = get(client, url, mapper);
+ record = get(_gClient, url, mapper);
Assert.assertTrue(record.getSimpleFields().size() >= 2, "Should at least contains 2 keys");
Assert.assertEquals(record.getSimpleField("key3"), "value3");
Assert.assertEquals(record.getSimpleField("key4"), "value4");
@@ -463,9 +448,9 @@ public class TestClusterManagementWebapp extends AdminTestBase {
"http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName
+ "/configs/resource/testResource";
- postConfig(client, url, mapper, ClusterSetup.setConfig, "key5=value5,key6=value6");
+ postConfig(_gClient, url, mapper, ClusterSetup.setConfig, "key5=value5,key6=value6");
- record = get(client, url, mapper);
+ record = get(_gClient, url, mapper);
Assert.assertEquals(record.getSimpleFields().size(), 2);
Assert.assertEquals(record.getSimpleField("key5"), "value5");
Assert.assertEquals(record.getSimpleField("key6"), "value6");
@@ -475,16 +460,16 @@ public class TestClusterManagementWebapp extends AdminTestBase {
"http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName
+ "/configs/partition/testResource/testPartition";
- postConfig(client, url, mapper, ClusterSetup.setConfig, "key7=value7,key8=value8");
+ postConfig(_gClient, url, mapper, ClusterSetup.setConfig, "key7=value7,key8=value8");
- record = get(client, url, mapper);
+ record = get(_gClient, url, mapper);
Assert.assertEquals(record.getSimpleFields().size(), 2);
Assert.assertEquals(record.getSimpleField("key7"), "value7");
Assert.assertEquals(record.getSimpleField("key8"), "value8");
// list keys
url = "http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/configs";
- record = get(client, url, mapper);
+ record = get(_gClient, url, mapper);
Assert.assertEquals(record.getListFields().size(), 1);
Assert.assertTrue(record.getListFields().containsKey("scopes"));
Assert.assertTrue(contains(record.getListField("scopes"), "CLUSTER", "PARTICIPANT", "RESOURCE",
@@ -498,12 +483,12 @@ public class TestClusterManagementWebapp extends AdminTestBase {
// record);
url = "http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/configs/participant";
- record = get(client, url, mapper);
+ record = get(_gClient, url, mapper);
Assert.assertTrue(record.getListFields().containsKey("PARTICIPANT"));
Assert.assertTrue(contains(record.getListField("PARTICIPANT"), participantName));
url = "http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/configs/resource";
- record = get(client, url, mapper);
+ record = get(_gClient, url, mapper);
Assert.assertEquals(record.getListFields().size(), 1);
Assert.assertTrue(record.getListFields().containsKey("RESOURCE"));
Assert.assertTrue(contains(record.getListField("RESOURCE"), "testResource"));
@@ -511,7 +496,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
url =
"http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName
+ "/configs/partition/testResource";
- record = get(client, url, mapper);
+ record = get(_gClient, url, mapper);
Assert.assertEquals(record.getListFields().size(), 1);
Assert.assertTrue(record.getListFields().containsKey("PARTITION"));
Assert.assertTrue(contains(record.getListField("PARTITION"), "testPartition"));
@@ -569,8 +554,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paramMap),
MediaType.APPLICATION_ALL);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
+ Response response = _gClient.handle(request);
Representation result = response.getEntity();
StringWriter sw = new StringWriter();
@@ -591,8 +575,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
request.setEntity(
JsonParameters.JSON_PARAMETERS + "=" + ClusterRepresentationUtil.ObjectToJson(paramMap),
MediaType.APPLICATION_ALL);
- client = new Client(Protocol.HTTP);
- response = client.handle(request);
+ response = _gClient.handle(request);
result = response.getEntity();
sw = new StringWriter();
http://git-wip-us.apache.org/repos/asf/helix/blob/304995e7/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestTagAwareness.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestTagAwareness.java b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestTagAwareness.java
deleted file mode 100644
index f8bb6cd..0000000
--- a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestTagAwareness.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package org.apache.helix.webapp;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.helix.HelixAdmin;
-import org.apache.helix.ZNRecord;
-import org.apache.helix.model.IdealState;
-import org.apache.helix.model.InstanceConfig;
-import org.apache.helix.tools.AdminTestBase;
-import org.apache.helix.webapp.resources.ClusterRepresentationUtil;
-import org.apache.helix.webapp.resources.InstancesResource.ListInstancesWrapper;
-import org.junit.Assert;
-import org.restlet.Client;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.data.Method;
-import org.restlet.data.Protocol;
-import org.restlet.data.Reference;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * Ensure that REST calls for participants and resources return information about tags
- */
-public class TestTagAwareness extends AdminTestBase {
- private String _clusterName;
- private HelixAdmin _admin;
-
- @BeforeClass
- public void beforeClass() {
- _clusterName = TestTagAwareness.class.getCanonicalName() + "_cluster";
- _gSetupTool.addCluster(_clusterName, true);
- _admin = _gSetupTool.getClusterManagementTool();
- }
-
- @Test
- public void testGetResources() throws IOException {
- final String TAG = "tag";
- final String URL_BASE =
- "http://localhost:" + ADMIN_PORT + "/clusters/" + _clusterName + "/resourceGroups";
-
- // Add a tagged resource
- IdealState taggedResource = new IdealState("taggedResource");
- taggedResource.setInstanceGroupTag(TAG);
- taggedResource.setStateModelDefRef("OnlineOffline");
- _admin.addResource(_clusterName, taggedResource.getId(), taggedResource);
-
- // Add an untagged resource
- IdealState untaggedResource = new IdealState("untaggedResource");
- untaggedResource.setStateModelDefRef("OnlineOffline");
- _admin.addResource(_clusterName, untaggedResource.getId(), untaggedResource);
-
- // Now make a REST call for all resources
- Reference resourceRef = new Reference(URL_BASE);
- Request request = new Request(Method.GET, resourceRef);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
- ZNRecord responseRecord =
- ClusterRepresentationUtil.JsonToObject(ZNRecord.class, response.getEntityAsText());
-
- // Ensure that the tagged resource has information and the untagged one doesn't
- Assert.assertNotNull(responseRecord.getMapField("ResourceTags"));
- Assert
- .assertEquals(TAG, responseRecord.getMapField("ResourceTags").get(taggedResource.getId()));
- Assert.assertFalse(responseRecord.getMapField("ResourceTags").containsKey(
- untaggedResource.getId()));
- }
-
- @Test
- public void testGetInstances() throws IOException {
- final String[] TAGS = {
- "tag1", "tag2"
- };
- final String URL_BASE =
- "http://localhost:" + ADMIN_PORT + "/clusters/" + _clusterName + "/instances";
-
- // Add 4 participants, each with differint tag characteristics
- InstanceConfig instance1 = new InstanceConfig("localhost_1");
- instance1.addTag(TAGS[0]);
- _admin.addInstance(_clusterName, instance1);
- InstanceConfig instance2 = new InstanceConfig("localhost_2");
- instance2.addTag(TAGS[1]);
- _admin.addInstance(_clusterName, instance2);
- InstanceConfig instance3 = new InstanceConfig("localhost_3");
- instance3.addTag(TAGS[0]);
- instance3.addTag(TAGS[1]);
- _admin.addInstance(_clusterName, instance3);
- InstanceConfig instance4 = new InstanceConfig("localhost_4");
- _admin.addInstance(_clusterName, instance4);
-
- // Now make a REST call for all resources
- Reference resourceRef = new Reference(URL_BASE);
- Request request = new Request(Method.GET, resourceRef);
- Client client = new Client(Protocol.HTTP);
- Response response = client.handle(request);
- ListInstancesWrapper responseWrapper =
- ClusterRepresentationUtil.JsonToObject(ListInstancesWrapper.class,
- response.getEntityAsText());
- Map<String, List<String>> tagInfo = responseWrapper.tagInfo;
-
- // Ensure tag ownership is reported correctly
- Assert.assertTrue(tagInfo.containsKey(TAGS[0]));
- Assert.assertTrue(tagInfo.containsKey(TAGS[1]));
- Assert.assertTrue(tagInfo.get(TAGS[0]).contains("localhost_1"));
- Assert.assertFalse(tagInfo.get(TAGS[0]).contains("localhost_2"));
- Assert.assertTrue(tagInfo.get(TAGS[0]).contains("localhost_3"));
- Assert.assertFalse(tagInfo.get(TAGS[0]).contains("localhost_4"));
- Assert.assertFalse(tagInfo.get(TAGS[1]).contains("localhost_1"));
- Assert.assertTrue(tagInfo.get(TAGS[1]).contains("localhost_2"));
- Assert.assertTrue(tagInfo.get(TAGS[1]).contains("localhost_3"));
- Assert.assertFalse(tagInfo.get(TAGS[1]).contains("localhost_4"));
- }
-
- @AfterClass
- public void afterClass() {
- _admin.dropCluster(_clusterName);
- }
-
-}