You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by zz...@apache.org on 2014/07/22 20:40:20 UTC
[2/9] [HELIX-475] Remove code duplication for Zk tests
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAutoController.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAutoController.java b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAutoController.java
index 856707b..96952d0 100644
--- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAutoController.java
+++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAutoController.java
@@ -26,15 +26,14 @@ import org.apache.helix.HelixConnection;
import org.apache.helix.HelixDataAccessor;
import org.apache.helix.PropertyKey;
import org.apache.helix.TestHelper;
-import org.apache.helix.ZNRecord;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.api.id.ClusterId;
import org.apache.helix.api.id.ControllerId;
import org.apache.helix.model.LiveInstance;
+import org.apache.helix.testutil.ZkTestBase;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestZkHelixAutoController extends ZkUnitTestBase {
+public class TestZkHelixAutoController extends ZkTestBase {
@Test
public void testOnConnectedAndDisconnecting() throws Exception {
// Logger.getRootLogger().setLevel(Level.INFO);
@@ -45,7 +44,7 @@ public class TestZkHelixAutoController extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -55,7 +54,7 @@ public class TestZkHelixAutoController extends ZkUnitTestBase {
"MasterSlave", true); // do rebalance
// create connection
- HelixConnection connection = new ZkHelixConnection(ZK_ADDR);
+ HelixConnection connection = new ZkHelixConnection(_zkaddr);
connection.connect();
// start auto-controller
@@ -70,7 +69,7 @@ public class TestZkHelixAutoController extends ZkUnitTestBase {
// check live-instance znode for localhost_12918/12919 exists
final HelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
+ new ZKHelixDataAccessor(clusterName, _baseAccessor);
final PropertyKey.Builder keyBuilder = accessor.keyBuilder();
for (int i = 0; i < n; i++) {
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixController.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixController.java b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixController.java
index beac6aa..9304cf8 100644
--- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixController.java
+++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixController.java
@@ -26,15 +26,14 @@ import org.apache.helix.HelixController;
import org.apache.helix.HelixDataAccessor;
import org.apache.helix.PropertyKey;
import org.apache.helix.TestHelper;
-import org.apache.helix.ZNRecord;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.api.id.ClusterId;
import org.apache.helix.api.id.ControllerId;
import org.apache.helix.model.LiveInstance;
+import org.apache.helix.testutil.ZkTestBase;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestZkHelixController extends ZkUnitTestBase {
+public class TestZkHelixController extends ZkTestBase {
@Test
public void testOnConnectedAndDisconnecting() throws Exception {
@@ -46,7 +45,7 @@ public class TestZkHelixController extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -56,7 +55,7 @@ public class TestZkHelixController extends ZkUnitTestBase {
"MasterSlave", true); // do rebalance
// create connection
- HelixConnection connection = new ZkHelixConnection(ZK_ADDR);
+ HelixConnection connection = new ZkHelixConnection(_zkaddr);
connection.connect();
// start controller
@@ -101,7 +100,7 @@ public class TestZkHelixController extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -111,7 +110,7 @@ public class TestZkHelixController extends ZkUnitTestBase {
"MasterSlave", true); // do rebalance
// create connection
- HelixConnection connection = new ZkHelixConnection(ZK_ADDR);
+ HelixConnection connection = new ZkHelixConnection(_zkaddr);
connection.connect();
// start controller
@@ -124,7 +123,7 @@ public class TestZkHelixController extends ZkUnitTestBase {
// check live-instance znode for localhost_12918 exists
final HelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
+ new ZKHelixDataAccessor(clusterName, _baseAccessor);
final PropertyKey.Builder keyBuilder = accessor.keyBuilder();
LiveInstance leader = accessor.getProperty(keyBuilder.controllerLeader());
Assert.assertNotNull(leader);
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixParticipant.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixParticipant.java b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixParticipant.java
index e566ef2..887a9a5 100644
--- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixParticipant.java
+++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixParticipant.java
@@ -26,16 +26,15 @@ import org.apache.helix.HelixDataAccessor;
import org.apache.helix.HelixParticipant;
import org.apache.helix.PropertyKey;
import org.apache.helix.TestHelper;
-import org.apache.helix.ZNRecord;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.api.id.ClusterId;
import org.apache.helix.api.id.ParticipantId;
import org.apache.helix.api.id.StateModelDefId;
import org.apache.helix.integration.TestHelixConnection;
+import org.apache.helix.testutil.ZkTestBase;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestZkHelixParticipant extends ZkUnitTestBase {
+public class TestZkHelixParticipant extends ZkTestBase {
@Test
public void testOnConnectedAndDisconnecting() throws Exception {
@@ -47,7 +46,7 @@ public class TestZkHelixParticipant extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -57,7 +56,7 @@ public class TestZkHelixParticipant extends ZkUnitTestBase {
"MasterSlave", true); // do rebalance
// create connection
- HelixConnection connection = new ZkHelixConnection(ZK_ADDR);
+ HelixConnection connection = new ZkHelixConnection(_zkaddr);
connection.connect();
// start participant
@@ -76,7 +75,7 @@ public class TestZkHelixParticipant extends ZkUnitTestBase {
// check live-instance znode for localhost_12918/12919 exist
HelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
+ new ZKHelixDataAccessor(clusterName, _baseAccessor);
PropertyKey.Builder keyBuilder = accessor.keyBuilder();
for (int i = 0; i < n; i++) {
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkManagerFlappingDetection.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkManagerFlappingDetection.java b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkManagerFlappingDetection.java
index 78d1668..86aa6e3 100644
--- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkManagerFlappingDetection.java
+++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkManagerFlappingDetection.java
@@ -21,20 +21,20 @@ package org.apache.helix.manager.zk;
import org.apache.helix.TestHelper;
import org.apache.helix.ZkTestHelper;
-import org.apache.helix.integration.ZkIntegrationTestBase;
import org.apache.helix.integration.manager.ClusterControllerManager;
import org.apache.helix.integration.manager.MockParticipantManager;
+import org.apache.helix.testutil.ZkTestBase;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestZkManagerFlappingDetection extends ZkIntegrationTestBase {
+public class TestZkManagerFlappingDetection extends ZkTestBase {
@Test
public void testDisconnectHistory() throws Exception {
String className = TestHelper.getTestClassName();
String methodName = TestHelper.getTestMethodName();
final String clusterName = className + "_" + methodName;
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -44,7 +44,7 @@ public class TestZkManagerFlappingDetection extends ZkIntegrationTestBase {
"MasterSlave", true); // do rebalance
String instanceName = "localhost_" + (12918 + 0);
- MockParticipantManager manager = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+ MockParticipantManager manager = new MockParticipantManager(_zkaddr, clusterName, instanceName);
manager.connect();
ZkClient zkClient = manager.getZkClient();
@@ -85,7 +85,7 @@ public class TestZkManagerFlappingDetection extends ZkIntegrationTestBase {
// String methodName = TestHelper.getTestMethodName();
// final String clusterName = className + "_" + methodName + UUID.randomUUID();
//
- // TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ // TestHelper.setupCluster(clusterName, zkaddr, 12918, // participant port
// "localhost", // participant name prefix
// "TestDB", // resource name prefix
// 1, // resources
@@ -97,7 +97,7 @@ public class TestZkManagerFlappingDetection extends ZkIntegrationTestBase {
// // flapping time window to 5 sec
// System.setProperty("helixmanager.flappingTimeWindow", "15000");
// System.setProperty("helixmanager.maxDisconnectThreshold", "7");
- // ZkHelixTestManager manager2 = new ZkHelixTestManager(clusterName, instanceName, type, ZK_ADDR);
+ // ZkHelixTestManager manager2 = new ZkHelixTestManager(clusterName, instanceName, type, zkaddr);
// manager2.connect();
// ZkClient zkClient = manager2.getZkClient();
// for (int i = 0; i < 3; i++) {
@@ -127,7 +127,7 @@ public class TestZkManagerFlappingDetection extends ZkIntegrationTestBase {
String methodName = TestHelper.getTestMethodName();
final String clusterName = className + "_" + methodName;
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -139,7 +139,7 @@ public class TestZkManagerFlappingDetection extends ZkIntegrationTestBase {
// flapping time window to 5 sec
System.setProperty("helixmanager.flappingTimeWindow", "5000");
System.setProperty("helixmanager.maxDisconnectThreshold", "3");
- ClusterControllerManager manager2 = new ClusterControllerManager(ZK_ADDR, clusterName, null);
+ ClusterControllerManager manager2 = new ClusterControllerManager(_zkaddr, clusterName, null);
manager2.connect();
Thread.sleep(100);
ZkClient zkClient = manager2.getZkClient();
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/messaging/handling/TestConfigThreadpoolSize.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/messaging/handling/TestConfigThreadpoolSize.java b/helix-core/src/test/java/org/apache/helix/messaging/handling/TestConfigThreadpoolSize.java
index 0f8c841..80a46fa 100644
--- a/helix-core/src/test/java/org/apache/helix/messaging/handling/TestConfigThreadpoolSize.java
+++ b/helix-core/src/test/java/org/apache/helix/messaging/handling/TestConfigThreadpoolSize.java
@@ -76,7 +76,7 @@ public class TestConfigThreadpoolSize extends ZkStandAloneCMTestBase {
@Test
public void TestThreadPoolSizeConfig() {
- String instanceName = PARTICIPANT_PREFIX + "_" + (START_PORT + 0);
+ String instanceName = "localhost_" + (START_PORT + 0);
HelixManager manager = _participants[0];
ConfigAccessor accessor = manager.getConfigAccessor();
@@ -89,7 +89,7 @@ public class TestConfigThreadpoolSize extends ZkStandAloneCMTestBase {
accessor.set(scope, "TestMsg." + HelixTaskExecutor.MAX_THREADS, "" + 8);
for (int i = 0; i < NODE_NR; i++) {
- instanceName = PARTICIPANT_PREFIX + "_" + (START_PORT + i);
+ instanceName = "localhost_" + (START_PORT + i);
_participants[i].getMessagingService().registerMessageHandlerFactory("TestMsg",
new TestMessagingHandlerFactory());
@@ -99,7 +99,7 @@ public class TestConfigThreadpoolSize extends ZkStandAloneCMTestBase {
}
for (int i = 0; i < NODE_NR; i++) {
- instanceName = PARTICIPANT_PREFIX + "_" + (START_PORT + i);
+ instanceName = "localhost_" + (START_PORT + i);
DefaultMessagingService svc =
(DefaultMessagingService) (_participants[i].getMessagingService());
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/messaging/handling/TestResourceThreadpoolSize.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/messaging/handling/TestResourceThreadpoolSize.java b/helix-core/src/test/java/org/apache/helix/messaging/handling/TestResourceThreadpoolSize.java
index a5777ab..97a56be 100644
--- a/helix-core/src/test/java/org/apache/helix/messaging/handling/TestResourceThreadpoolSize.java
+++ b/helix-core/src/test/java/org/apache/helix/messaging/handling/TestResourceThreadpoolSize.java
@@ -46,7 +46,7 @@ public class TestResourceThreadpoolSize extends ZkStandAloneCMTestBase {
boolean result =
ClusterStateVerifier.verifyByPolling(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(
- ZK_ADDR, CLUSTER_NAME));
+ _zkaddr, CLUSTER_NAME));
Assert.assertTrue(result);
long taskcount = 0;
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/model/TestConstraint.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/model/TestConstraint.java b/helix-core/src/test/java/org/apache/helix/model/TestConstraint.java
index 691492e..4d5dd95 100644
--- a/helix-core/src/test/java/org/apache/helix/model/TestConstraint.java
+++ b/helix-core/src/test/java/org/apache/helix/model/TestConstraint.java
@@ -28,25 +28,29 @@ import java.util.TreeMap;
import org.apache.helix.PropertyKey.Builder;
import org.apache.helix.TestHelper;
import org.apache.helix.ZNRecord;
-import org.apache.helix.ZkUnitTestBase;
+import org.apache.helix.api.State;
import org.apache.helix.api.id.MessageId;
import org.apache.helix.manager.zk.ZKHelixDataAccessor;
import org.apache.helix.manager.zk.ZkBaseDataAccessor;
import org.apache.helix.model.ClusterConstraints.ConstraintAttribute;
import org.apache.helix.model.ClusterConstraints.ConstraintType;
+import org.apache.helix.model.Message.Attributes;
import org.apache.helix.model.Message.MessageType;
+import org.apache.helix.testutil.HelixTestUtil;
+import org.apache.helix.testutil.TestUtil;
+import org.apache.helix.testutil.ZkTestBase;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestConstraint extends ZkUnitTestBase {
+public class TestConstraint extends ZkTestBase {
@Test
public void testMsgConstraint() {
- String className = getShortClassName();
+ String className = TestUtil.getTestName();
System.out.println("START testMsgConstraint() at " + new Date(System.currentTimeMillis()));
String clusterName = "CLUSTER_" + className + "_msg";
- TestHelper.setupEmptyCluster(_gZkClient, clusterName);
+ TestHelper.setupEmptyCluster(_zkclient, clusterName);
ZNRecord record = new ZNRecord("testMsgConstraint");
// constraint0:
@@ -105,7 +109,7 @@ public class TestConstraint extends ZkUnitTestBase {
ConstraintItem constraint5 = new ConstraintItem(record.getMapField("constraint5"));
ZKHelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_gZkClient));
+ new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_zkclient));
Builder keyBuilder = accessor.keyBuilder();
accessor.setProperty(keyBuilder.constraint(ConstraintType.MESSAGE_CONSTRAINT.toString()),
@@ -119,7 +123,7 @@ public class TestConstraint extends ZkUnitTestBase {
// message1
Message msg1 =
- createMessage(MessageType.STATE_TRANSITION, MessageId.from("msgId-001"), "OFFLINE",
+ HelixTestUtil.newMessage(MessageType.STATE_TRANSITION, MessageId.from("msgId-001"), "OFFLINE",
"SLAVE", "TestDB", "localhost_12918");
Map<ConstraintAttribute, String> msgAttr = ClusterConstraints.toConstraintAttributes(msg1);
@@ -134,7 +138,7 @@ public class TestConstraint extends ZkUnitTestBase {
// message2
Message msg2 =
- createMessage(MessageType.STATE_TRANSITION, MessageId.from("msgId-002"), "OFFLINE",
+ HelixTestUtil.newMessage(MessageType.STATE_TRANSITION, MessageId.from("msgId-002"), "OFFLINE",
"SLAVE", "TestDB", "localhost_12919");
msgAttr = ClusterConstraints.toConstraintAttributes(msg2);
@@ -152,11 +156,11 @@ public class TestConstraint extends ZkUnitTestBase {
@Test
public void testStateConstraint() {
- String className = getShortClassName();
+ String className = TestUtil.getTestName();
System.out.println("START testStateConstraint() at " + new Date(System.currentTimeMillis()));
String clusterName = "CLUSTER_" + className + "_state";
- TestHelper.setupEmptyCluster(_gZkClient, clusterName);
+ TestHelper.setupEmptyCluster(_zkclient, clusterName);
ZNRecord record = new ZNRecord("testStateConstraint");
// constraint0:
@@ -183,7 +187,7 @@ public class TestConstraint extends ZkUnitTestBase {
ConstraintItem constraint2 = new ConstraintItem(record.getMapField("constraint2"));
ZKHelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
+ new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_zkclient));
Builder keyBuilder = accessor.keyBuilder();
accessor.setProperty(keyBuilder.constraint(ConstraintType.STATE_CONSTRAINT.toString()),
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/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 d8e1cab..c31b641 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
@@ -29,11 +29,11 @@ import javax.management.MalformedObjectNameException;
import org.apache.helix.HelixDataAccessor;
import org.apache.helix.TestHelper;
-import org.apache.helix.integration.ZkIntegrationTestBase;
import org.apache.helix.integration.manager.ClusterDistributedController;
import org.apache.helix.integration.manager.MockParticipantManager;
import org.apache.helix.model.IdealState;
import org.apache.helix.monitoring.mbeans.ClusterMBeanObserver;
+import org.apache.helix.testutil.ZkTestBase;
import org.apache.helix.tools.ClusterSetup;
import org.apache.helix.tools.ClusterStateVerifier;
import org.apache.helix.tools.ClusterStateVerifier.BestPossAndExtViewZkVerifier;
@@ -43,7 +43,7 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase {
+public class TestClusterStatusMonitorLifecycle extends ZkTestBase {
private static final Logger LOG = Logger.getLogger(TestClusterStatusMonitorLifecycle.class);
MockParticipantManager[] _participants;
@@ -69,7 +69,7 @@ public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase {
String clusterName = _clusterNamePrefix + "0_" + i;
String participantName = "localhost" + i;
String resourceName = "TestDB" + i;
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
participantName, // participant name prefix
resourceName, // resource name prefix
1, // resources
@@ -81,7 +81,7 @@ public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase {
// setup controller cluster
_controllerClusterName = "CONTROLLER_" + _clusterNamePrefix;
- TestHelper.setupCluster("CONTROLLER_" + _clusterNamePrefix, ZK_ADDR, 0, // controller
+ TestHelper.setupCluster("CONTROLLER_" + _clusterNamePrefix, _zkaddr, 0, // controller
// port
"controller", // participant name prefix
_clusterNamePrefix, // resource name prefix
@@ -95,13 +95,13 @@ public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase {
_controllers = new ClusterDistributedController[n + n];
for (int i = 0; i < n; i++) {
_controllers[i] =
- new ClusterDistributedController(ZK_ADDR, _controllerClusterName, "controller_" + i);
+ new ClusterDistributedController(_zkaddr, _controllerClusterName, "controller_" + i);
_controllers[i].syncStart();
}
boolean result =
ClusterStateVerifier.verifyByZkCallback(
- new ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR, _controllerClusterName),
+ new ClusterStateVerifier.BestPossAndExtViewZkVerifier(_zkaddr, _controllerClusterName),
30000);
Assert.assertTrue(result, "Controller cluster NOT in ideal state");
@@ -110,38 +110,37 @@ public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase {
_firstClusterName = _clusterNamePrefix + "0_0";
for (int i = 0; i < n; i++) {
String instanceName = "localhost0_" + (12918 + i);
- _participants[i] = new MockParticipantManager(ZK_ADDR, _firstClusterName, instanceName);
+ _participants[i] = new MockParticipantManager(_zkaddr, _firstClusterName, instanceName);
_participants[i].syncStart();
}
result =
- ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+ ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
_firstClusterName));
Assert.assertTrue(result, "first cluster NOT in ideal state");
// add more controllers to controller cluster
- ClusterSetup setupTool = new ClusterSetup(ZK_ADDR);
for (int i = 0; i < n; i++) {
String controller = "controller_" + (n + i);
- setupTool.addInstanceToCluster(_controllerClusterName, controller);
+ _setupTool.addInstanceToCluster(_controllerClusterName, controller);
}
- setupTool.rebalanceStorageCluster(_controllerClusterName, _clusterNamePrefix + "0", 6);
+ _setupTool.rebalanceStorageCluster(_controllerClusterName, _clusterNamePrefix + "0", 6);
for (int i = n; i < 2 * n; i++) {
_controllers[i] =
- new ClusterDistributedController(ZK_ADDR, _controllerClusterName, "controller_" + i);
+ new ClusterDistributedController(_zkaddr, _controllerClusterName, "controller_" + i);
_controllers[i].syncStart();
}
// verify controller cluster
result =
ClusterStateVerifier
- .verifyByZkCallback(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR,
+ .verifyByZkCallback(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(_zkaddr,
_controllerClusterName));
Assert.assertTrue(result, "Controller cluster NOT in ideal state");
// verify first cluster
result =
- ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+ ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
_firstClusterName));
Assert.assertTrue(result, "first cluster NOT in ideal state");
}
@@ -223,7 +222,7 @@ public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase {
Assert.assertEquals(nMbeansRegistered, listener._nMbeansRegistered - 12);
String instanceName = "localhost0_" + (12918 + 0);
- _participants[0] = new MockParticipantManager(ZK_ADDR, _firstClusterName, instanceName);
+ _participants[0] = new MockParticipantManager(_zkaddr, _firstClusterName, instanceName);
_participants[0].syncStart();
// 1 participant comes back
@@ -236,12 +235,11 @@ public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase {
// Add a resource
// Register 1 resource mbean
// Register 5 per-instance resource mbean
- ClusterSetup setupTool = new ClusterSetup(ZK_ADDR);
IdealState idealState = accessor.getProperty(accessor.keyBuilder().idealStates("TestDB00"));
- setupTool.addResourceToCluster(_firstClusterName, "TestDB1", idealState.getNumPartitions(),
+ _setupTool.addResourceToCluster(_firstClusterName, "TestDB1", idealState.getNumPartitions(),
"MasterSlave");
- setupTool.rebalanceResource(_firstClusterName, "TestDB1",
+ _setupTool.rebalanceResource(_firstClusterName, "TestDB1",
Integer.parseInt(idealState.getReplicas()));
Thread.sleep(1000);
@@ -251,7 +249,7 @@ public class TestClusterStatusMonitorLifecycle extends ZkIntegrationTestBase {
// Remove a resource
// No change in instance/resource mbean
// Unregister 5 per-instance resource mbean
- setupTool.dropResourceFromCluster(_firstClusterName, "TestDB1");
+ _setupTool.dropResourceFromCluster(_firstClusterName, "TestDB1");
Thread.sleep(1000);
Assert.assertEquals(nMbeansUnregistered, listener._nMbeansUnregistered - 22);
Assert.assertEquals(nMbeansRegistered, listener._nMbeansRegistered - 20);
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/monitoring/TestZKPathDataDumpTask.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/monitoring/TestZKPathDataDumpTask.java b/helix-core/src/test/java/org/apache/helix/monitoring/TestZKPathDataDumpTask.java
index d073dd2..2eb3321 100644
--- a/helix-core/src/test/java/org/apache/helix/monitoring/TestZKPathDataDumpTask.java
+++ b/helix-core/src/test/java/org/apache/helix/monitoring/TestZKPathDataDumpTask.java
@@ -30,15 +30,14 @@ import org.apache.helix.HelixManager;
import org.apache.helix.PropertyKey;
import org.apache.helix.TestHelper;
import org.apache.helix.ZNRecord;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.manager.zk.ZKHelixDataAccessor;
-import org.apache.helix.manager.zk.ZkBaseDataAccessor;
import org.apache.helix.model.Error;
import org.apache.helix.model.StatusUpdate;
+import org.apache.helix.testutil.ZkTestBase;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestZKPathDataDumpTask extends ZkUnitTestBase {
+public class TestZKPathDataDumpTask extends ZkTestBase {
@Test
public void test() throws Exception {
@@ -49,7 +48,7 @@ public class TestZKPathDataDumpTask extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -59,7 +58,7 @@ public class TestZKPathDataDumpTask extends ZkUnitTestBase {
"MasterSlave", true); // do rebalance
HelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
+ new ZKHelixDataAccessor(clusterName, _baseAccessor);
PropertyKey.Builder keyBuilder = accessor.keyBuilder();
BaseDataAccessor<ZNRecord> baseAccessor = accessor.getBaseDataAccessor();
@@ -122,7 +121,7 @@ public class TestZKPathDataDumpTask extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -132,7 +131,7 @@ public class TestZKPathDataDumpTask extends ZkUnitTestBase {
"MasterSlave", true); // do rebalance
HelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
+ new ZKHelixDataAccessor(clusterName, _baseAccessor);
PropertyKey.Builder keyBuilder = accessor.keyBuilder();
BaseDataAccessor<ZNRecord> baseAccessor = accessor.getBaseDataAccessor();
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestDropResourceMetricsReset.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestDropResourceMetricsReset.java b/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestDropResourceMetricsReset.java
index 17d45de..17e1837 100644
--- a/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestDropResourceMetricsReset.java
+++ b/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestDropResourceMetricsReset.java
@@ -31,15 +31,15 @@ import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import org.apache.helix.TestHelper;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.integration.manager.ClusterControllerManager;
import org.apache.helix.integration.manager.MockParticipantManager;
import org.apache.helix.model.IdealState.RebalanceMode;
+import org.apache.helix.testutil.ZkTestBase;
import org.apache.helix.tools.ClusterSetup;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestDropResourceMetricsReset extends ZkUnitTestBase {
+public class TestDropResourceMetricsReset extends ZkTestBase {
private final CountDownLatch _registerLatch = new CountDownLatch(1);
private final CountDownLatch _unregisterLatch = new CountDownLatch(1);
@@ -59,7 +59,7 @@ public class TestDropResourceMetricsReset extends ZkUnitTestBase {
new ParticipantMonitorListener("ClusterStatus", clusterName, RESOURCE_NAME);
// Set up cluster
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -70,15 +70,15 @@ public class TestDropResourceMetricsReset extends ZkUnitTestBase {
true); // do rebalance
// Start participants and controller
- ClusterSetup setupTool = new ClusterSetup(_gZkClient);
+ ClusterSetup setupTool = new ClusterSetup(_zkclient);
MockParticipantManager[] participants = new MockParticipantManager[NUM_PARTICIPANTS];
for (int i = 0; i < NUM_PARTICIPANTS; i++) {
participants[i] =
- new MockParticipantManager(ZK_ADDR, clusterName, "localhost_" + (12918 + i));
+ new MockParticipantManager(_zkaddr, clusterName, "localhost_" + (12918 + i));
participants[i].syncStart();
}
ClusterControllerManager controller =
- new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
+ new ClusterControllerManager(_zkaddr, clusterName, "controller_0");
controller.syncStart();
// Verify that the bean was created
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResetClusterMetrics.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResetClusterMetrics.java b/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResetClusterMetrics.java
index 74f84e8..5497138 100644
--- a/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResetClusterMetrics.java
+++ b/helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestResetClusterMetrics.java
@@ -27,15 +27,15 @@ import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.apache.helix.TestHelper;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.integration.manager.ClusterControllerManager;
import org.apache.helix.integration.manager.MockParticipantManager;
import org.apache.helix.model.IdealState.RebalanceMode;
+import org.apache.helix.testutil.ZkTestBase;
import org.apache.helix.tools.ClusterStateVerifier;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestResetClusterMetrics extends ZkUnitTestBase {
+public class TestResetClusterMetrics extends ZkTestBase {
/**
* Ensure cluster status lifecycle is tied to controller leader status
*/
@@ -46,24 +46,24 @@ public class TestResetClusterMetrics extends ZkUnitTestBase {
String clusterName = className + "_" + methodName;
// Set up a cluster with one of everything
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, "localhost", "Resource", 1, 1, 1, 1,
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, "localhost", "Resource", 1, 1, 1, 1,
"OnlineOffline", RebalanceMode.FULL_AUTO, true);
// Add a participant
MockParticipantManager participant =
- new MockParticipantManager(ZK_ADDR, clusterName, "localhost_12918");
+ new MockParticipantManager(_zkaddr, clusterName, "localhost_12918");
participant.syncStart();
// Add a controller
ClusterControllerManager controller =
- new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
+ new ClusterControllerManager(_zkaddr, clusterName, "controller_0");
controller.syncStart();
// Make sure everything gets assigned
Thread.sleep(1000);
boolean result =
ClusterStateVerifier
- .verifyByZkCallback(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR,
+ .verifyByZkCallback(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(_zkaddr,
clusterName));
Assert.assertTrue(result);
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerElection.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerElection.java b/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerElection.java
index 2e175d5..de510c1 100644
--- a/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerElection.java
+++ b/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerElection.java
@@ -32,40 +32,40 @@ import org.apache.helix.PropertyPathConfig;
import org.apache.helix.PropertyType;
import org.apache.helix.TestHelper;
import org.apache.helix.ZNRecord;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.controller.GenericHelixController;
import org.apache.helix.manager.zk.DistributedLeaderElection;
import org.apache.helix.manager.zk.ZKHelixDataAccessor;
-import org.apache.helix.manager.zk.ZkBaseDataAccessor;
import org.apache.helix.model.LiveInstance;
+import org.apache.helix.testutil.TestUtil;
+import org.apache.helix.testutil.ZkTestBase;
import org.apache.log4j.Logger;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
-public class TestDistControllerElection extends ZkUnitTestBase {
+public class TestDistControllerElection extends ZkTestBase {
private static Logger LOG = Logger.getLogger(TestDistControllerElection.class);
@Test()
public void testController() throws Exception {
System.out.println("START TestDistControllerElection at "
+ new Date(System.currentTimeMillis()));
- String className = getShortClassName();
+ String className = TestUtil.getTestName();
- final String clusterName = CLUSTER_PREFIX + "_" + className + "_" + "testController";
+ final String clusterName = className;
String path = "/" + clusterName;
- if (_gZkClient.exists(path)) {
- _gZkClient.deleteRecursive(path);
+ if (_zkclient.exists(path)) {
+ _zkclient.deleteRecursive(path);
}
ZKHelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_gZkClient));
+ new ZKHelixDataAccessor(clusterName, _baseAccessor);
Builder keyBuilder = accessor.keyBuilder();
- TestHelper.setupEmptyCluster(_gZkClient, clusterName);
+ TestHelper.setupEmptyCluster(_zkclient, clusterName);
final String controllerName = "controller_0";
HelixManager manager =
- new MockZKHelixManager(clusterName, controllerName, InstanceType.CONTROLLER, _gZkClient);
+ new MockZKHelixManager(clusterName, controllerName, InstanceType.CONTROLLER, _zkclient);
GenericHelixController controller0 = new GenericHelixController();
List<HelixTimerTask> timerTasks = Collections.emptyList();
@@ -76,20 +76,20 @@ public class TestDistControllerElection extends ZkUnitTestBase {
election.onControllerChange(context);
// path = PropertyPathConfig.getPath(PropertyType.LEADER, clusterName);
- // ZNRecord leaderRecord = _gZkClient.<ZNRecord> readData(path);
+ // ZNRecord leaderRecord = zkclient.<ZNRecord> readData(path);
LiveInstance liveInstance = accessor.getProperty(keyBuilder.controllerLeader());
AssertJUnit.assertEquals(controllerName, liveInstance.getInstanceName());
// AssertJUnit.assertNotNull(election.getController());
// AssertJUnit.assertNull(election.getLeader());
manager =
- new MockZKHelixManager(clusterName, "controller_1", InstanceType.CONTROLLER, _gZkClient);
+ new MockZKHelixManager(clusterName, "controller_1", InstanceType.CONTROLLER, _zkclient);
GenericHelixController controller1 = new GenericHelixController();
election = new DistributedLeaderElection(manager, controller1, timerTasks);
context = new NotificationContext(manager);
context.setType(NotificationContext.Type.INIT);
election.onControllerChange(context);
- // leaderRecord = _gZkClient.<ZNRecord> readData(path);
+ // leaderRecord = zkclient.<ZNRecord> readData(path);
liveInstance = accessor.getProperty(keyBuilder.controllerLeader());
AssertJUnit.assertEquals(controllerName, liveInstance.getInstanceName());
// AssertJUnit.assertNull(election.getController());
@@ -100,26 +100,26 @@ public class TestDistControllerElection extends ZkUnitTestBase {
@Test()
public void testControllerParticipant() throws Exception {
- String className = getShortClassName();
+ String className = TestUtil.getTestName();
LOG.info("RUN " + className + " at " + new Date(System.currentTimeMillis()));
- final String clusterName =
- CONTROLLER_CLUSTER_PREFIX + "_" + className + "_" + "testControllerParticipant";
+ final String clusterName = className;
+
String path = "/" + clusterName;
- if (_gZkClient.exists(path)) {
- _gZkClient.deleteRecursive(path);
+ if (_zkclient.exists(path)) {
+ _zkclient.deleteRecursive(path);
}
ZKHelixDataAccessor accessor =
- new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_gZkClient));
+ new ZKHelixDataAccessor(clusterName, _baseAccessor);
Builder keyBuilder = accessor.keyBuilder();
- TestHelper.setupEmptyCluster(_gZkClient, clusterName);
+ TestHelper.setupEmptyCluster(_zkclient, clusterName);
final String controllerName = "controller_0";
HelixManager manager =
new MockZKHelixManager(clusterName, controllerName, InstanceType.CONTROLLER_PARTICIPANT,
- _gZkClient);
+ _zkclient);
GenericHelixController controller0 = new GenericHelixController();
List<HelixTimerTask> timerTasks = Collections.emptyList();
@@ -133,14 +133,14 @@ public class TestDistControllerElection extends ZkUnitTestBase {
AssertJUnit.assertEquals(controllerName, liveInstance.getInstanceName());
// path = PropertyPathConfig.getPath(PropertyType.LEADER, clusterName);
- // ZNRecord leaderRecord = _gZkClient.<ZNRecord> readData(path);
+ // ZNRecord leaderRecord = zkclient.<ZNRecord> readData(path);
// AssertJUnit.assertEquals(controllerName, leaderRecord.getSimpleField("LEADER"));
// AssertJUnit.assertNotNull(election.getController());
// AssertJUnit.assertNotNull(election.getLeader());
manager =
new MockZKHelixManager(clusterName, "controller_1", InstanceType.CONTROLLER_PARTICIPANT,
- _gZkClient);
+ _zkclient);
GenericHelixController controller1 = new GenericHelixController();
election = new DistributedLeaderElection(manager, controller1, timerTasks);
context = new NotificationContext(manager);
@@ -150,29 +150,29 @@ public class TestDistControllerElection extends ZkUnitTestBase {
liveInstance = accessor.getProperty(keyBuilder.controllerLeader());
AssertJUnit.assertEquals(controllerName, liveInstance.getInstanceName());
- // leaderRecord = _gZkClient.<ZNRecord> readData(path);
+ // leaderRecord = zkclient.<ZNRecord> readData(path);
// AssertJUnit.assertEquals(controllerName, leaderRecord.getSimpleField("LEADER"));
// AssertJUnit.assertNull(election.getController());
// AssertJUnit.assertNull(election.getLeader());
- LOG.info("END " + getShortClassName() + " at " + new Date(System.currentTimeMillis()));
+ LOG.info("END " + className + " at " + new Date(System.currentTimeMillis()));
}
@Test()
public void testParticipant() throws Exception {
- String className = getShortClassName();
+ String className = TestUtil.getTestName();
LOG.info("RUN " + className + " at " + new Date(System.currentTimeMillis()));
- final String clusterName = CLUSTER_PREFIX + "_" + className + "_" + "testParticipant";
+ final String clusterName = className;
String path = "/" + clusterName;
- if (_gZkClient.exists(path)) {
- _gZkClient.deleteRecursive(path);
+ if (_zkclient.exists(path)) {
+ _zkclient.deleteRecursive(path);
}
- TestHelper.setupEmptyCluster(_gZkClient, clusterName);
+ TestHelper.setupEmptyCluster(_zkclient, clusterName);
final String controllerName = "participant_0";
HelixManager manager =
- new MockZKHelixManager(clusterName, controllerName, InstanceType.PARTICIPANT, _gZkClient);
+ new MockZKHelixManager(clusterName, controllerName, InstanceType.PARTICIPANT, _zkclient);
GenericHelixController participant0 = new GenericHelixController();
List<HelixTimerTask> timerTasks = Collections.emptyList();
@@ -183,7 +183,7 @@ public class TestDistControllerElection extends ZkUnitTestBase {
election.onControllerChange(context);
path = PropertyPathConfig.getPath(PropertyType.LEADER, clusterName);
- ZNRecord leaderRecord = _gZkClient.<ZNRecord> readData(path, true);
+ ZNRecord leaderRecord = _zkclient.<ZNRecord> readData(path, true);
AssertJUnit.assertNull(leaderRecord);
// AssertJUnit.assertNull(election.getController());
// AssertJUnit.assertNull(election.getLeader());
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModel.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModel.java b/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModel.java
index 9036cf3..116cd72 100644
--- a/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModel.java
+++ b/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModel.java
@@ -21,29 +21,29 @@ package org.apache.helix.participant;
import org.apache.helix.NotificationContext;
import org.apache.helix.TestHelper;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.api.id.MessageId;
import org.apache.helix.api.id.PartitionId;
import org.apache.helix.model.Message;
import org.apache.helix.model.Message.MessageType;
import org.apache.helix.participant.DistClusterControllerStateModel;
+import org.apache.helix.testutil.ZkTestBase;
import org.apache.log4j.Logger;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-public class TestDistControllerStateModel extends ZkUnitTestBase {
+public class TestDistControllerStateModel extends ZkTestBase {
private static Logger LOG = Logger.getLogger(TestDistControllerStateModel.class);
- final String clusterName = CLUSTER_PREFIX + "_" + getShortClassName();
+ final String clusterName = "TestDistControllerStateModel";
DistClusterControllerStateModel stateModel = null;
@BeforeMethod()
public void beforeMethod() {
- stateModel = new DistClusterControllerStateModel(ZK_ADDR);
- if (_gZkClient.exists("/" + clusterName)) {
- _gZkClient.deleteRecursive("/" + clusterName);
+ stateModel = new DistClusterControllerStateModel(_zkaddr);
+ if (_zkclient.exists("/" + clusterName)) {
+ _zkclient.deleteRecursive("/" + clusterName);
}
- TestHelper.setupEmptyCluster(_gZkClient, clusterName);
+ TestHelper.setupEmptyCluster(_zkclient, clusterName);
}
@Test()
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModelFactory.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModelFactory.java b/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModelFactory.java
index 43ffb9a..26d65f0 100644
--- a/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModelFactory.java
+++ b/helix-core/src/test/java/org/apache/helix/participant/TestDistControllerStateModelFactory.java
@@ -19,18 +19,14 @@ package org.apache.helix.participant;
* under the License.
*/
-import org.apache.helix.ZkUnitTestBase;
import org.testng.annotations.Test;
public class TestDistControllerStateModelFactory {
- final String zkAddr = ZkUnitTestBase.ZK_ADDR;
- @Test(groups = {
- "unitTest"
- })
+ @Test()
public void testDistControllerStateModelFactory() {
DistClusterControllerStateModelFactory factory =
- new DistClusterControllerStateModelFactory(zkAddr);
+ new DistClusterControllerStateModelFactory("localhost:2181");
DistClusterControllerStateModel stateModel = factory.createNewStateModel("key");
stateModel.onBecomeStandbyFromOffline(null, null);
}
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/store/zk/TestAutoFallbackPropertyStore.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/store/zk/TestAutoFallbackPropertyStore.java b/helix-core/src/test/java/org/apache/helix/store/zk/TestAutoFallbackPropertyStore.java
index 8bb1686..54ea3a9 100644
--- a/helix-core/src/test/java/org/apache/helix/store/zk/TestAutoFallbackPropertyStore.java
+++ b/helix-core/src/test/java/org/apache/helix/store/zk/TestAutoFallbackPropertyStore.java
@@ -28,13 +28,13 @@ import org.apache.helix.AccessOption;
import org.apache.helix.PropertyType;
import org.apache.helix.TestHelper;
import org.apache.helix.ZNRecord;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.manager.zk.ZkBaseDataAccessor;
+import org.apache.helix.testutil.ZkTestBase;
import org.apache.zookeeper.data.Stat;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
+public class TestAutoFallbackPropertyStore extends ZkTestBase {
class MyDataUpdater implements DataUpdater<ZNRecord> {
final String _id;
@@ -63,7 +63,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0 under fallbackRoot
for (int i = 0; i < 1; i++) {
@@ -108,7 +108,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0 under both fallbackRoot and root
for (int i = 0; i < 1; i++) {
@@ -154,7 +154,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0-9 under fallbackRoot
for (int i = 0; i < 10; i++) {
@@ -208,7 +208,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0-9 under both fallbackRoot and new root
for (int i = 0; i < 10; i++) {
@@ -282,7 +282,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0 under fallbackRoot
for (int i = 0; i < 1; i++) {
@@ -322,7 +322,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0-9 under fallbackRoot
for (int i = 0; i < 10; i++) {
@@ -371,7 +371,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0 under fallbackRoot
for (int i = 0; i < 1; i++) {
@@ -416,7 +416,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0-9 under fallbackRoot
for (int i = 0; i < 10; i++) {
@@ -474,7 +474,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
AutoFallbackPropertyStore<ZNRecord> store =
new AutoFallbackPropertyStore<ZNRecord>(baseAccessor, root, fallbackRoot);
@@ -509,7 +509,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0-9 under fallbackRoot
for (int i = 0; i < 10; i++) {
@@ -584,7 +584,7 @@ public class TestAutoFallbackPropertyStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
String root = String.format("/%s/%s", clusterName, PropertyType.PROPERTYSTORE.name());
String fallbackRoot = String.format("/%s/%s", clusterName, "HELIX_PROPERTYSTORE");
- ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+ ZkBaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
// create 0-9 under fallbackRoot and 10-19 under root
for (int i = 0; i < 20; i++) {
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java b/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java
index b07cf8f..0dfe696 100644
--- a/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java
+++ b/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java
@@ -30,15 +30,15 @@ import java.util.TreeMap;
import org.I0Itec.zkclient.exception.ZkNoNodeException;
import org.apache.helix.AccessOption;
import org.apache.helix.ZNRecord;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.manager.zk.ZkBaseDataAccessor;
import org.apache.helix.manager.zk.ZkClient;
import org.apache.helix.store.HelixPropertyListener;
+import org.apache.helix.testutil.ZkTestBase;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestZkHelixPropertyStore extends ZkUnitTestBase {
- final String _root = "/" + getShortClassName();
+public class TestZkHelixPropertyStore extends ZkTestBase {
+ final String _root = "/TestZkHelixPropertyStore";
final int bufSize = 128;
final int mapNr = 10;
final int firstLevelNr = 10;
@@ -83,7 +83,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
List<String> subscribedPaths = new ArrayList<String>();
subscribedPaths.add(subRoot);
ZkHelixPropertyStore<ZNRecord> store =
- new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_gZkClient), subRoot,
+ new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_zkclient), subRoot,
subscribedPaths);
// test set
@@ -117,7 +117,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
public void testSetInvalidPath() {
String subRoot = _root + "/" + "setInvalidPath";
ZkHelixPropertyStore<ZNRecord> store =
- new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_gZkClient), subRoot,
+ new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_zkclient), subRoot,
null);
try {
store.set("abc/xyz", new ZNRecord("testInvalid"), AccessOption.PERSISTENT);
@@ -139,7 +139,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
List<String> subscribedPaths = new ArrayList<String>();
subscribedPaths.add(subRoot);
ZkHelixPropertyStore<ZNRecord> store =
- new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_gZkClient), subRoot,
+ new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_zkclient), subRoot,
subscribedPaths);
// change nodes via property store interface
@@ -200,7 +200,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
String subRoot = _root + "/" + "zkCallback";
List<String> subscribedPaths = Arrays.asList(subRoot);
ZkHelixPropertyStore<ZNRecord> store =
- new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_gZkClient), subRoot,
+ new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_zkclient), subRoot,
subscribedPaths);
// change nodes via property store interface
@@ -210,7 +210,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
// test create callbacks
listener.reset();
- setNodes(_gZkClient, subRoot, 'a', true);
+ setNodes(_zkclient, subRoot, 'a', true);
int expectCreateNodes = 1 + firstLevelNr + firstLevelNr * secondLevelNr;
Thread.sleep(500);
@@ -221,7 +221,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
// test change callbacks
listener.reset();
- setNodes(_gZkClient, subRoot, 'b', true);
+ setNodes(_zkclient, subRoot, 'b', true);
int expectChangeNodes = firstLevelNr * secondLevelNr;
for (int i = 0; i < 10; i++) {
if (listener._changeKeys.size() >= expectChangeNodes)
@@ -237,7 +237,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
// test delete callbacks
listener.reset();
int expectDeleteNodes = 1 + firstLevelNr + firstLevelNr * secondLevelNr;
- _gZkClient.deleteRecursive(subRoot);
+ _zkclient.deleteRecursive(subRoot);
Thread.sleep(1000);
System.out.println("createKey#:" + listener._createKeys.size() + ", changeKey#:"
@@ -258,7 +258,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
List<String> subscribedPaths = new ArrayList<String>();
subscribedPaths.add(subRoot);
ZkHelixPropertyStore<ZNRecord> store =
- new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_gZkClient), subRoot,
+ new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_zkclient), subRoot,
subscribedPaths);
store.set("/child0", new ZNRecord("child0"), AccessOption.PERSISTENT);
@@ -269,8 +269,8 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
String child0Path = subRoot + "/child0";
for (int i = 0; i < 2; i++) {
- _gZkClient.delete(child0Path);
- _gZkClient.createPersistent(child0Path, new ZNRecord("child0-new-" + i));
+ _zkclient.delete(child0Path);
+ _zkclient.createPersistent(child0Path, new ZNRecord("child0-new-" + i));
}
Thread.sleep(500); // should wait for zk callback to add "/child0" into cache
@@ -279,7 +279,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase {
.assertEquals(record.getId(), "child0-new-1", "Cache shoulde be updated to latest create");
// System.out.println("2:get:" + record);
- _gZkClient.delete(child0Path);
+ _zkclient.delete(child0Path);
Thread.sleep(500); // should wait for zk callback to remove "/child0" from cache
try {
record = store.get("/child0", null, AccessOption.THROW_EXCEPTION_IFNOTEXIST);
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/store/zk/TestZkManagerWithAutoFallbackStore.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/store/zk/TestZkManagerWithAutoFallbackStore.java b/helix-core/src/test/java/org/apache/helix/store/zk/TestZkManagerWithAutoFallbackStore.java
index f2f8b35..3e5e068 100644
--- a/helix-core/src/test/java/org/apache/helix/store/zk/TestZkManagerWithAutoFallbackStore.java
+++ b/helix-core/src/test/java/org/apache/helix/store/zk/TestZkManagerWithAutoFallbackStore.java
@@ -26,12 +26,12 @@ import org.apache.helix.AccessOption;
import org.apache.helix.BaseDataAccessor;
import org.apache.helix.TestHelper;
import org.apache.helix.ZNRecord;
-import org.apache.helix.ZkUnitTestBase;
import org.apache.helix.integration.manager.MockParticipantManager;
+import org.apache.helix.testutil.ZkTestBase;
import org.testng.Assert;
import org.testng.annotations.Test;
-public class TestZkManagerWithAutoFallbackStore extends ZkUnitTestBase {
+public class TestZkManagerWithAutoFallbackStore extends ZkTestBase {
@Test
public void testBasic() throws Exception {
// Logger.getRootLogger().setLevel(Level.INFO);
@@ -42,7 +42,7 @@ public class TestZkManagerWithAutoFallbackStore extends ZkUnitTestBase {
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
- TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+ TestHelper.setupCluster(clusterName, _zkaddr, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
@@ -56,7 +56,7 @@ public class TestZkManagerWithAutoFallbackStore extends ZkUnitTestBase {
for (int i = 0; i < 1; i++) {
String instanceName = "localhost_" + (12918 + i);
- participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+ participants[i] = new MockParticipantManager(_zkaddr, clusterName, instanceName);
participants[i].syncStart();
}
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/testutil/HelixTestUtil.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/testutil/HelixTestUtil.java b/helix-core/src/test/java/org/apache/helix/testutil/HelixTestUtil.java
new file mode 100644
index 0000000..32106e1
--- /dev/null
+++ b/helix-core/src/test/java/org/apache/helix/testutil/HelixTestUtil.java
@@ -0,0 +1,240 @@
+package org.apache.helix.testutil;
+
+/*
+ * 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.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.helix.BaseDataAccessor;
+import org.apache.helix.HelixDataAccessor;
+import org.apache.helix.HelixProperty;
+import org.apache.helix.PropertyKey;
+import org.apache.helix.ZNRecord;
+import org.apache.helix.api.State;
+import org.apache.helix.api.id.MessageId;
+import org.apache.helix.api.id.StateModelDefId;
+import org.apache.helix.controller.pipeline.Pipeline;
+import org.apache.helix.controller.pipeline.Stage;
+import org.apache.helix.controller.pipeline.StageContext;
+import org.apache.helix.controller.stages.ClusterEvent;
+import org.apache.helix.manager.zk.ZKHelixDataAccessor;
+import org.apache.helix.manager.zk.ZkBaseDataAccessor;
+import org.apache.helix.manager.zk.ZkClient;
+import org.apache.helix.model.CurrentState;
+import org.apache.helix.model.ExternalView;
+import org.apache.helix.model.IdealState;
+import org.apache.helix.model.IdealState.RebalanceMode;
+import org.apache.helix.model.InstanceConfig;
+import org.apache.helix.model.LiveInstance;
+import org.apache.helix.model.Message;
+import org.apache.helix.model.Message.Attributes;
+import org.apache.helix.model.Message.MessageType;
+import org.apache.helix.model.StateModelDefinition;
+import org.apache.helix.tools.ClusterStateVerifier.ZkVerifier;
+import org.apache.helix.tools.StateModelConfigGenerator;
+import org.apache.log4j.Logger;
+
+public class HelixTestUtil {
+ private static Logger LOG = Logger.getLogger(HelixTestUtil.class);
+
+ /**
+ * Ensures that external view and current state are empty
+ */
+ public static class EmptyZkVerifier extends ZkVerifier {
+ private final String _resourceName;
+
+ /**
+ * Instantiate the verifier
+ * @param clusterName the cluster to verify
+ * @param resourceName the resource to verify
+ */
+ public EmptyZkVerifier(String clusterName, String resourceName, ZkClient zkclient) {
+ super(clusterName, zkclient);
+ _resourceName = resourceName;
+ }
+
+ @Override
+ public boolean verify() {
+ BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(getZkClient());
+ HelixDataAccessor accessor = new ZKHelixDataAccessor(getClusterName(), baseAccessor);
+ PropertyKey.Builder keyBuilder = accessor.keyBuilder();
+ ExternalView externalView = accessor.getProperty(keyBuilder.externalView(_resourceName));
+
+ // verify external view empty
+ if (externalView != null) {
+ for (String partition : externalView.getPartitionSet()) {
+ Map<String, String> stateMap = externalView.getStateMap(partition);
+ if (stateMap != null && !stateMap.isEmpty()) {
+ LOG.error("External view not empty for " + partition);
+ return false;
+ }
+ }
+ }
+
+ // verify current state empty
+ List<String> liveParticipants = accessor.getChildNames(keyBuilder.liveInstances());
+ for (String participant : liveParticipants) {
+ List<String> sessionIds = accessor.getChildNames(keyBuilder.sessions(participant));
+ for (String sessionId : sessionIds) {
+ CurrentState currentState =
+ accessor.getProperty(keyBuilder.currentState(participant, sessionId, _resourceName));
+ Map<String, String> partitionStateMap = currentState.getPartitionStateMap();
+ if (partitionStateMap != null && !partitionStateMap.isEmpty()) {
+ LOG.error("Current state not empty for " + participant);
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+ }
+
+ /**
+ * Poll for the existence (or lack thereof) of a specific Helix property
+ * @param clazz the HelixProeprty subclass
+ * @param accessor connected HelixDataAccessor
+ * @param key the property key to look up
+ * @param shouldExist true if the property should exist, false otherwise
+ * @return the property if found, or null if it does not exist
+ */
+ public static <T extends HelixProperty> T pollForProperty(Class<T> clazz,
+ HelixDataAccessor accessor, PropertyKey key, boolean shouldExist) throws InterruptedException {
+ final int POLL_TIMEOUT = 5000;
+ final int POLL_INTERVAL = 50;
+ T property = accessor.getProperty(key);
+ int timeWaited = 0;
+ while (((shouldExist && property == null) || (!shouldExist && property != null))
+ && timeWaited < POLL_TIMEOUT) {
+ Thread.sleep(POLL_INTERVAL);
+ timeWaited += POLL_INTERVAL;
+ property = accessor.getProperty(key);
+ }
+ return property;
+ }
+
+ public static void setupStateModel(BaseDataAccessor<ZNRecord> baseAccessor, String clusterName) {
+ ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor);
+ PropertyKey.Builder keyBuilder = accessor.keyBuilder();
+
+ StateModelDefinition masterSlave =
+ new StateModelDefinition(StateModelConfigGenerator.generateConfigForMasterSlave());
+ accessor.setProperty(keyBuilder.stateModelDef(masterSlave.getId()), masterSlave);
+
+ StateModelDefinition leaderStandby =
+ new StateModelDefinition(StateModelConfigGenerator.generateConfigForLeaderStandby());
+ accessor.setProperty(keyBuilder.stateModelDef(leaderStandby.getId()), leaderStandby);
+
+ StateModelDefinition onlineOffline =
+ new StateModelDefinition(StateModelConfigGenerator.generateConfigForOnlineOffline());
+ accessor.setProperty(keyBuilder.stateModelDef(onlineOffline.getId()), onlineOffline);
+ }
+
+ public static List<IdealState> setupIdealState(BaseDataAccessor<ZNRecord> baseAccessor,
+ String clusterName, int[] nodes, String[] resources, int partitions, int replicas) {
+ ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor);
+ PropertyKey.Builder keyBuilder = accessor.keyBuilder();
+
+ List<IdealState> idealStates = new ArrayList<IdealState>();
+ List<String> instances = new ArrayList<String>();
+ for (int i : nodes) {
+ instances.add("localhost_" + i);
+ }
+
+ for (String resourceName : resources) {
+ IdealState idealState = new IdealState(resourceName);
+ for (int p = 0; p < partitions; p++) {
+ List<String> value = new ArrayList<String>();
+ for (int r = 0; r < replicas; r++) {
+ int n = nodes[(p + r) % nodes.length];
+ value.add("localhost_" + n);
+ }
+ idealState.getRecord().setListField(resourceName + "_" + p, value);
+ }
+
+ idealState.setReplicas(Integer.toString(replicas));
+ idealState.setStateModelDefId(StateModelDefId.from("MasterSlave"));
+ idealState.setRebalanceMode(RebalanceMode.SEMI_AUTO);
+ idealState.setNumPartitions(partitions);
+ idealStates.add(idealState);
+
+ // System.out.println(idealState);
+ accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
+ }
+ return idealStates;
+ }
+
+ public static void setupLiveInstances(BaseDataAccessor<ZNRecord> baseAccessor,
+ String clusterName, int[] liveInstances) {
+ ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor);
+ PropertyKey.Builder keyBuilder = accessor.keyBuilder();
+
+ for (int i = 0; i < liveInstances.length; i++) {
+ String instance = "localhost_" + liveInstances[i];
+ LiveInstance liveInstance = new LiveInstance(instance);
+ liveInstance.setSessionId("session_" + liveInstances[i]);
+ liveInstance.setHelixVersion("0.4.0");
+ accessor.setProperty(keyBuilder.liveInstance(instance), liveInstance);
+ }
+ }
+
+ public static void setupInstances(BaseDataAccessor<ZNRecord> baseAccessor, String clusterName,
+ int[] instances) {
+ ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor);
+ PropertyKey.Builder keyBuilder = accessor.keyBuilder();
+ for (int i = 0; i < instances.length; i++) {
+ String instance = "localhost_" + instances[i];
+ InstanceConfig instanceConfig = new InstanceConfig(instance);
+ instanceConfig.setHostName("localhost");
+ instanceConfig.setPort("" + instances[i]);
+ instanceConfig.setInstanceEnabled(true);
+ accessor.setProperty(keyBuilder.instanceConfig(instance), instanceConfig);
+ }
+ }
+
+ public static void runPipeline(ClusterEvent event, Pipeline pipeline) {
+ try {
+ pipeline.handle(event);
+ pipeline.finish();
+ } catch (Exception e) {
+ LOG.error("Exception while executing pipeline:" + pipeline
+ + ". Will not continue to next pipeline", e);
+ }
+ }
+
+
+ public static void runStage(ClusterEvent event, Stage stage) throws Exception {
+ StageContext context = new StageContext();
+ stage.init(context);
+ stage.preProcess();
+ stage.process(event);
+ stage.postProcess();
+ }
+
+ public static Message newMessage(MessageType type, MessageId msgId, String fromState,
+ String toState, String resourceName, String tgtName) {
+ Message msg = new Message(type.toString(), msgId);
+ msg.setFromState(State.from(fromState));
+ msg.setToState(State.from(toState));
+ msg.getRecord().setSimpleField(Attributes.RESOURCE_NAME.toString(), resourceName);
+ msg.setTgtName(tgtName);
+ return msg;
+ }
+}
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/testutil/TestUtil.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/testutil/TestUtil.java b/helix-core/src/test/java/org/apache/helix/testutil/TestUtil.java
new file mode 100644
index 0000000..bc62fca
--- /dev/null
+++ b/helix-core/src/test/java/org/apache/helix/testutil/TestUtil.java
@@ -0,0 +1,79 @@
+package org.apache.helix.testutil;
+
+/*
+ * 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.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+
+import org.apache.log4j.Logger;
+
+public class TestUtil {
+ static Logger logger = Logger.getLogger(TestUtil.class);
+
+ public static boolean isTestNGAnnotated(Class clazz, String methodName) {
+ final String annotationsPkgName = "org.testng.annotations";
+
+ // Check if the class itself is annotated.
+ Annotation[] classAnnotations = clazz.getAnnotations();
+ for (Annotation a : classAnnotations) {
+ if (a.annotationType().getPackage().getName().equals(annotationsPkgName)) {
+ return true;
+ }
+ }
+
+ // Check if given method is annotated.
+ Method[] methods = clazz.getMethods();
+ for (Method m : methods) {
+ if (!m.getName().equals(methodName)) {
+ continue;
+ }
+ Annotation[] methodAnnotations = m.getAnnotations();
+ for (Annotation a : methodAnnotations) {
+ if (a.annotationType().getPackage().getName().equals(annotationsPkgName)) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public static String getTestName() {
+ try {
+ StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+
+ // The first 2 elements in the stack are getStackTrace and this method itself, so ignore them.
+ for (int i = 2; i < stackTrace.length; i++) {
+ Class clazz = Class.forName(stackTrace[i].getClassName());
+ if (isTestNGAnnotated(clazz, stackTrace[i].getMethodName())) {
+ String testName = String.format("%s_%s", clazz.getSimpleName(), stackTrace[i].getMethodName());
+ logger.debug("Detected " + testName + " as the test name");
+ return testName;
+ }
+ }
+ }
+ catch (ClassNotFoundException e) {
+ throw new RuntimeException("Error while trying to guess test name.", e);
+ }
+
+ // No TestNG annotated classes in the stack trace.
+ throw new RuntimeException("Unable to guess test name. No TestNG annotated classes or methods in stack trace.");
+ }
+}
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/testutil/ZkTestBase.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/testutil/ZkTestBase.java b/helix-core/src/test/java/org/apache/helix/testutil/ZkTestBase.java
new file mode 100644
index 0000000..a4caff6
--- /dev/null
+++ b/helix-core/src/test/java/org/apache/helix/testutil/ZkTestBase.java
@@ -0,0 +1,80 @@
+package org.apache.helix.testutil;
+
+/*
+ * 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 org.I0Itec.zkclient.ZkServer;
+import org.apache.helix.BaseDataAccessor;
+import org.apache.helix.ZNRecord;
+import org.apache.helix.manager.zk.ZNRecordSerializer;
+import org.apache.helix.manager.zk.ZkBaseDataAccessor;
+import org.apache.helix.manager.zk.ZkClient;
+import org.apache.helix.tools.ClusterSetup;
+import org.apache.helix.util.ZKClientPool;
+import org.apache.log4j.Logger;
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeSuite;
+
+public class ZkTestBase {
+ static Logger logger = Logger.getLogger(ZkTestBase.class);
+ static ZkServer zkserver;
+
+ // Used by tests
+ protected static ZkClient _zkclient;
+ protected static String _zkaddr;
+ protected static BaseDataAccessor<ZNRecord> _baseAccessor;
+ protected static ClusterSetup _setupTool;
+
+ public static synchronized void startZkServerIfNot() {
+ if (zkserver == null) {
+ zkserver = ZkTestUtil.startZkServer();
+ _zkaddr = "localhost:" + zkserver.getPort();
+ _zkclient =
+ new ZkClient(_zkaddr, ZkClient.DEFAULT_SESSION_TIMEOUT,
+ ZkClient.DEFAULT_CONNECTION_TIMEOUT, new ZNRecordSerializer());
+
+ _baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkclient);
+ _setupTool = new ClusterSetup(_zkclient);
+
+ ZKClientPool.reset();
+ }
+ }
+
+ public static synchronized void stopZkServer() {
+ if (zkserver != null) {
+ _baseAccessor = null;
+ _zkclient.close();
+ _zkclient = null;
+ _setupTool = null;
+ _zkaddr = null;
+ zkserver.shutdown();
+ zkserver = null;
+ }
+ }
+
+ @BeforeSuite
+ public void beforeSuite() {
+ startZkServerIfNot();
+ }
+
+ @AfterSuite
+ public void afterSuite() {
+ stopZkServer();
+ }
+}
http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/testutil/ZkTestUtil.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/testutil/ZkTestUtil.java b/helix-core/src/test/java/org/apache/helix/testutil/ZkTestUtil.java
new file mode 100644
index 0000000..019aa9b
--- /dev/null
+++ b/helix-core/src/test/java/org/apache/helix/testutil/ZkTestUtil.java
@@ -0,0 +1,99 @@
+package org.apache.helix.testutil;
+
+/*
+ * 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.File;
+import java.io.IOException;
+import java.net.ServerSocket;
+
+import org.I0Itec.zkclient.IDefaultNameSpace;
+import org.I0Itec.zkclient.NetworkUtil;
+import org.I0Itec.zkclient.ZkServer;
+import org.apache.log4j.Logger;
+
+import com.google.common.io.Files;
+
+public class ZkTestUtil {
+ static Logger logger = Logger.getLogger(ZkTestUtil.class);
+ static final int MAX_PORT = 65535;
+ static final int DEFAULT_ZK_START_PORT = 2183;
+
+ public static int availableTcpPort() {
+ ServerSocket ss = null;
+ try {
+ ss = new ServerSocket(0);
+ ss.setReuseAddress(true);
+ return ss.getLocalPort();
+ } catch (IOException e) {
+
+ } finally {
+ if (ss != null) {
+ try {
+ ss.close();
+ } catch (IOException e) {
+ // should not be thrown
+ }
+ }
+ }
+ return -1;
+ }
+
+ public static int availableTcpPort(int startPort) {
+ int port = startPort;
+ for (; port <= MAX_PORT; port++) {
+ if (NetworkUtil.isPortFree(port))
+ break;
+ }
+
+ return port > MAX_PORT ? -1 : port;
+ }
+
+ public static File createAutoDeleteTempDir() {
+ File tempdir = Files.createTempDir();
+ tempdir.delete();
+ tempdir.mkdir();
+ logger.info("Create temp dir: " + tempdir.getAbsolutePath());
+ tempdir.deleteOnExit();
+ return tempdir;
+ }
+
+ public static ZkServer startZkServer() {
+ File tmpdir = createAutoDeleteTempDir();
+ File logdir = new File(tmpdir + File.separator + "translog");
+ File datadir = new File(tmpdir + File.separator + "snapshot");
+
+ IDefaultNameSpace defaultNameSpace = new IDefaultNameSpace() {
+ @Override
+ public void createDefaultNameSpace(org.I0Itec.zkclient.ZkClient zkClient) {
+ // init any zk paths if needed
+ }
+ };
+ int port = availableTcpPort(DEFAULT_ZK_START_PORT);
+ ZkServer zkServer =
+ new ZkServer(datadir.getAbsolutePath(), logdir.getAbsolutePath(), defaultNameSpace, port);
+ zkServer.start();
+
+ logger.info("Start zookeeper at localhost:" + zkServer.getPort() + " in thread "
+ + Thread.currentThread().getName());
+
+ return zkServer;
+ }
+
+}