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:27 UTC

[9/9] git commit: [HELIX-475] Remove code duplication for Zk tests

[HELIX-475] Remove code duplication for Zk tests


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

Branch: refs/heads/master
Commit: 410815d0fbbdceaffa0664be69266b1c74a3e985
Parents: 3534e64
Author: zzhang <zz...@apache.org>
Authored: Mon Jul 21 15:27:19 2014 -0700
Committer: zzhang <zz...@apache.org>
Committed: Mon Jul 21 20:51:04 2014 -0700

----------------------------------------------------------------------
 .../org/apache/helix/webapp/AdminTestBase.java  |  37 +-
 .../webapp/TestClusterManagementWebapp.java     |   4 +-
 .../helix/webapp/TestDisableResource.java       |   8 +-
 .../webapp/TestHelixAdminScenariosRest.java     |  92 ++--
 .../apache/helix/webapp/TestResetInstance.java  |  12 +-
 .../helix/webapp/TestResetPartitionState.java   |  14 +-
 .../apache/helix/webapp/TestResetResource.java  |  12 +-
 .../org/apache/helix/agent/TestHelixAgent.java  |  14 +-
 .../helix/tools/ClusterStateVerifier.java       |  77 ++--
 .../org/apache/helix/TestConfigAccessor.java    |  11 +-
 .../apache/helix/TestHelixConfigAccessor.java   |  11 +-
 .../test/java/org/apache/helix/TestHelper.java  |  14 -
 .../apache/helix/TestHierarchicalDataStore.java |  23 +-
 .../org/apache/helix/TestListenerCallback.java  |   7 +-
 .../java/org/apache/helix/TestZKCallback.java   |  28 +-
 .../test/java/org/apache/helix/TestZkBasis.java |   7 +-
 .../org/apache/helix/TestZkClientWrapper.java   |   5 +-
 .../org/apache/helix/TestZkConnectionCount.java |   3 +-
 .../java/org/apache/helix/TestZnodeModify.java  |  22 +-
 .../java/org/apache/helix/ZkUnitTestBase.java   | 451 -------------------
 .../org/apache/helix/api/TestNewStages.java     |  14 +-
 .../api/accessor/TestAccessorRecreate.java      |  13 +-
 .../helix/api/accessor/TestAtomicAccessors.java |   9 +-
 .../stages/TestMessageThrottleStage.java        |  94 ++--
 .../stages/TestRebalancePipeline.java           | 118 +++--
 .../helix/integration/TestAddClusterV2.java     |  61 ++-
 .../TestAddNodeAfterControllerStart.java        |  60 +--
 .../TestAddStateModelFactoryAfterConnect.java   |  23 +-
 .../integration/TestAutoIsWithEmptyMap.java     |  15 +-
 .../helix/integration/TestAutoRebalance.java    |  62 +--
 .../TestAutoRebalancePartitionLimit.java        |  47 +-
 .../helix/integration/TestBasicSpectator.java   |   4 +-
 .../helix/integration/TestBatchMessage.java     |  63 +--
 .../integration/TestBatchMessageWrapper.java    |  16 +-
 .../integration/TestBucketizedResource.java     |  15 +-
 .../integration/TestCMWithFailParticipant.java  |  26 +-
 .../integration/TestCarryOverBadCurState.java   |  21 +-
 .../integration/TestCleanupExternalView.java    |  18 +-
 .../helix/integration/TestClusterStartsup.java  |  19 +-
 .../helix/integration/TestCustomIdealState.java |  44 +-
 .../TestCustomizedIdealStateRebalancer.java     |  23 +-
 .../apache/helix/integration/TestDisable.java   |  87 ++--
 .../TestDisableCustomCodeRunner.java            |  20 +-
 .../helix/integration/TestDisableNode.java      |  12 +-
 .../helix/integration/TestDisablePartition.java |  14 +-
 .../helix/integration/TestDisableResource.java  |  42 +-
 .../integration/TestDistributedCMMain.java      |  38 +-
 .../TestDistributedClusterController.java       |  27 +-
 .../apache/helix/integration/TestDriver.java    |  25 +-
 .../org/apache/helix/integration/TestDrop.java  | 109 +++--
 .../helix/integration/TestDropResource.java     |  16 +-
 .../TestEnablePartitionDuringDisable.java       |  17 +-
 .../integration/TestEntropyFreeNodeBounce.java  |  39 +-
 .../helix/integration/TestErrorPartition.java   |  32 +-
 .../helix/integration/TestExpandCluster.java    |   2 +-
 .../integration/TestExternalViewUpdates.java    |  23 +-
 .../integration/TestFullAutoNodeTagging.java    |  66 +--
 .../helix/integration/TestHelixConnection.java  |   7 +-
 .../integration/TestHelixCustomCodeRunner.java  |  19 +-
 .../helix/integration/TestHelixInstanceTag.java |   4 +-
 .../TestHelixUsingDifferentParams.java          |  17 +-
 .../helix/integration/TestInstanceAutoJoin.java |   6 +-
 .../integration/TestInvalidAutoIdealState.java  |  13 +-
 .../TestInvalidResourceRebalance.java           |  14 +-
 .../integration/TestLocalContainerProvider.java |   6 +-
 .../helix/integration/TestMessageThrottle.java  |  22 +-
 .../helix/integration/TestMessageThrottle2.java |  18 +-
 .../integration/TestNonOfflineInitState.java    |  29 +-
 .../helix/integration/TestNullReplica.java      |  15 +-
 .../TestParticipantErrorMessage.java            |   2 +-
 .../TestParticipantNameCollision.java           |   2 +-
 .../TestPartitionLevelTransitionConstraint.java |  20 +-
 .../helix/integration/TestPauseSignal.java      |  29 +-
 .../integration/TestPreferenceListAsQueue.java  |  22 +-
 .../integration/TestRedefineStateModelDef.java  |  22 +-
 .../TestReelectedPipelineCorrectness.java       |  26 +-
 .../helix/integration/TestRenamePartition.java  |  27 +-
 .../helix/integration/TestResetInstance.java    |  17 +-
 .../integration/TestResetPartitionState.java    |  27 +-
 .../helix/integration/TestResetResource.java    |  17 +-
 .../integration/TestRestartParticipant.java     |  20 +-
 .../helix/integration/TestSchedulerMessage.java |  20 +-
 .../helix/integration/TestSchemataSM.java       |  19 +-
 .../TestSessionExpiryInTransition.java          |  11 +-
 .../helix/integration/TestSharedConnection.java |  18 +-
 .../helix/integration/TestStandAloneCMMain.java |   8 +-
 .../TestStandAloneCMSessionExpiry.java          |  24 +-
 ...estStartMultipleControllersWithSameName.java |  10 +-
 .../integration/TestStateTransitionTimeout.java |  19 +-
 .../helix/integration/TestStatusUpdate.java     |   7 +-
 .../helix/integration/TestSwapInstance.java     |  12 +-
 .../TestUserDefRebalancerCompatibility.java     |   6 +-
 .../integration/TestZkCallbackHandlerLeak.java  |  38 +-
 .../helix/integration/TestZkReconnect.java      |   3 +-
 .../helix/integration/TestZkSessionExpiry.java  |  14 +-
 .../integration/ZkIntegrationTestBase.java      | 100 ----
 .../integration/ZkStandAloneCMTestBase.java     |  28 +-
 .../manager/TestConsecutiveZkSessionExpiry.java |  51 +--
 .../manager/TestControllerManager.java          |  22 +-
 .../TestDistributedControllerManager.java       |  38 +-
 .../manager/TestParticipantManager.java         |  35 +-
 .../integration/manager/TestStateModelLeak.java |  28 +-
 .../manager/TestZkCallbackHandlerLeak.java      |  38 +-
 .../task/TestIndependentTaskRebalancer.java     |  30 +-
 .../integration/task/TestTaskRebalancer.java    |  34 +-
 .../task/TestTaskRebalancerStopResume.java      |  36 +-
 .../apache/helix/lock/zk/TestZKHelixLock.java   |  10 +-
 .../helix/manager/zk/TestHandleNewSession.java  |   8 +-
 .../manager/zk/TestLiveInstanceBounce.java      |   6 +-
 .../zk/TestWtCacheAsyncOpMultiThread.java       |  14 +-
 .../zk/TestWtCacheAsyncOpSingleThread.java      |  16 +-
 .../zk/TestWtCacheSyncOpSingleThread.java       |  16 +-
 .../manager/zk/TestZKLiveInstanceData.java      |  18 +-
 .../org/apache/helix/manager/zk/TestZKUtil.java |   8 +-
 .../helix/manager/zk/TestZNRecordSizeLimit.java |  63 ++-
 .../manager/zk/TestZkBaseDataAccessor.java      |  67 ++-
 .../zk/TestZkCacheAsyncOpSingleThread.java      |  30 +-
 .../zk/TestZkCacheSyncOpSingleThread.java       |  14 +-
 .../helix/manager/zk/TestZkClusterManager.java  |  64 ++-
 .../apache/helix/manager/zk/TestZkFlapping.java |  26 +-
 .../helix/manager/zk/TestZkHelixAdmin.java      |  49 +-
 .../manager/zk/TestZkHelixAutoController.java   |  11 +-
 .../helix/manager/zk/TestZkHelixController.java |  15 +-
 .../manager/zk/TestZkHelixParticipant.java      |  11 +-
 .../zk/TestZkManagerFlappingDetection.java      |  16 +-
 .../handling/TestConfigThreadpoolSize.java      |   6 +-
 .../handling/TestResourceThreadpoolSize.java    |   2 +-
 .../org/apache/helix/model/TestConstraint.java  |  24 +-
 .../TestClusterStatusMonitorLifecycle.java      |  36 +-
 .../monitoring/TestZKPathDataDumpTask.java      |  13 +-
 .../mbeans/TestDropResourceMetricsReset.java    |  12 +-
 .../mbeans/TestResetClusterMetrics.java         |  12 +-
 .../participant/TestDistControllerElection.java |  64 +--
 .../TestDistControllerStateModel.java           |  14 +-
 .../TestDistControllerStateModelFactory.java    |   8 +-
 .../store/zk/TestAutoFallbackPropertyStore.java |  26 +-
 .../store/zk/TestZkHelixPropertyStore.java      |  28 +-
 .../zk/TestZkManagerWithAutoFallbackStore.java  |   8 +-
 .../apache/helix/testutil/HelixTestUtil.java    | 240 ++++++++++
 .../org/apache/helix/testutil/TestUtil.java     |  79 ++++
 .../org/apache/helix/testutil/ZkTestBase.java   |  80 ++++
 .../org/apache/helix/testutil/ZkTestUtil.java   |  99 ++++
 .../apache/helix/tools/TestClusterSetup.java    | 207 +++++----
 .../helix/tools/TestClusterStateVerifier.java   |  27 +-
 .../apache/helix/tools/TestHelixAdminCli.java   | 128 +++---
 .../java/org/apache/helix/tools/TestZkCopy.java |  30 +-
 146 files changed, 2334 insertions(+), 2507 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-admin-webapp/src/test/java/org/apache/helix/webapp/AdminTestBase.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/AdminTestBase.java b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/AdminTestBase.java
index 5b4411b..56b3ca8 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/AdminTestBase.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/AdminTestBase.java
@@ -21,56 +21,44 @@ package org.apache.helix.webapp;
 
 import java.util.logging.Level;
 
-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.util.ZKClientPool;
+import org.apache.helix.testutil.ZkTestBase;
 import org.apache.helix.webapp.AdminTestHelper.AdminThread;
 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;
 
-public class AdminTestBase {
+public class AdminTestBase extends ZkTestBase {
   private static Logger LOG = Logger.getLogger(AdminTestBase.class);
-  public static final String ZK_ADDR = "localhost:2187";
   protected final static int ADMIN_PORT = 2202;
 
-  protected static ZkServer _zkServer;
-  protected static ZkClient _gZkClient;
-  protected static ClusterSetup _gSetupTool;
   protected static Client _gClient;
 
   static AdminThread _adminThread;
 
   @BeforeSuite
-  public void beforeSuite() throws Exception {
+  public void beforeSuite() {
     // TODO: use logging.properties file to config java.util.logging.Logger levels
     java.util.logging.Logger topJavaLogger = java.util.logging.Logger.getLogger("");
     topJavaLogger.setLevel(Level.WARNING);
 
     // start zk
-    _zkServer = TestHelper.startZkServer(ZK_ADDR);
-    AssertJUnit.assertTrue(_zkServer != null);
-    ZKClientPool.reset();
-
-    _gZkClient = new ZkClient(ZK_ADDR);
-    _gZkClient.setZkSerializer(new ZNRecordSerializer());
-    _gSetupTool = new ClusterSetup(ZK_ADDR);
+    super.beforeSuite();
 
     // start admin
-    _adminThread = new AdminThread(ZK_ADDR, ADMIN_PORT);
+    _adminThread = new AdminThread(_zkaddr, ADMIN_PORT);
     _adminThread.start();
 
     // create a client
     _gClient = new Client(Protocol.HTTP);
 
     // wait for the web service to start
-    Thread.sleep(100);
+    try {
+      Thread.sleep(100);
+    } catch (InterruptedException e) {
+      LOG.error("Interrupted", e);
+    }
   }
 
   @AfterSuite
@@ -81,10 +69,7 @@ public class AdminTestBase {
     _adminThread.stop();
 
     // stop zk
-    ZKClientPool.reset();
-    _gZkClient.close();
-
-    TestHelper.stopZkServer(_zkServer);
+    super.afterSuite();
     // System.out.println("END AdminTestBase.afterSuite() at " + new
     // Date(System.currentTimeMillis()));
   }

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/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 b645dfd..1ae458e 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
@@ -564,7 +564,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
     // verify pause znode exists
     String pausePath = PropertyPathConfig.getPath(PropertyType.PAUSE, clusterName);
     System.out.println("pausePath: " + pausePath);
-    boolean exists = _gZkClient.exists(pausePath);
+    boolean exists = _zkclient.exists(pausePath);
     Assert.assertTrue(exists, pausePath + " should exist");
 
     // Then enable it
@@ -583,7 +583,7 @@ public class TestClusterManagementWebapp extends AdminTestBase {
     System.out.println(sw.toString());
 
     // verify pause znode doesn't exist
-    exists = _gZkClient.exists(pausePath);
+    exists = _zkclient.exists(pausePath);
     Assert.assertFalse(exists, pausePath + " should be removed");
 
     System.out.println("END: verifyEnableCluster()");

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestDisableResource.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestDisableResource.java b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestDisableResource.java
index 9800179..abc356f 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestDisableResource.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestDisableResource.java
@@ -23,13 +23,10 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.helix.BaseDataAccessor;
 import org.apache.helix.HelixDataAccessor;
 import org.apache.helix.PropertyKey;
 import org.apache.helix.TestHelper;
-import org.apache.helix.ZNRecord;
 import org.apache.helix.manager.zk.ZKHelixDataAccessor;
-import org.apache.helix.manager.zk.ZkBaseDataAccessor;
 import org.apache.helix.model.IdealState;
 import org.apache.helix.tools.ClusterSetup;
 import org.apache.helix.webapp.resources.JsonParameters;
@@ -47,7 +44,7 @@ public class TestDisableResource extends AdminTestBase {
 
     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
@@ -66,8 +63,7 @@ public class TestDisableResource extends AdminTestBase {
     paramMap.put(JsonParameters.ENABLED, Boolean.toString(false));
     TestHelixAdminScenariosRest.assertSuccessPostOperation(instanceUrl, paramMap, false);
 
-    BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient);
-    HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor);
+    HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, _baseAccessor);
     PropertyKey.Builder keyBuilder = accessor.keyBuilder();
     IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
     Assert.assertFalse(idealState.isEnabled());

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestHelixAdminScenariosRest.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestHelixAdminScenariosRest.java b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestHelixAdminScenariosRest.java
index 8082f04..66065c3 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestHelixAdminScenariosRest.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestHelixAdminScenariosRest.java
@@ -223,9 +223,9 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     response = assertSuccessPostOperation(url, addClusterCmd("clusterTest"), true);
 
     // delete cluster without resource and instance
-    Assert.assertTrue(ZKUtil.isClusterSetup("Klazt3rz", _gZkClient));
-    Assert.assertTrue(ZKUtil.isClusterSetup("clusterTest", _gZkClient));
-    Assert.assertTrue(ZKUtil.isClusterSetup("\\ClusterTest", _gZkClient));
+    Assert.assertTrue(ZKUtil.isClusterSetup("Klazt3rz", _zkclient));
+    Assert.assertTrue(ZKUtil.isClusterSetup("clusterTest", _zkclient));
+    Assert.assertTrue(ZKUtil.isClusterSetup("\\ClusterTest", _zkclient));
 
     String clusterUrl = getClusterUrl("\\ClusterTest");
     deleteUrl(clusterUrl, false);
@@ -246,9 +246,9 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     clusterUrl = getClusterUrl("clusterTestOK");
     deleteUrl(clusterUrl, false);
 
-    Assert.assertFalse(_gZkClient.exists("/clusterTest"));
-    Assert.assertFalse(_gZkClient.exists("/clusterTest1"));
-    Assert.assertFalse(_gZkClient.exists("/clusterTestOK"));
+    Assert.assertFalse(_zkclient.exists("/clusterTest"));
+    Assert.assertFalse(_zkclient.exists("/clusterTest1"));
+    Assert.assertFalse(_zkclient.exists("/clusterTestOK"));
 
     response = assertSuccessPostOperation(url, addClusterCmd("clusterTest1"), false);
     response = getUrl(clustersUrl);
@@ -299,13 +299,13 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     // drop resource now
     String resourceUrl = getResourceUrl(clusterName, "db_11");
     deleteUrl(resourceUrl, false);
-    Assert.assertFalse(_gZkClient.exists("/" + clusterName + "/IDEALSTATES/db_11"));
+    Assert.assertFalse(_zkclient.exists("/" + clusterName + "/IDEALSTATES/db_11"));
 
     response =
         assertSuccessPostOperation(reourcesUrl, addResourceCmd("db_11", "MasterSlave", 44), false);
     Assert.assertTrue(response.contains("db_11"));
 
-    Assert.assertTrue(_gZkClient.exists("/" + clusterName + "/IDEALSTATES/db_11"));
+    Assert.assertTrue(_zkclient.exists("/" + clusterName + "/IDEALSTATES/db_11"));
 
     response =
         assertSuccessPostOperation(reourcesUrl, addResourceCmd("db_33", "MasterSlave", 44), false);
@@ -348,7 +348,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     for (int i = 0; i < 6; i++) {
       String instanceName = "localhost_123" + i;
       MockParticipantManager participant =
-          new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+          new MockParticipantManager(_zkaddr, clusterName, instanceName);
       participant.syncStart();
       participants.put(instanceName, participant);
     }
@@ -357,7 +357,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     for (int i = 0; i < 2; i++) {
       String controllerName = "controller_900" + i;
       ClusterDistributedController distController =
-          new ClusterDistributedController(ZK_ADDR, controllerClusterName, controllerName);
+          new ClusterDistributedController(_zkaddr, controllerClusterName, controllerName);
       distController.syncStart();
       distControllers.put(controllerName, distController);
     }
@@ -367,27 +367,27 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     // activate cluster
     assertSuccessPostOperation(clusterUrl, activateClusterCmd(controllerClusterName, true), false);
     boolean verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             controllerClusterName));
     Assert.assertTrue(verifyResult);
 
     verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(verifyResult);
 
     // deactivate cluster
     assertSuccessPostOperation(clusterUrl, activateClusterCmd(controllerClusterName, false), false);
     Thread.sleep(6000);
-    Assert.assertFalse(_gZkClient.exists("/" + controllerClusterName + "/IDEALSTATES/"
+    Assert.assertFalse(_zkclient.exists("/" + controllerClusterName + "/IDEALSTATES/"
         + clusterName));
 
     HelixDataAccessor accessor = participants.get("localhost_1231").getHelixDataAccessor();
     String path = accessor.keyBuilder().controllerLeader().getPath();
-    Assert.assertFalse(_gZkClient.exists(path));
+    Assert.assertFalse(_zkclient.exists(path));
 
     deleteUrl(clusterUrl, true);
-    Assert.assertTrue(_gZkClient.exists("/" + clusterName));
+    Assert.assertTrue(_zkclient.exists("/" + clusterName));
 
     // leader node should be gone
     for (MockParticipantManager participant : participants.values()) {
@@ -395,7 +395,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     }
     deleteUrl(clusterUrl, false);
 
-    Assert.assertFalse(_gZkClient.exists("/" + clusterName));
+    Assert.assertFalse(_zkclient.exists("/" + clusterName));
 
     // clean up
     for (ClusterDistributedController controller : distControllers.values()) {
@@ -424,7 +424,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     addInstancesToCluster(clusterName, "localhost_123", 6, null);
     rebalanceResource(clusterName, "db_11");
     ZNRecord record =
-        _gSetupTool.getClusterManagementTool().getResourceIdealState(clusterName, "db_11")
+        _setupTool.getClusterManagementTool().getResourceIdealState(clusterName, "db_11")
             .getRecord();
     String x = ObjectToJson(record);
 
@@ -434,7 +434,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     pw.close();
 
     ClusterControllerManager controller =
-        new ClusterControllerManager(ZK_ADDR, clusterName, "controller_9900");
+        new ClusterControllerManager(_zkaddr, clusterName, "controller_9900");
     controller.syncStart();
 
     // start mock nodes
@@ -443,12 +443,12 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     for (int i = 0; i < 6; i++) {
       String instanceName = "localhost_123" + i;
       MockParticipantManager participant =
-          new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+          new MockParticipantManager(_zkaddr, clusterName, instanceName);
       participant.syncStart();
       participants.put(instanceName, participant);
     }
     boolean verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(verifyResult);
 
@@ -456,7 +456,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     deleteUrl(resourceUrl, false);
 
     verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(verifyResult);
     addResource(clusterName, "db_11", 22);
@@ -467,12 +467,12 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     assertSuccessPostOperation(idealStateUrl, addIdealStateCmd(), extraform, false);
 
     verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(verifyResult);
 
     ZNRecord record2 =
-        _gSetupTool.getClusterManagementTool().getResourceIdealState(clusterName, "db_11")
+        _setupTool.getClusterManagementTool().getResourceIdealState(clusterName, "db_11")
             .getRecord();
     Assert.assertTrue(record2.equals(record));
 
@@ -510,7 +510,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     rebalanceResource(clusterName, "db_11");
 
     ClusterControllerManager controller =
-        new ClusterControllerManager(ZK_ADDR, clusterName, "controller_9900");
+        new ClusterControllerManager(_zkaddr, clusterName, "controller_9900");
     controller.syncStart();
 
     // start mock nodes
@@ -519,13 +519,13 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     for (int i = 0; i < 6; i++) {
       String instanceName = "localhost_123" + i;
       MockParticipantManager participant =
-          new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+          new MockParticipantManager(_zkaddr, clusterName, instanceName);
       participant.syncStart();
       participants.put(instanceName, participant);
     }
 
     boolean verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(verifyResult);
 
@@ -544,18 +544,18 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     for (int i = 3; i <= 6; i++) {
       String instanceName = "localhost_123" + i + "1";
       MockParticipantManager participant =
-          new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+          new MockParticipantManager(_zkaddr, clusterName, instanceName);
       participant.syncStart();
       participants.put(instanceName, participant);
     }
 
     verifyResult =
         ClusterStateVerifier
-            .verifyByZkCallback(new MasterNbInExtViewVerifier(ZK_ADDR, clusterName));
+            .verifyByZkCallback(new MasterNbInExtViewVerifier(_zkaddr, clusterName));
     Assert.assertTrue(verifyResult);
 
     verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(verifyResult);
 
@@ -588,7 +588,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     rebalanceResource(clusterName, "db_11");
 
     ClusterControllerManager controller =
-        new ClusterControllerManager(ZK_ADDR, clusterName, "controller_9900");
+        new ClusterControllerManager(_zkaddr, clusterName, "controller_9900");
     controller.syncStart();
 
     // start mock nodes
@@ -597,7 +597,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     for (int i = 0; i < 6; i++) {
       String instanceName = "localhost_123" + i;
       MockParticipantManager participant =
-          new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+          new MockParticipantManager(_zkaddr, clusterName, instanceName);
       participant.syncStart();
       participants.put(instanceName, participant);
     }
@@ -616,7 +616,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     Assert.assertTrue(response.contains("db_11_11"));
 
     boolean verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(verifyResult);
 
@@ -631,7 +631,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     Assert.assertFalse(response.contains("db_11_11"));
 
     verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(verifyResult);
 
@@ -674,7 +674,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     rebalanceResource(clusterName, "db_11");
 
     ClusterControllerManager controller =
-        new ClusterControllerManager(ZK_ADDR, clusterName, "controller_9900");
+        new ClusterControllerManager(_zkaddr, clusterName, "controller_9900");
     controller.syncStart();
 
     // start mock nodes
@@ -683,7 +683,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     for (int i = 0; i < 6; i++) {
       String instanceName = "localhost_123" + i;
       MockParticipantManager participant =
-          new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+          new MockParticipantManager(_zkaddr, clusterName, instanceName);
       participant.syncStart();
       participants.put(instanceName, participant);
     }
@@ -721,16 +721,16 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
 
     accessor = participants.get("localhost_1231").getHelixDataAccessor();
     String path = accessor.keyBuilder().instanceConfig("localhost_1232").getPath();
-    Assert.assertFalse(_gZkClient.exists(path));
+    Assert.assertFalse(_zkclient.exists(path));
 
     MockParticipantManager newParticipant =
-        new MockParticipantManager(ZK_ADDR, clusterName, "localhost_12320");
+        new MockParticipantManager(_zkaddr, clusterName, "localhost_12320");
     newParticipant.syncStart();
     participants.put("localhost_12320", newParticipant);
 
     boolean verifyResult =
         ClusterStateVerifier
-            .verifyByZkCallback(new MasterNbInExtViewVerifier(ZK_ADDR, clusterName));
+            .verifyByZkCallback(new MasterNbInExtViewVerifier(_zkaddr, clusterName));
     Assert.assertTrue(verifyResult);
 
     // clean up
@@ -763,7 +763,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     for (int i = 0; i < 6; i++) {
       String instanceName = "localhost_123" + i;
       MockParticipantManager participant =
-          new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+          new MockParticipantManager(_zkaddr, clusterName, instanceName);
       participant.syncStart();
       participants.put(instanceName, participant);
     }
@@ -772,7 +772,7 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     for (int i = 0; i < 2; i++) {
       String controllerName = "controller_900" + i;
       ClusterDistributedController distController =
-          new ClusterDistributedController(ZK_ADDR, controllerClusterName, controllerName);
+          new ClusterDistributedController(_zkaddr, controllerClusterName, controllerName);
       distController.syncStart();
       distControllers.put(controllerName, distController);
     }
@@ -811,11 +811,11 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
 
     boolean verifyResult =
         ClusterStateVerifier
-            .verifyByZkCallback(new MasterNbInExtViewVerifier(ZK_ADDR, clusterName));
+            .verifyByZkCallback(new MasterNbInExtViewVerifier(_zkaddr, clusterName));
     Assert.assertTrue(verifyResult);
 
     verifyResult =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(verifyResult);
     Thread.sleep(1000);
@@ -1051,8 +1051,8 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     final String URL_BASE =
         "http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/resourceGroups";
 
-    _gSetupTool.addCluster(clusterName, true);
-    HelixAdmin admin = _gSetupTool.getClusterManagementTool();
+    _setupTool.addCluster(clusterName, true);
+    HelixAdmin admin = _setupTool.getClusterManagementTool();
 
     // Add a tagged resource
     IdealState taggedResource = new IdealState("taggedResource");
@@ -1089,8 +1089,8 @@ public class TestHelixAdminScenariosRest extends AdminTestBase {
     final String URL_BASE =
         "http://localhost:" + ADMIN_PORT + "/clusters/" + clusterName + "/instances";
 
-    _gSetupTool.addCluster(clusterName, true);
-    HelixAdmin admin = _gSetupTool.getClusterManagementTool();
+    _setupTool.addCluster(clusterName, true);
+    HelixAdmin admin = _setupTool.getClusterManagementTool();
 
     // Add 4 participants, each with differint tag characteristics
     InstanceConfig instance1 = new InstanceConfig("localhost_1");

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetInstance.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetInstance.java b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetInstance.java
index fdcb1e5..b89a067 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetInstance.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetInstance.java
@@ -44,7 +44,7 @@ public class TestResetInstance extends AdminTestBase {
 
     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
@@ -54,7 +54,7 @@ public class TestResetInstance extends AdminTestBase {
         "MasterSlave", true); // do rebalance
 
     // start controller
-    ClusterControllerManager controller = new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
+    ClusterControllerManager controller = new ClusterControllerManager(_zkaddr, clusterName, "controller_0");
     controller.syncStart();
 
     Map<String, Set<String>> errPartitions = new HashMap<String, Set<String>>() {
@@ -71,10 +71,10 @@ public class TestResetInstance extends AdminTestBase {
 
       if (i == 0) {
         participants[i] =
-            new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+            new MockParticipantManager(_zkaddr, clusterName, instanceName);
         participants[i].setTransition(new ErrTransition(errPartitions));
       } else {
-        participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+        participants[i] = new MockParticipantManager(_zkaddr, clusterName, instanceName);
       }
       participants[i].syncStart();
     }
@@ -86,7 +86,7 @@ public class TestResetInstance extends AdminTestBase {
     errStateMap.get("TestDB0").put("TestDB0_8", "localhost_12918");
     boolean result =
         ClusterStateVerifier
-            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR,
+            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(_zkaddr,
                 clusterName, errStateMap)));
     Assert.assertTrue(result, "Cluster verification fails");
 
@@ -102,7 +102,7 @@ public class TestResetInstance extends AdminTestBase {
 
     result =
         ClusterStateVerifier
-            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR,
+            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(_zkaddr,
                 clusterName)));
     Assert.assertTrue(result, "Cluster verification fails");
 

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetPartitionState.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetPartitionState.java b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetPartitionState.java
index 3970b7a..8cd6f42 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetPartitionState.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetPartitionState.java
@@ -88,7 +88,7 @@ public class TestResetPartitionState extends AdminTestBase {
 
     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
@@ -98,7 +98,7 @@ public class TestResetPartitionState extends AdminTestBase {
         "MasterSlave", true); // do rebalance
 
     // start controller
-    ClusterControllerManager controller = new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
+    ClusterControllerManager controller = new ClusterControllerManager(_zkaddr, clusterName, "controller_0");
     controller.syncStart();
 
     Map<String, Set<String>> errPartitions = new HashMap<String, Set<String>>();
@@ -112,10 +112,10 @@ public class TestResetPartitionState extends AdminTestBase {
 
       if (i == 0) {
         participants[i] =
-            new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+            new MockParticipantManager(_zkaddr, clusterName, instanceName);
         participants[i].setTransition(new ErrTransition(errPartitions));
       } else {
-        participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+        participants[i] = new MockParticipantManager(_zkaddr, clusterName, instanceName);
       }
       participants[i].syncStart();
     }
@@ -127,7 +127,7 @@ public class TestResetPartitionState extends AdminTestBase {
     errStateMap.get("TestDB0").put("TestDB0_8", "localhost_12918");
     boolean result =
         ClusterStateVerifier
-            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR,
+            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(_zkaddr,
                 clusterName, errStateMap)));
     Assert.assertTrue(result, "Cluster verification fails");
 
@@ -158,7 +158,7 @@ public class TestResetPartitionState extends AdminTestBase {
 
       result =
           ClusterStateVerifier
-              .verifyByZkCallback(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR,
+              .verifyByZkCallback(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(_zkaddr,
                   clusterName));
       if (result == true) {
         break;
@@ -182,7 +182,7 @@ public class TestResetPartitionState extends AdminTestBase {
     // clear status update for error partition so verify() will not fail on
     // old errors
     ZKHelixDataAccessor accessor =
-        new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
+        new ZKHelixDataAccessor(clusterName, _baseAccessor);
     Builder keyBuilder = accessor.keyBuilder();
 
     LiveInstance liveInstance = accessor.getProperty(keyBuilder.liveInstance(instance));

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetResource.java
----------------------------------------------------------------------
diff --git a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetResource.java b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetResource.java
index 64ed249..464edc4 100644
--- a/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetResource.java
+++ b/helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestResetResource.java
@@ -44,7 +44,7 @@ public class TestResetResource extends AdminTestBase {
 
     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
@@ -54,7 +54,7 @@ public class TestResetResource extends AdminTestBase {
         "MasterSlave", true); // do rebalance
 
     // start controller
-    ClusterControllerManager controller = new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
+    ClusterControllerManager controller = new ClusterControllerManager(_zkaddr, clusterName, "controller_0");
     controller.syncStart();
 
     Map<String, Set<String>> errPartitions = new HashMap<String, Set<String>>() {
@@ -71,10 +71,10 @@ public class TestResetResource extends AdminTestBase {
 
       if (i == 0) {
         participants[i] =
-            new MockParticipantManager(ZK_ADDR, clusterName, instanceName); 
+            new MockParticipantManager(_zkaddr, clusterName, instanceName);
         participants[i].setTransition(new ErrTransition(errPartitions));
       } else {
-        participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
+        participants[i] = new MockParticipantManager(_zkaddr, clusterName, instanceName);
       }
       participants[i].syncStart();
     }
@@ -86,7 +86,7 @@ public class TestResetResource extends AdminTestBase {
     errStateMap.get("TestDB0").put("TestDB0_8", "localhost_12918");
     boolean result =
         ClusterStateVerifier
-            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR,
+            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(_zkaddr,
                 clusterName, errStateMap)));
     Assert.assertTrue(result, "Cluster verification fails");
 
@@ -103,7 +103,7 @@ public class TestResetResource extends AdminTestBase {
 
     result =
         ClusterStateVerifier
-            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR,
+            .verifyByZkCallback((new ClusterStateVerifier.BestPossAndExtViewZkVerifier(_zkaddr,
                 clusterName)));
     Assert.assertTrue(result, "Cluster verification fails");
 

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-agent/src/test/java/org/apache/helix/agent/TestHelixAgent.java
----------------------------------------------------------------------
diff --git a/helix-agent/src/test/java/org/apache/helix/agent/TestHelixAgent.java b/helix-agent/src/test/java/org/apache/helix/agent/TestHelixAgent.java
index ccf64ce..cbf0582 100644
--- a/helix-agent/src/test/java/org/apache/helix/agent/TestHelixAgent.java
+++ b/helix-agent/src/test/java/org/apache/helix/agent/TestHelixAgent.java
@@ -28,11 +28,11 @@ import org.apache.helix.ConfigAccessor;
 import org.apache.helix.ExternalCommand;
 import org.apache.helix.ScriptTestHelper;
 import org.apache.helix.TestHelper;
-import org.apache.helix.ZkUnitTestBase;
 import org.apache.helix.integration.manager.ClusterControllerManager;
 import org.apache.helix.model.HelixConfigScope;
 import org.apache.helix.model.HelixConfigScope.ConfigScopeProperty;
 import org.apache.helix.model.builder.HelixConfigScopeBuilder;
+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;
@@ -42,7 +42,7 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-public class TestHelixAgent extends ZkUnitTestBase {
+public class TestHelixAgent extends ZkTestBase {
   private final static Logger LOG = Logger.getLogger(TestHelixAgent.class);
 
   final String workingDir = ScriptTestHelper.getPrefix() + ScriptTestHelper.INTEGRATION_SCRIPT_DIR;
@@ -83,7 +83,7 @@ public class TestHelixAgent extends ZkUnitTestBase {
     String methodName = TestHelper.getTestMethodName();
     final String clusterName = className + "_" + methodName;
     final int n = 1;
-    final String zkAddr = ZK_ADDR;
+    final String zkAddr = _zkaddr;
 
     System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
 
@@ -99,7 +99,7 @@ public class TestHelixAgent extends ZkUnitTestBase {
     // set cluster config
     HelixConfigScope scope =
         new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER).forCluster(clusterName).build();
-    ConfigAccessor configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor configAccessor = new ConfigAccessor(_zkclient);
 
     // String pidFile = ScriptTestHelper.getPrefix() + ScriptTestHelper.INTEGRATION_LOG_DIR +
     // "/default/foo_{PARTITION_NAME}_pid.txt";
@@ -175,7 +175,7 @@ public class TestHelixAgent extends ZkUnitTestBase {
     }
 
     boolean result =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(result);
 
@@ -190,10 +190,10 @@ public class TestHelixAgent extends ZkUnitTestBase {
 
     // drop resource will trigger M->S and S->O transitions
     ClusterSetup.processCommandLineArgs(new String[] {
-        "--zkSvr", ZK_ADDR, "--dropResource", clusterName, "TestDB0"
+        "--zkSvr", _zkaddr, "--dropResource", clusterName, "TestDB0"
     });
     result =
-        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
+        ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(_zkaddr,
             clusterName));
     Assert.assertTrue(result);
 

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier.java b/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier.java
index eec7ab5..65df706 100644
--- a/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier.java
+++ b/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier.java
@@ -86,10 +86,30 @@ public class ClusterStateVerifier {
     boolean verify();
   }
 
-  public interface ZkVerifier extends Verifier {
-    ZkClient getZkClient();
+  public static abstract class ZkVerifier implements Verifier {
+    private final String _clusterName;
+    private final ZkClient _zkclient;
 
-    String getClusterName();
+    public ZkVerifier(String clusterName, ZkClient zkclient) {
+      if (zkclient == null || clusterName == null) {
+        throw new IllegalArgumentException("zkclient/clusterName can't be null");
+      }
+
+      _clusterName = clusterName;
+      _zkclient = zkclient;
+    }
+
+    public ZkVerifier(String clusterName, String zkAddr) {
+      this(clusterName, ZKClientPool.getZkClient(zkAddr));
+    }
+
+    public ZkClient getZkClient() {
+      return _zkclient;
+    }
+
+    public String getClusterName() {
+      return _clusterName;
+    }
   }
 
   static class ExtViewVeriferZkListener implements IZkChildListener, IZkDataListener {
@@ -135,11 +155,9 @@ public class ClusterStateVerifier {
   /**
    * verifier that verifies best possible state and external view
    */
-  public static class BestPossAndExtViewZkVerifier implements ZkVerifier {
+  public static class BestPossAndExtViewZkVerifier extends ZkVerifier {
     private final String zkAddr;
-    private final String clusterName;
     private final Map<String, Map<String, String>> errStates;
-    private final ZkClient zkClient;
     private final Set<String> resources;
 
     public BestPossAndExtViewZkVerifier(String zkAddr, String clusterName) {
@@ -153,13 +171,9 @@ public class ClusterStateVerifier {
 
     public BestPossAndExtViewZkVerifier(String zkAddr, String clusterName,
         Map<String, Map<String, String>> errStates, Set<String> resources) {
-      if (zkAddr == null || clusterName == null) {
-        throw new IllegalArgumentException("requires zkAddr|clusterName");
-      }
+      super(clusterName, zkAddr);
       this.zkAddr = zkAddr;
-      this.clusterName = clusterName;
       this.errStates = errStates;
-      this.zkClient = ZKClientPool.getZkClient(zkAddr); // null;
       this.resources = resources;
     }
 
@@ -167,9 +181,9 @@ public class ClusterStateVerifier {
     public boolean verify() {
       try {
         HelixDataAccessor accessor =
-            new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(zkClient));
+            new ZKHelixDataAccessor(getClusterName(), new ZkBaseDataAccessor<ZNRecord>(getZkClient()));
 
-        return ClusterStateVerifier.verifyBestPossAndExtView(accessor, errStates, clusterName,
+        return ClusterStateVerifier.verifyBestPossAndExtView(accessor, errStates, getClusterName(),
             resources);
       } catch (Exception e) {
         LOG.error("exception in verification", e);
@@ -178,43 +192,25 @@ public class ClusterStateVerifier {
     }
 
     @Override
-    public ZkClient getZkClient() {
-      return zkClient;
-    }
-
-    @Override
-    public String getClusterName() {
-      return clusterName;
-    }
-
-    @Override
     public String toString() {
       String verifierName = getClass().getName();
       verifierName =
           verifierName.substring(verifierName.lastIndexOf('.') + 1, verifierName.length());
-      return verifierName + "(" + clusterName + "@" + zkAddr + ")";
+      return verifierName + "(" + getClusterName() + "@" + zkAddr + ")";
     }
   }
 
-  public static class MasterNbInExtViewVerifier implements ZkVerifier {
-    private final String zkAddr;
-    private final String clusterName;
-    private final ZkClient zkClient;
+  public static class MasterNbInExtViewVerifier extends ZkVerifier {
 
     public MasterNbInExtViewVerifier(String zkAddr, String clusterName) {
-      if (zkAddr == null || clusterName == null) {
-        throw new IllegalArgumentException("requires zkAddr|clusterName");
-      }
-      this.zkAddr = zkAddr;
-      this.clusterName = clusterName;
-      this.zkClient = ZKClientPool.getZkClient(zkAddr);
+      super(clusterName, zkAddr);
     }
 
     @Override
     public boolean verify() {
       try {
         ZKHelixDataAccessor accessor =
-            new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(zkClient));
+            new ZKHelixDataAccessor(getClusterName(), new ZkBaseDataAccessor<ZNRecord>(getZkClient()));
 
         return ClusterStateVerifier.verifyMasterNbInExtView(accessor);
       } catch (Exception e) {
@@ -222,17 +218,6 @@ public class ClusterStateVerifier {
       }
       return false;
     }
-
-    @Override
-    public ZkClient getZkClient() {
-      return zkClient;
-    }
-
-    @Override
-    public String getClusterName() {
-      return clusterName;
-    }
-
   }
 
   static boolean verifyBestPossAndExtView(HelixDataAccessor accessor,

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestConfigAccessor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestConfigAccessor.java b/helix-core/src/test/java/org/apache/helix/TestConfigAccessor.java
index d58389d..3e69327 100644
--- a/helix-core/src/test/java/org/apache/helix/TestConfigAccessor.java
+++ b/helix-core/src/test/java/org/apache/helix/TestConfigAccessor.java
@@ -27,10 +27,11 @@ import org.apache.helix.model.ConfigScope;
 import org.apache.helix.model.HelixConfigScope.ConfigScopeProperty;
 import org.apache.helix.model.InstanceConfig;
 import org.apache.helix.model.builder.ConfigScopeBuilder;
+import org.apache.helix.testutil.ZkTestBase;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-public class TestConfigAccessor extends ZkUnitTestBase {
+public class TestConfigAccessor extends ZkTestBase {
   @Test
   public void testBasic() throws Exception {
     String className = TestHelper.getTestClassName();
@@ -39,10 +40,10 @@ public class TestConfigAccessor extends ZkUnitTestBase {
 
     System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
 
-    TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, "localhost", "TestDB", 1, 10, 5, 3,
+    TestHelper.setupCluster(clusterName, _zkaddr, 12918, "localhost", "TestDB", 1, 10, 5, 3,
         "MasterSlave", true);
 
-    ConfigAccessor configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor configAccessor = new ConfigAccessor(_zkclient);
     ConfigScope clusterScope = new ConfigScopeBuilder().forCluster(clusterName).build();
 
     // cluster scope config
@@ -164,9 +165,9 @@ public class TestConfigAccessor extends ZkUnitTestBase {
 
     System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
 
-    ZKHelixAdmin admin = new ZKHelixAdmin(_gZkClient);
+    ZKHelixAdmin admin = new ZKHelixAdmin(_zkclient);
     admin.addCluster(clusterName, true);
-    ConfigAccessor configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor configAccessor = new ConfigAccessor(_zkclient);
     ConfigScope participantScope =
         new ConfigScopeBuilder().forCluster(clusterName).forParticipant("localhost_12918").build();
 

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestHelixConfigAccessor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestHelixConfigAccessor.java b/helix-core/src/test/java/org/apache/helix/TestHelixConfigAccessor.java
index 9e8b079..81cbbbe 100644
--- a/helix-core/src/test/java/org/apache/helix/TestHelixConfigAccessor.java
+++ b/helix-core/src/test/java/org/apache/helix/TestHelixConfigAccessor.java
@@ -27,10 +27,11 @@ import org.apache.helix.model.HelixConfigScope;
 import org.apache.helix.model.HelixConfigScope.ConfigScopeProperty;
 import org.apache.helix.model.InstanceConfig;
 import org.apache.helix.model.builder.HelixConfigScopeBuilder;
+import org.apache.helix.testutil.ZkTestBase;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-public class TestHelixConfigAccessor extends ZkUnitTestBase {
+public class TestHelixConfigAccessor extends ZkTestBase {
 
   @Test
   public void testBasic() throws Exception {
@@ -40,10 +41,10 @@ public class TestHelixConfigAccessor extends ZkUnitTestBase {
 
     System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
 
-    TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, "localhost", "TestDB", 1, 10, 5, 3,
+    TestHelper.setupCluster(clusterName, _zkaddr, 12918, "localhost", "TestDB", 1, 10, 5, 3,
         "MasterSlave", true);
 
-    ConfigAccessor configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor configAccessor = new ConfigAccessor(_zkclient);
     HelixConfigScope clusterScope =
         new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER).forCluster(clusterName).build();
 
@@ -185,9 +186,9 @@ public class TestHelixConfigAccessor extends ZkUnitTestBase {
 
     System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
 
-    ZKHelixAdmin admin = new ZKHelixAdmin(_gZkClient);
+    ZKHelixAdmin admin = new ZKHelixAdmin(_zkclient);
     admin.addCluster(clusterName, true);
-    ConfigAccessor configAccessor = new ConfigAccessor(_gZkClient);
+    ConfigAccessor configAccessor = new ConfigAccessor(_zkclient);
     HelixConfigScope participantScope =
         new HelixConfigScopeBuilder(ConfigScopeProperty.PARTICIPANT).forCluster(clusterName)
             .forParticipant("localhost_12918").build();

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestHelper.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestHelper.java b/helix-core/src/test/java/org/apache/helix/TestHelper.java
index 871d717..8328a15 100644
--- a/helix-core/src/test/java/org/apache/helix/TestHelper.java
+++ b/helix-core/src/test/java/org/apache/helix/TestHelper.java
@@ -20,9 +20,7 @@ package org.apache.helix;
  */
 
 import java.io.File;
-import java.io.IOException;
 import java.lang.reflect.Method;
-import java.net.ServerSocket;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -74,18 +72,6 @@ import org.testng.Assert;
 public class TestHelper {
   private static final Logger LOG = Logger.getLogger(TestHelper.class);
 
-  /**
-   * Returns a unused random port.
-   */
-  public static int getRandomPort() throws IOException {
-    ServerSocket sock = new ServerSocket();
-    sock.bind(null);
-    int port = sock.getLocalPort();
-    sock.close();
-
-    return port;
-  }
-
   static public ZkServer startZkServer(final String zkAddress) throws Exception {
     List<String> empty = Collections.emptyList();
     return TestHelper.startZkServer(zkAddress, empty, true);

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestHierarchicalDataStore.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestHierarchicalDataStore.java b/helix-core/src/test/java/org/apache/helix/TestHierarchicalDataStore.java
index af953e9..14d1b82 100644
--- a/helix-core/src/test/java/org/apache/helix/TestHierarchicalDataStore.java
+++ b/helix-core/src/test/java/org/apache/helix/TestHierarchicalDataStore.java
@@ -23,25 +23,25 @@ import java.io.FileFilter;
 
 import org.apache.helix.controller.HierarchicalDataHolder;
 import org.apache.helix.manager.zk.ZkClient;
+import org.apache.helix.testutil.ZkTestBase;
 import org.testng.AssertJUnit;
 import org.testng.annotations.Test;
 
-public class TestHierarchicalDataStore extends ZkUnitTestBase {
-  protected static ZkClient _zkClientString = null;
+public class TestHierarchicalDataStore extends ZkTestBase {
 
-  @Test(groups = {
-    "unitTest"
-  })
+  ZkClient client;
+
+  @Test
   public void testHierarchicalDataStore() {
-    _zkClientString = new ZkClient(ZK_ADDR, 1000, 3000);
+    client = new ZkClient(_zkaddr, 1000, 3000);
 
     String path = "/tmp/testHierarchicalDataStore";
     FileFilter filter = null;
     // _zkClient.setZkSerializer(new ZNRecordSerializer());
 
-    _zkClientString.deleteRecursive(path);
+    client.deleteRecursive(path);
     HierarchicalDataHolder<ZNRecord> dataHolder =
-        new HierarchicalDataHolder<ZNRecord>(_zkClientString, path, filter);
+        new HierarchicalDataHolder<ZNRecord>(client, path, filter);
     dataHolder.print();
     AssertJUnit.assertFalse(dataHolder.refreshData());
 
@@ -67,15 +67,16 @@ public class TestHierarchicalDataStore extends ZkUnitTestBase {
     set(path + "/child1", "new child 1 data");
     AssertJUnit.assertTrue(dataHolder.refreshData());
     dataHolder.print();
+    client.close();
   }
 
   private void set(String path, String data) {
-    _zkClientString.writeData(path, data);
+    client.writeData(path, data);
   }
 
   private void add(String path, String data) {
-    _zkClientString.createPersistent(path, true);
-    _zkClientString.writeData(path, data);
+    client.createPersistent(path, true);
+    client.writeData(path, data);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestListenerCallback.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestListenerCallback.java b/helix-core/src/test/java/org/apache/helix/TestListenerCallback.java
index 77bb19d..0f38b1e 100644
--- a/helix-core/src/test/java/org/apache/helix/TestListenerCallback.java
+++ b/helix-core/src/test/java/org/apache/helix/TestListenerCallback.java
@@ -25,10 +25,11 @@ import java.util.List;
 import org.apache.helix.PropertyKey.Builder;
 import org.apache.helix.model.HelixConfigScope.ConfigScopeProperty;
 import org.apache.helix.model.InstanceConfig;
+import org.apache.helix.testutil.ZkTestBase;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-public class TestListenerCallback extends ZkUnitTestBase {
+public class TestListenerCallback extends ZkTestBase {
   class TestListener implements InstanceConfigChangeListener, ScopedConfigChangeListener {
     boolean _instanceConfigChanged = false;
     boolean _configChanged = false;
@@ -58,7 +59,7 @@ public class TestListenerCallback 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
@@ -69,7 +70,7 @@ public class TestListenerCallback extends ZkUnitTestBase {
 
     HelixManager manager =
         HelixManagerFactory.getZKHelixManager(clusterName, "localhost", InstanceType.SPECTATOR,
-            ZK_ADDR);
+            _zkaddr);
 
     manager.connect();
 

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestZKCallback.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestZKCallback.java b/helix-core/src/test/java/org/apache/helix/TestZKCallback.java
index da438ba..50ed0df 100644
--- a/helix-core/src/test/java/org/apache/helix/TestZKCallback.java
+++ b/helix-core/src/test/java/org/apache/helix/TestZKCallback.java
@@ -40,14 +40,15 @@ import org.apache.helix.model.InstanceConfig;
 import org.apache.helix.model.LiveInstance;
 import org.apache.helix.model.Message;
 import org.apache.helix.model.Message.MessageType;
+import org.apache.helix.testutil.ZkTestBase;
 import org.apache.helix.tools.ClusterSetup;
 import org.testng.AssertJUnit;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-public class TestZKCallback extends ZkUnitTestBase {
-  private final String clusterName = CLUSTER_PREFIX + "_" + getShortClassName();
+public class TestZKCallback extends ZkTestBase {
+  private final String clusterName = "TestZKCallback";
 
   ZkClient _zkClient;
 
@@ -114,10 +115,9 @@ public class TestZKCallback extends ZkUnitTestBase {
 
   @Test()
   public void testInvocation() throws Exception {
-
     HelixManager testHelixManager =
         HelixManagerFactory.getZKHelixManager(clusterName, "localhost_8900",
-            InstanceType.PARTICIPANT, ZK_ADDR);
+            InstanceType.PARTICIPANT, _zkaddr);
     testHelixManager.connect();
 
     TestZKCallback test = new TestZKCallback();
@@ -209,30 +209,30 @@ public class TestZKCallback extends ZkUnitTestBase {
 
   @BeforeClass()
   public void beforeClass() throws IOException, Exception {
-    _zkClient = new ZkClient(ZK_ADDR);
+    _zkClient = new ZkClient(_zkaddr);
     _zkClient.setZkSerializer(new ZNRecordSerializer());
     if (_zkClient.exists("/" + clusterName)) {
       _zkClient.deleteRecursive("/" + clusterName);
     }
 
-    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + ZK_ADDR + " -addCluster "
+    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + _zkaddr + " -addCluster "
         + clusterName));
     // ClusterSetup
-    // .processCommandLineArgs(createArgs("-zkSvr " + ZK_ADDR +
+    // .processCommandLineArgs(createArgs("-zkSvr " + zkaddr +
     // " -addCluster relay-cluster-12345"));
-    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + ZK_ADDR + " -addResource "
+    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + _zkaddr + " -addResource "
         + clusterName + " db-12345 120 MasterSlave"));
-    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + ZK_ADDR + " -addNode " + clusterName
+    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + _zkaddr + " -addNode " + clusterName
         + " localhost:8900"));
-    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + ZK_ADDR + " -addNode " + clusterName
+    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + _zkaddr + " -addNode " + clusterName
         + " localhost:8901"));
-    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + ZK_ADDR + " -addNode " + clusterName
+    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + _zkaddr + " -addNode " + clusterName
         + " localhost:8902"));
-    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + ZK_ADDR + " -addNode " + clusterName
+    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + _zkaddr + " -addNode " + clusterName
         + " localhost:8903"));
-    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + ZK_ADDR + " -addNode " + clusterName
+    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + _zkaddr + " -addNode " + clusterName
         + " localhost:8904"));
-    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + ZK_ADDR + " -rebalance "
+    ClusterSetup.processCommandLineArgs(createArgs("-zkSvr " + _zkaddr + " -rebalance "
         + clusterName + " db-12345 3"));
   }
 

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestZkBasis.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestZkBasis.java b/helix-core/src/test/java/org/apache/helix/TestZkBasis.java
index 8b315d8..b5cd47f 100644
--- a/helix-core/src/test/java/org/apache/helix/TestZkBasis.java
+++ b/helix-core/src/test/java/org/apache/helix/TestZkBasis.java
@@ -30,13 +30,14 @@ import org.I0Itec.zkclient.IZkChildListener;
 import org.I0Itec.zkclient.IZkDataListener;
 import org.apache.helix.manager.zk.ZNRecordSerializer;
 import org.apache.helix.manager.zk.ZkClient;
+import org.apache.helix.testutil.ZkTestBase;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
 /**
  * test zookeeper basis
  */
-public class TestZkBasis extends ZkUnitTestBase {
+public class TestZkBasis extends ZkTestBase {
   class ZkListener implements IZkDataListener, IZkChildListener {
     String _parentPath = null;
     String _dataDeletePath = null;
@@ -83,7 +84,7 @@ public class TestZkBasis extends ZkUnitTestBase {
     String testName = className + "_" + methodName;
 
     final ZkClient client =
-        new ZkClient(ZK_ADDR, ZkClient.DEFAULT_SESSION_TIMEOUT,
+        new ZkClient(_zkaddr, ZkClient.DEFAULT_SESSION_TIMEOUT,
             ZkClient.DEFAULT_CONNECTION_TIMEOUT, new ZNRecordSerializer());
     // make sure "/testName/test" doesn't exist
     final String path = "/" + testName + "/test";
@@ -128,7 +129,7 @@ public class TestZkBasis extends ZkUnitTestBase {
     String testName = className + "_" + methodName;
 
     final ZkClient client =
-        new ZkClient(ZK_ADDR, ZkClient.DEFAULT_SESSION_TIMEOUT,
+        new ZkClient(_zkaddr, ZkClient.DEFAULT_SESSION_TIMEOUT,
             ZkClient.DEFAULT_CONNECTION_TIMEOUT, new ZNRecordSerializer());
     // make sure "/testName/test" doesn't exist
     final String path = "/" + testName + "/test";

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestZkClientWrapper.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestZkClientWrapper.java b/helix-core/src/test/java/org/apache/helix/TestZkClientWrapper.java
index 0decbd8..c1b6005 100644
--- a/helix-core/src/test/java/org/apache/helix/TestZkClientWrapper.java
+++ b/helix-core/src/test/java/org/apache/helix/TestZkClientWrapper.java
@@ -23,6 +23,7 @@ import org.I0Itec.zkclient.IZkStateListener;
 import org.I0Itec.zkclient.ZkConnection;
 import org.apache.helix.manager.zk.ZNRecordSerializer;
 import org.apache.helix.manager.zk.ZkClient;
+import org.apache.helix.testutil.ZkTestBase;
 import org.apache.log4j.Logger;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
@@ -34,14 +35,14 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-public class TestZkClientWrapper extends ZkUnitTestBase {
+public class TestZkClientWrapper extends ZkTestBase {
   private static Logger LOG = Logger.getLogger(TestZkClientWrapper.class);
 
   ZkClient _zkClient;
 
   @BeforeClass
   public void beforeClass() {
-    _zkClient = new ZkClient(ZK_ADDR);
+    _zkClient = new ZkClient(_zkaddr);
     _zkClient.setZkSerializer(new ZNRecordSerializer());
   }
 

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestZkConnectionCount.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestZkConnectionCount.java b/helix-core/src/test/java/org/apache/helix/TestZkConnectionCount.java
index f7353f7..61e1082 100644
--- a/helix-core/src/test/java/org/apache/helix/TestZkConnectionCount.java
+++ b/helix-core/src/test/java/org/apache/helix/TestZkConnectionCount.java
@@ -19,10 +19,11 @@ package org.apache.helix;
  * under the License.
  */
 
+import org.apache.helix.testutil.ZkTestBase;
 import org.apache.log4j.Logger;
 
 // TODO fix this test
-public class TestZkConnectionCount extends ZkUnitTestBase {
+public class TestZkConnectionCount extends ZkTestBase {
   private static Logger LOG = Logger.getLogger(TestZkConnectionCount.class);
 
   // @Test ()

http://git-wip-us.apache.org/repos/asf/helix/blob/410815d0/helix-core/src/test/java/org/apache/helix/TestZnodeModify.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestZnodeModify.java b/helix-core/src/test/java/org/apache/helix/TestZnodeModify.java
index fdf6e72..4bba22a 100644
--- a/helix-core/src/test/java/org/apache/helix/TestZnodeModify.java
+++ b/helix-core/src/test/java/org/apache/helix/TestZnodeModify.java
@@ -29,6 +29,8 @@ import org.apache.helix.manager.zk.ZNRecordSerializer;
 import org.apache.helix.manager.zk.ZkClient;
 import org.apache.helix.model.IdealState.IdealStateProperty;
 import org.apache.helix.model.IdealState.RebalanceMode;
+import org.apache.helix.testutil.TestUtil;
+import org.apache.helix.testutil.ZkTestBase;
 import org.apache.helix.tools.TestCommand;
 import org.apache.helix.tools.TestCommand.CommandType;
 import org.apache.helix.tools.TestExecutor;
@@ -42,9 +44,9 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-public class TestZnodeModify extends ZkUnitTestBase {
+public class TestZnodeModify extends ZkTestBase {
   private static Logger logger = Logger.getLogger(TestZnodeModify.class);
-  private final String PREFIX = "/" + getShortClassName();
+  private final String PREFIX = "/TestZnodeModify";
 
   @Test()
   public void testBasic() throws Exception {
@@ -85,7 +87,7 @@ public class TestZnodeModify extends ZkUnitTestBase {
     command = new TestCommand(CommandType.VERIFY, new TestTrigger(1000, 0, record), arg);
     commandList.add(command);
 
-    Map<TestCommand, Boolean> results = TestExecutor.executeTest(commandList, ZK_ADDR);
+    Map<TestCommand, Boolean> results = TestExecutor.executeTest(commandList, _zkaddr);
     for (Map.Entry<TestCommand, Boolean> entry : results.entrySet()) {
       Assert.assertTrue(entry.getValue());
     }
@@ -132,7 +134,7 @@ public class TestZnodeModify extends ZkUnitTestBase {
     command = new TestCommand(CommandType.VERIFY, new TestTrigger(3100, 0, recordNew), arg);
     commandList.add(command);
 
-    Map<TestCommand, Boolean> results = TestExecutor.executeTest(commandList, ZK_ADDR);
+    Map<TestCommand, Boolean> results = TestExecutor.executeTest(commandList, _zkaddr);
 
     boolean result = results.remove(command1).booleanValue();
     AssertJUnit.assertFalse(result);
@@ -175,7 +177,7 @@ public class TestZnodeModify extends ZkUnitTestBase {
     command1 = new TestCommand(CommandType.VERIFY, new TestTrigger(1000, 500, recordNew), arg1);
     commandList.add(command1);
 
-    Map<TestCommand, Boolean> results = TestExecutor.executeTest(commandList, ZK_ADDR);
+    Map<TestCommand, Boolean> results = TestExecutor.executeTest(commandList, _zkaddr);
     for (Map.Entry<TestCommand, Boolean> entry : results.entrySet()) {
       Assert.assertFalse(entry.getValue());
     }
@@ -210,7 +212,7 @@ public class TestZnodeModify extends ZkUnitTestBase {
       public void run() {
         try {
           Thread.sleep(3000);
-          final ZkClient zkClient = new ZkClient(ZK_ADDR);
+          final ZkClient zkClient = new ZkClient(_zkaddr);
           zkClient.setZkSerializer(new ZNRecordSerializer());
           zkClient.createPersistent(pathChild1, true);
           zkClient.writeData(pathChild1, record);
@@ -220,7 +222,7 @@ public class TestZnodeModify extends ZkUnitTestBase {
       }
     }.start();
 
-    Map<TestCommand, Boolean> results = TestExecutor.executeTest(commandList, ZK_ADDR);
+    Map<TestCommand, Boolean> results = TestExecutor.executeTest(commandList, _zkaddr);
     for (Map.Entry<TestCommand, Boolean> entry : results.entrySet()) {
       Assert.assertTrue(entry.getValue());
       // System.out.println(entry.getValue() + ":" + entry.getKey());
@@ -232,10 +234,10 @@ public class TestZnodeModify extends ZkUnitTestBase {
 
   @BeforeClass()
   public void beforeClass() {
-    System.out.println("START " + getShortClassName() + " at "
+    System.out.println("START " + TestUtil.getTestName() + " at "
         + new Date(System.currentTimeMillis()));
 
-    _zkClient = new ZkClient(ZK_ADDR);
+    _zkClient = new ZkClient(_zkaddr);
     _zkClient.setZkSerializer(new ZNRecordSerializer());
     if (_zkClient.exists(PREFIX)) {
       _zkClient.deleteRecursive(PREFIX);
@@ -248,7 +250,7 @@ public class TestZnodeModify extends ZkUnitTestBase {
     _zkClient.close();
 
     System.out
-        .println("END " + getShortClassName() + " at " + new Date(System.currentTimeMillis()));
+        .println("END " + TestUtil.getTestName() + " at " + new Date(System.currentTimeMillis()));
 
   }