This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
     new 2add0c48e Refactor and fix puppy for metaclient (#2870)
2add0c48e is described below

commit 2add0c48e648c011740ec419a1b1ef17a5888c97
Author: xyuanlu <[email protected]>
AuthorDate: Mon Aug 5 11:17:08 2024 -0700

    Refactor and fix puppy for metaclient (#2870)
    
    Refactor and fix puppy for metaclient
---
 .../zk/TestMultiThreadStressTest/CreatePuppy.java  |   5 +-
 .../zk/TestMultiThreadStressTest/DeletePuppy.java  |   7 +-
 .../zk/TestMultiThreadStressTest/GetPuppy.java     |   4 +-
 .../zk/TestMultiThreadStressTest/SetPuppy.java     |   4 +-
 .../TestMultiThreadStressZKClient.java             | 183 ++++++++++++---------
 .../zk/TestMultiThreadStressTest/UpdatePuppy.java  |   5 +-
 .../apache/helix/metaclient/impl/zk/TestUtil.java  |   8 +
 .../helix/metaclient/puppy/AbstractPuppy.java      |   4 +-
 .../leaderelection/LeaderElectionPuppy.java        |   7 +-
 9 files changed, 127 insertions(+), 100 deletions(-)

diff --git 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/CreatePuppy.java
 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/CreatePuppy.java
index 3940f79ab..3f5c92f0f 100644
--- 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/CreatePuppy.java
+++ 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/CreatePuppy.java
@@ -29,10 +29,9 @@ import java.util.Random;
 public class CreatePuppy extends AbstractPuppy {
 
   private final Random _random;
-  private final String _parentPath = "/test";
 
-  public CreatePuppy(MetaClientInterface<String> metaclient, PuppySpec 
puppySpec) {
-    super(metaclient, puppySpec);
+  public CreatePuppy(MetaClientInterface<String> metaclient, PuppySpec 
puppySpec, String parentPath) {
+    super(metaclient, puppySpec, parentPath);
     _random = new Random();
   }
 
diff --git 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/DeletePuppy.java
 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/DeletePuppy.java
index 1aa9d4d72..cc066d3a2 100644
--- 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/DeletePuppy.java
+++ 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/DeletePuppy.java
@@ -28,11 +28,12 @@ import java.util.Random;
 public class DeletePuppy extends AbstractPuppy {
 
   private final Random _random;
-  private final String _parentPath = "/test";
+  private final String _parentPath;
 
-  public DeletePuppy(MetaClientInterface<String> metaclient, PuppySpec 
puppySpec) {
-    super(metaclient, puppySpec);
+  public DeletePuppy(MetaClientInterface<String> metaclient, PuppySpec 
puppySpec, String parentPath) {
+    super(metaclient, puppySpec, parentPath);
     _random = new Random();
+    _parentPath = parentPath;
   }
 
   @Override
diff --git 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/GetPuppy.java
 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/GetPuppy.java
index 4af1c4df3..0bd8ef25f 100644
--- 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/GetPuppy.java
+++ 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/GetPuppy.java
@@ -31,8 +31,8 @@ public class GetPuppy extends AbstractPuppy {
   private final Random _random;
   private final String _parentPath = "/test";
 
-  public GetPuppy(MetaClientInterface<String> metaclient, PuppySpec puppySpec) 
{
-    super(metaclient, puppySpec);
+  public GetPuppy(MetaClientInterface<String> metaclient, PuppySpec puppySpec, 
String parentPath) {
+    super(metaclient, puppySpec, parentPath);
     _random = new Random();
   }
 
diff --git 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/SetPuppy.java
 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/SetPuppy.java
index 3385b8673..97301bed4 100644
--- 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/SetPuppy.java
+++ 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/SetPuppy.java
@@ -31,8 +31,8 @@ public class SetPuppy extends AbstractPuppy {
   private final Random _random;
   private final String _parentPath = "/test";
 
-  public SetPuppy(MetaClientInterface<String> metaclient, PuppySpec puppySpec) 
{
-    super(metaclient, puppySpec);
+  public SetPuppy(MetaClientInterface<String> metaclient, PuppySpec puppySpec, 
String parentPath) {
+    super(metaclient, puppySpec, parentPath);
     _random = new Random();
   }
 
diff --git 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/TestMultiThreadStressZKClient.java
 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/TestMultiThreadStressZKClient.java
index 6a01fffa7..90f490578 100644
--- 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/TestMultiThreadStressZKClient.java
+++ 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/TestMultiThreadStressZKClient.java
@@ -35,6 +35,9 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import static org.apache.helix.metaclient.impl.zk.TestUtil.*;
+
+
 public class TestMultiThreadStressZKClient extends ZkMetaClientTestBase {
 
   private ZkMetaClient<String> _zkMetaClient;
@@ -50,12 +53,13 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
 
   @Test
   public void testCreatePuppy() {
-    _zkMetaClient.create(zkParentKey, "test");
+    String testPath = zkParentKey + getTestMethodName();
+    _zkMetaClient.create(testPath, "test");
 
     PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new 
ExecDelay(5000, 0.1f), 5);
-    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
-    CreatePuppy createPuppy2 = new CreatePuppy(_zkMetaClient, puppySpec);
-    CreatePuppy createPuppy3 = new CreatePuppy(_zkMetaClient, puppySpec);
+    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
+    CreatePuppy createPuppy2 = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
+    CreatePuppy createPuppy3 = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
 
     PuppyManager puppyManager = new PuppyManager();
     puppyManager.addPuppy(createPuppy);
@@ -67,17 +71,18 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     assertNoExceptions(puppyManager, null);
 
     // cleanup
-    _zkMetaClient.recursiveDelete(zkParentKey);
-    Assert.assertEquals(_zkMetaClient.countDirectChildren(zkParentKey), 0);
+    _zkMetaClient.recursiveDelete(testPath);
+    Assert.assertEquals(_zkMetaClient.countDirectChildren(testPath), 0);
   }
 
-  @Test
+  @Test(dependsOnMethods = "testCreatePuppy")
   public void testDeletePuppy() {
-    _zkMetaClient.create(zkParentKey, "test");
+    String testPath = zkParentKey + getTestMethodName();
+    _zkMetaClient.create(testPath, "test");
 
     PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new 
ExecDelay(5000, 0.1f), 5);
-    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
-    DeletePuppy deletePuppy = new DeletePuppy(_zkMetaClient, puppySpec);
+    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
+    DeletePuppy deletePuppy = new DeletePuppy(_zkMetaClient, puppySpec, 
testPath);
 
     PuppyManager puppyManager = new PuppyManager();
     puppyManager.addPuppy(createPuppy);
@@ -88,17 +93,18 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     assertNoExceptions(puppyManager, null);
 
     // cleanup
-    _zkMetaClient.recursiveDelete(zkParentKey);
-    Assert.assertEquals(_zkMetaClient.countDirectChildren(zkParentKey), 0);
+    _zkMetaClient.recursiveDelete(testPath);
+    Assert.assertEquals(_zkMetaClient.countDirectChildren(testPath), 0);
   }
 
-  @Test
+  @Test(dependsOnMethods = "testDeletePuppy")
   public void testGetPuppy() {
-    _zkMetaClient.create(zkParentKey, "test");
+    String testPath = zkParentKey + getTestMethodName();
+    _zkMetaClient.create(testPath, "test");
 
     PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new 
ExecDelay(5000, 0.1f), 5);
-    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
-    GetPuppy getPuppy = new GetPuppy(_zkMetaClient, puppySpec);
+    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
+    GetPuppy getPuppy = new GetPuppy(_zkMetaClient, puppySpec, testPath);
 
     PuppyManager puppyManager = new PuppyManager();
     puppyManager.addPuppy(createPuppy);
@@ -109,17 +115,18 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     assertNoExceptions(puppyManager, null);
 
     // cleanup
-    _zkMetaClient.recursiveDelete(zkParentKey);
-    Assert.assertEquals(_zkMetaClient.countDirectChildren(zkParentKey), 0);
+    _zkMetaClient.recursiveDelete(testPath);
+    Assert.assertEquals(_zkMetaClient.countDirectChildren(testPath), 0);
   }
 
-  @Test
+  @Test(dependsOnMethods = "testGetPuppy")
   public void testSetPuppy() {
-    _zkMetaClient.create(zkParentKey, "test");
+    String testPath = zkParentKey + getTestMethodName();
+    _zkMetaClient.create(testPath, "test");
 
     PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new 
ExecDelay(5000, 0.1f), 5);
-    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
-    SetPuppy setPuppy = new SetPuppy(_zkMetaClient, puppySpec);
+    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
+    SetPuppy setPuppy = new SetPuppy(_zkMetaClient, puppySpec, testPath);
 
     PuppyManager puppyManager = new PuppyManager();
     puppyManager.addPuppy(createPuppy);
@@ -130,17 +137,18 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     assertNoExceptions(puppyManager, null);
 
     // cleanup
-    _zkMetaClient.recursiveDelete(zkParentKey);
-    Assert.assertEquals(_zkMetaClient.countDirectChildren(zkParentKey), 0);
+    _zkMetaClient.recursiveDelete(testPath);
+    Assert.assertEquals(_zkMetaClient.countDirectChildren(testPath), 0);
   }
 
-  @Test
+  @Test(dependsOnMethods = "testSetPuppy")
   public void testUpdatePuppy() {
-    _zkMetaClient.create(zkParentKey, "test");
+    String testPath = zkParentKey + getTestMethodName();
+    _zkMetaClient.create(testPath, "test");
 
     PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new 
ExecDelay(5000, 0.1f), 5);
-    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
-    UpdatePuppy updatePuppy = new UpdatePuppy(_zkMetaClient, puppySpec);
+    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
+    UpdatePuppy updatePuppy = new UpdatePuppy(_zkMetaClient, puppySpec, 
testPath);
 
     PuppyManager puppyManager = new PuppyManager();
     puppyManager.addPuppy(createPuppy);
@@ -151,20 +159,21 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     assertNoExceptions(puppyManager, null);
 
     // cleanup
-    _zkMetaClient.recursiveDelete(zkParentKey);
-    Assert.assertEquals(_zkMetaClient.countDirectChildren(zkParentKey), 0);
+    _zkMetaClient.recursiveDelete(testPath);
+    Assert.assertEquals(_zkMetaClient.countDirectChildren(testPath), 0);
   }
 
-  @Test
+  @Test(dependsOnMethods = "testUpdatePuppy")
   public void testCrudPuppies() {
-    _zkMetaClient.create(zkParentKey, "test");
+    String testPath = zkParentKey + getTestMethodName();
+    _zkMetaClient.create(testPath, "test");
 
     PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new 
ExecDelay(5000, 0.1f), 5);
-    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
-    GetPuppy getPuppy = new GetPuppy(_zkMetaClient, puppySpec);
-    DeletePuppy deletePuppy = new DeletePuppy(_zkMetaClient, puppySpec);
-    SetPuppy setPuppy = new SetPuppy(_zkMetaClient, puppySpec);
-    UpdatePuppy updatePuppy = new UpdatePuppy(_zkMetaClient, puppySpec);
+    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
+    GetPuppy getPuppy = new GetPuppy(_zkMetaClient, puppySpec, testPath);
+    DeletePuppy deletePuppy = new DeletePuppy(_zkMetaClient, puppySpec, 
testPath);
+    SetPuppy setPuppy = new SetPuppy(_zkMetaClient, puppySpec, testPath);
+    UpdatePuppy updatePuppy = new UpdatePuppy(_zkMetaClient, puppySpec, 
testPath);
 
     PuppyManager puppyManager = new PuppyManager();
     puppyManager.addPuppy(createPuppy);
@@ -178,24 +187,25 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     assertNoExceptions(puppyManager, null);
 
     // cleanup
-    _zkMetaClient.recursiveDelete(zkParentKey);
-    Assert.assertEquals(_zkMetaClient.countDirectChildren(zkParentKey), 0);
+    _zkMetaClient.recursiveDelete(testPath);
+    Assert.assertEquals(_zkMetaClient.countDirectChildren(testPath), 0);
   }
 
-
-  @Test
+  @Test(dependsOnMethods = "testCrudPuppies")
   public void testBasicParentListenerPuppy() {
-    _zkMetaClient.create(zkParentKey, "test");
+    String testPath = zkParentKey + getTestMethodName();
+    _zkMetaClient.create(testPath, "test");
     AtomicInteger globalChildChangeCounter = new AtomicInteger();
     ChildChangeListener childChangeListener = (changedPath, changeType) -> {
       globalChildChangeCounter.addAndGet(1);
-      System.out.println("-------------- Child change detected: " + changeType 
+ " at path: " + changedPath + ". Number of total changes: " + 
globalChildChangeCounter.get());
+      System.out.println("-------------- Child change detected: " + changeType 
+ " at path: " + changedPath
+          + ". Number of total changes: " + globalChildChangeCounter.get());
     };
 
-    _zkMetaClient.subscribeChildChanges(zkParentKey, childChangeListener, 
false);
+    _zkMetaClient.subscribeChildChanges(testPath, childChangeListener, false);
 
     PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new 
ExecDelay(5000, 0.1f), 5);
-    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
+    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
 
     PuppyManager puppyManager = new PuppyManager();
     puppyManager.addPuppy(createPuppy);
@@ -205,28 +215,31 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     assertNoExceptions(puppyManager, globalChildChangeCounter);
 
     // cleanup
-    _zkMetaClient.unsubscribeChildChanges(zkParentKey, childChangeListener);
-    _zkMetaClient.recursiveDelete(zkParentKey);
-    Assert.assertEquals(_zkMetaClient.countDirectChildren(zkParentKey), 0);
+    _zkMetaClient.unsubscribeChildChanges(testPath, childChangeListener);
+    _zkMetaClient.recursiveDelete(testPath);
+    Assert.assertEquals(_zkMetaClient.countDirectChildren(testPath), 0);
   }
 
-  @Test
+  @Test(dependsOnMethods = "testBasicParentListenerPuppy")
   public void testComplexParentListenerPuppy() {
-    _zkMetaClient.create(zkParentKey, "test");
+    String testPath = zkParentKey + getTestMethodName();
+    _zkMetaClient.create(testPath, "test");
     // Global counter for all child changes
     AtomicInteger globalChildChangeCounter = new AtomicInteger();
     ChildChangeListener childChangeListener = (changedPath, changeType) -> {
       globalChildChangeCounter.addAndGet(1);
-      System.out.println("-------------- Child change detected: " + changeType 
+ " at path: " + changedPath + " number of changes: " + 
globalChildChangeCounter.get());
+      System.out.println(
+          "-------------- Child change detected: " + changeType + " at path: " 
+ changedPath + " number of changes: "
+              + globalChildChangeCounter.get());
     };
-    _zkMetaClient.subscribeChildChanges(zkParentKey, childChangeListener, 
false);
+    _zkMetaClient.subscribeChildChanges(testPath, childChangeListener, false);
 
     PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new 
ExecDelay(5000, 0.1f), 5);
-    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
-    GetPuppy getPuppy = new GetPuppy(_zkMetaClient, puppySpec);
-    DeletePuppy deletePuppy = new DeletePuppy(_zkMetaClient, puppySpec);
-    SetPuppy setPuppy = new SetPuppy(_zkMetaClient, puppySpec);
-    UpdatePuppy updatePuppy = new UpdatePuppy(_zkMetaClient, puppySpec);
+    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
+    GetPuppy getPuppy = new GetPuppy(_zkMetaClient, puppySpec, testPath);
+    DeletePuppy deletePuppy = new DeletePuppy(_zkMetaClient, puppySpec, 
testPath);
+    SetPuppy setPuppy = new SetPuppy(_zkMetaClient, puppySpec, testPath);
+    UpdatePuppy updatePuppy = new UpdatePuppy(_zkMetaClient, puppySpec, 
testPath);
 
     PuppyManager puppyManager = new PuppyManager();
     puppyManager.addPuppy(createPuppy);
@@ -240,23 +253,23 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     assertNoExceptions(puppyManager, globalChildChangeCounter);
 
     // cleanup
-    _zkMetaClient.recursiveDelete(zkParentKey);
-    Assert.assertEquals(_zkMetaClient.countDirectChildren(zkParentKey), 0);
-    _zkMetaClient.unsubscribeChildChanges(zkParentKey, childChangeListener);
-    _zkMetaClient.delete(zkParentKey);
+    _zkMetaClient.recursiveDelete(testPath);
+    Assert.assertEquals(_zkMetaClient.countDirectChildren(testPath), 0);
+    _zkMetaClient.unsubscribeChildChanges(testPath, childChangeListener);
+    _zkMetaClient.delete(testPath);
   }
 
-
-  @Test
+  @Test(dependsOnMethods = "testComplexParentListenerPuppy")
   public void testChildListenerPuppy() {
-    _zkMetaClient.create(zkParentKey, "test");
+    String testPath = zkParentKey + getTestMethodName();
+    _zkMetaClient.create(testPath, "test");
     // Setting num diff paths to 3 until we find a better way of scaling 
listeners.
     PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new 
ExecDelay(5000, 0.1f), 3);
-    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
-    GetPuppy getPuppy = new GetPuppy(_zkMetaClient, puppySpec);
-    DeletePuppy deletePuppy = new DeletePuppy(_zkMetaClient, puppySpec);
-    SetPuppy setPuppy = new SetPuppy(_zkMetaClient, puppySpec);
-    UpdatePuppy updatePuppy = new UpdatePuppy(_zkMetaClient, puppySpec);
+    CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec, 
testPath);
+    GetPuppy getPuppy = new GetPuppy(_zkMetaClient, puppySpec, testPath);
+    DeletePuppy deletePuppy = new DeletePuppy(_zkMetaClient, puppySpec, 
testPath);
+    SetPuppy setPuppy = new SetPuppy(_zkMetaClient, puppySpec, testPath);
+    UpdatePuppy updatePuppy = new UpdatePuppy(_zkMetaClient, puppySpec, 
testPath);
 
     PuppyManager puppyManager = new PuppyManager();
     puppyManager.addPuppy(createPuppy);
@@ -265,28 +278,38 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     puppyManager.addPuppy(setPuppy);
     puppyManager.addPuppy(updatePuppy);
 
+    String childTestPath0 = testPath + "/0";
+    String childTestPath1 = testPath + "/1";
+    String childTestPath2 = testPath + "/2";
+
     // Create a child listener for each child defined in number diff paths in 
puppyspec.
     // TODO: Make this a parameter for a loop.
     AtomicInteger childChangeCounter0 = new AtomicInteger();
     ChildChangeListener childChangeListener0 = (changedPath, changeType) -> {
       childChangeCounter0.addAndGet(1);
-      System.out.println("-------------- Child change detected: " + changeType 
+ " at path: " + changedPath + " number of changes: " + 
childChangeCounter0.get());
+      System.out.println(
+          "-------------- Child change detected: " + changeType + " at path: " 
+ changedPath + " number of changes: "
+              + childChangeCounter0.get());
     };
-    _zkMetaClient.subscribeChildChanges("/test/0", childChangeListener0, 
false);
+    _zkMetaClient.subscribeChildChanges(childTestPath0, childChangeListener0, 
false);
 
     AtomicInteger childChangeCounter1 = new AtomicInteger();
     ChildChangeListener childChangeListener1 = (changedPath, changeType) -> {
       childChangeCounter1.addAndGet(1);
-      System.out.println("-------------- Child change detected: " + changeType 
+ " at path: " + changedPath + " number of changes: " + 
childChangeCounter1.get());
+      System.out.println(
+          "-------------- Child change detected: " + changeType + " at path: " 
+ changedPath + " number of changes: "
+              + childChangeCounter1.get());
     };
-    _zkMetaClient.subscribeChildChanges("/test/1", childChangeListener1, 
false);
+    _zkMetaClient.subscribeChildChanges(childTestPath1, childChangeListener1, 
false);
 
     AtomicInteger childChangeCounter2 = new AtomicInteger();
     ChildChangeListener childChangeListener2 = (changedPath, changeType) -> {
       childChangeCounter2.addAndGet(1);
-      System.out.println("-------------- Child change detected: " + changeType 
+ " at path: " + changedPath + " number of changes: " + 
childChangeCounter2.get());
+      System.out.println(
+          "-------------- Child change detected: " + changeType + " at path: " 
+ changedPath + " number of changes: "
+              + childChangeCounter2.get());
     };
-    _zkMetaClient.subscribeChildChanges("/test/2", childChangeListener2, 
false);
+    _zkMetaClient.subscribeChildChanges(childTestPath2, childChangeListener2, 
false);
 
     puppyManager.start(TIMEOUT);
 
@@ -314,11 +337,11 @@ public class TestMultiThreadStressZKClient extends 
ZkMetaClientTestBase {
     Assert.assertEquals(childChangeCounter2.get(), 
mergedEventChangeCounterMap.getOrDefault("2", 0).intValue());
 
     // cleanup
-    _zkMetaClient.unsubscribeChildChanges("/test/0", childChangeListener0);
-    _zkMetaClient.unsubscribeChildChanges("/test/1", childChangeListener1);
-    _zkMetaClient.unsubscribeChildChanges("/test/2", childChangeListener2);
-    _zkMetaClient.recursiveDelete(zkParentKey);
-    Assert.assertEquals(_zkMetaClient.countDirectChildren(zkParentKey), 0);
+    _zkMetaClient.unsubscribeChildChanges(childTestPath0, 
childChangeListener0);
+    _zkMetaClient.unsubscribeChildChanges(childTestPath1, 
childChangeListener1);
+    _zkMetaClient.unsubscribeChildChanges(childTestPath2, 
childChangeListener2);
+    _zkMetaClient.recursiveDelete(testPath);
+    Assert.assertEquals(_zkMetaClient.countDirectChildren(testPath), 0);
   }
 
   private void assertNoExceptions(PuppyManager puppyManager, AtomicInteger 
globalChangeCounter) {
diff --git 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/UpdatePuppy.java
 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/UpdatePuppy.java
index 5af055f74..c302567fa 100644
--- 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/UpdatePuppy.java
+++ 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/UpdatePuppy.java
@@ -29,10 +29,9 @@ import java.util.Random;
 public class UpdatePuppy extends AbstractPuppy {
 
   private final Random _random;
-  private final String _parentPath = "/test";
 
-  public UpdatePuppy(MetaClientInterface<String> metaclient, PuppySpec 
puppySpec) {
-    super(metaclient, puppySpec);
+  public UpdatePuppy(MetaClientInterface<String> metaclient, PuppySpec 
puppySpec, String parentPath) {
+    super(metaclient, puppySpec, parentPath);
     _random = new Random();
   }
 
diff --git 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestUtil.java 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestUtil.java
index 92c0182b3..a0aca15e8 100644
--- 
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestUtil.java
+++ 
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestUtil.java
@@ -203,4 +203,12 @@ public class TestUtil {
     zkClient.process(event);
   }
 
+  /**
+   * return the name of the calling test method
+   */
+  public static String getTestMethodName() {
+    StackTraceElement[] calls = Thread.currentThread().getStackTrace();
+    return calls[2].getMethodName();
+  }
+
 }
\ No newline at end of file
diff --git 
a/meta-client/src/test/java/org/apache/helix/metaclient/puppy/AbstractPuppy.java
 
b/meta-client/src/test/java/org/apache/helix/metaclient/puppy/AbstractPuppy.java
index b16f78615..80189d124 100644
--- 
a/meta-client/src/test/java/org/apache/helix/metaclient/puppy/AbstractPuppy.java
+++ 
b/meta-client/src/test/java/org/apache/helix/metaclient/puppy/AbstractPuppy.java
@@ -32,11 +32,13 @@ public abstract class AbstractPuppy implements Runnable {
   protected PuppySpec _puppySpec;
   public final HashMap<String, Integer> _eventChangeCounterMap;
   public int _unhandledErrorCounter;
+  protected final String _parentPath ;
 
-  public AbstractPuppy(MetaClientInterface<String> metaclient, PuppySpec 
puppySpec) {
+  public AbstractPuppy(MetaClientInterface<String> metaclient, PuppySpec 
puppySpec, String parentPath) {
     _metaclient = metaclient;
     _puppySpec = puppySpec;
     _eventChangeCounterMap = new HashMap<>();
+    _parentPath = parentPath;
   }
 
   /**
diff --git 
a/meta-client/src/test/java/org/apache/helix/metaclient/recipes/leaderelection/LeaderElectionPuppy.java
 
b/meta-client/src/test/java/org/apache/helix/metaclient/recipes/leaderelection/LeaderElectionPuppy.java
index 3f123d3ac..0b7b6616c 100644
--- 
a/meta-client/src/test/java/org/apache/helix/metaclient/recipes/leaderelection/LeaderElectionPuppy.java
+++ 
b/meta-client/src/test/java/org/apache/helix/metaclient/recipes/leaderelection/LeaderElectionPuppy.java
@@ -35,14 +35,9 @@ public class LeaderElectionPuppy extends AbstractPuppy {
   private final Random _random;
   LeaderElectionClient _leaderElectionClient;
 
-  public LeaderElectionPuppy(MetaClientInterface<String> metaclient, PuppySpec 
puppySpec) {
-    super(metaclient, puppySpec);
-    _random = new Random();
-  }
-
   public LeaderElectionPuppy(LeaderElectionClient leaderElectionClient, 
PuppySpec puppySpec, String leaderGroup,
       String participant) {
-    super(leaderElectionClient.getMetaClient(), puppySpec);
+    super(leaderElectionClient.getMetaClient(), puppySpec, leaderGroup);
     _leaderElectionClient = leaderElectionClient;
     _leaderGroup = leaderGroup;
     _random = new Random();

Reply via email to