You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by xy...@apache.org on 2023/01/30 20:06:43 UTC
[helix] branch metaclient updated: Rename and reformat metaclient test and util
This is an automated email from the ASF dual-hosted git repository.
xyuanlu pushed a commit to branch metaclient
in repository https://gitbox.apache.org/repos/asf/helix.git
The following commit(s) were added to refs/heads/metaclient by this push:
new 9c18126ee Rename and reformat metaclient test and util
9c18126ee is described below
commit 9c18126ee4d5f1a91bbe9a6abc1f3593e7c56c07
Author: xyuanlu <xy...@gmail.com>
AuthorDate: Mon Jan 30 12:06:36 2023 -0800
Rename and reformat metaclient test and util
Rename and reformat metaclient test and util
---
.../metaclient/exception/MetaClientException.java | 1 +
.../helix/metaclient/impl/zk/ZkMetaClient.java | 8 +-
.../metaclient/impl/zk/util/ZkMetaClientUtil.java | 110 +++++++++++++--------
.../helix/metaclient/impl/zk/TestZkMetaClient.java | 46 +++++----
4 files changed, 100 insertions(+), 65 deletions(-)
diff --git a/meta-client/src/main/java/org/apache/helix/metaclient/exception/MetaClientException.java b/meta-client/src/main/java/org/apache/helix/metaclient/exception/MetaClientException.java
index ca6a213b3..6620799ca 100644
--- a/meta-client/src/main/java/org/apache/helix/metaclient/exception/MetaClientException.java
+++ b/meta-client/src/main/java/org/apache/helix/metaclient/exception/MetaClientException.java
@@ -35,4 +35,5 @@ public class MetaClientException extends RuntimeException {
public MetaClientException(Throwable cause) {
super(cause);
}
+
}
diff --git a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/ZkMetaClient.java b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/ZkMetaClient.java
index 5bc6ca973..2eb0da496 100644
--- a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/ZkMetaClient.java
+++ b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/ZkMetaClient.java
@@ -44,7 +44,8 @@ import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.apache.helix.metaclient.impl.zk.util.ZkMetaClientUtil.convertZkEntryMode;
+
+import static org.apache.helix.metaclient.impl.zk.util.ZkMetaClientUtil.convertZkEntryModeToMetaClientEntryMode;
import static org.apache.helix.metaclient.impl.zk.util.ZkMetaClientUtil.translateZkExceptionToMetaclientException;
public class ZkMetaClient<T> implements MetaClientInterface<T>, AutoCloseable {
@@ -122,7 +123,8 @@ public class ZkMetaClient<T> implements MetaClientInterface<T>, AutoCloseable {
if (zkStats == null) {
return null;
}
- return new Stat(convertZkEntryMode(zkStats.getEphemeralOwner()), zkStats.getVersion());
+ return new Stat(convertZkEntryModeToMetaClientEntryMode(zkStats.getEphemeralOwner()),
+ zkStats.getVersion());
} catch (ZkException e) {
throw translateZkExceptionToMetaclientException(e);
}
@@ -177,7 +179,7 @@ public class ZkMetaClient<T> implements MetaClientInterface<T>, AutoCloseable {
}
@Override
- public void asyncSet(String key, Object data, int version, AsyncCallback.VoidCallback cb) {
+ public void asyncSet(String key, T data, int version, AsyncCallback.VoidCallback cb) {
}
diff --git a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/util/ZkMetaClientUtil.java b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/util/ZkMetaClientUtil.java
index 2c3dc22cd..dc92e706b 100644
--- a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/util/ZkMetaClientUtil.java
+++ b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/util/ZkMetaClientUtil.java
@@ -19,10 +19,26 @@ package org.apache.helix.metaclient.impl.zk.util;
* under the License.
*/
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
import org.apache.helix.metaclient.api.MetaClientInterface;
import org.apache.helix.metaclient.api.OpResult;
-import org.apache.helix.metaclient.exception.*;
-import org.apache.helix.zookeeper.zkclient.exception.*;
+import org.apache.helix.metaclient.exception.MetaClientBadVersionException;
+import org.apache.helix.metaclient.exception.MetaClientException;
+import org.apache.helix.metaclient.exception.MetaClientInterruptException;
+import org.apache.helix.metaclient.exception.MetaClientNoNodeException;
+import org.apache.helix.metaclient.exception.MetaClientTimeoutException;
+import org.apache.helix.zookeeper.zkclient.exception.ZkBadVersionException;
+import org.apache.helix.zookeeper.zkclient.exception.ZkException;
+import org.apache.helix.zookeeper.zkclient.exception.ZkInterruptedException;
+import org.apache.helix.zookeeper.zkclient.exception.ZkNodeExistsException;
+import org.apache.helix.zookeeper.zkclient.exception.ZkTimeoutException;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.Op;
@@ -30,18 +46,11 @@ import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.server.EphemeralType;
-import java.util.Collections;
-import java.util.EnumMap;
-import java.util.List;
-import java.util.Map;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.function.Function;
-
public class ZkMetaClientUtil {
//TODO Implement MetaClient ACL
//Default ACL value until metaClient Op has ACL of its own.
- private static final List<ACL> DEFAULT_ACL = Collections.unmodifiableList(ZooDefs.Ids.OPEN_ACL_UNSAFE);
+ private static final List<ACL> DEFAULT_ACL =
+ Collections.unmodifiableList(ZooDefs.Ids.OPEN_ACL_UNSAFE);
private ZkMetaClientUtil(){
}
@@ -74,22 +83,24 @@ public class ZkMetaClientUtil {
opmap.put(org.apache.helix.metaclient.api.Op.Type.CREATE, op -> {
try {
- CreateMode mode = convertMetaClientMode(((org.apache.helix.metaclient.api.Op.Create) op).getEntryMode());
- return Op.create(op.getPath(), ((org.apache.helix.metaclient.api.Op.Create) op).getData(), DEFAULT_ACL, mode);
+ CreateMode mode = convertMetaClientMode(
+ ((org.apache.helix.metaclient.api.Op.Create) op).getEntryMode());
+ return Op.create(op.getPath(), ((org.apache.helix.metaclient.api.Op.Create) op).getData(),
+ DEFAULT_ACL, mode);
} catch (KeeperException e) {
throw translateZkExceptionToMetaclientException(ZkException.create(e));
}
});
- opmap.put(org.apache.helix.metaclient.api.Op.Type.DELETE,
- op -> Op.delete(op.getPath(), ((org.apache.helix.metaclient.api.Op.Delete) op).getVersion()));
+ opmap.put(org.apache.helix.metaclient.api.Op.Type.DELETE, op -> Op
+ .delete(op.getPath(), ((org.apache.helix.metaclient.api.Op.Delete) op).getVersion()));
- opmap.put(org.apache.helix.metaclient.api.Op.Type.SET,
- op -> Op.setData(op.getPath(),
- ((org.apache.helix.metaclient.api.Op.Set) op).getData(), ((org.apache.helix.metaclient.api.Op.Set) op).getVersion()));
+ opmap.put(org.apache.helix.metaclient.api.Op.Type.SET, op -> Op
+ .setData(op.getPath(), ((org.apache.helix.metaclient.api.Op.Set) op).getData(),
+ ((org.apache.helix.metaclient.api.Op.Set) op).getVersion()));
- opmap.put(org.apache.helix.metaclient.api.Op.Type.CHECK,
- op -> Op.check(op.getPath(), ((org.apache.helix.metaclient.api.Op.Check) op).getVersion()));
+ opmap.put(org.apache.helix.metaclient.api.Op.Type.CHECK, op -> Op
+ .check(op.getPath(), ((org.apache.helix.metaclient.api.Op.Check) op).getVersion()));
return opmap;
}
@@ -121,11 +132,13 @@ public class ZkMetaClientUtil {
public static List<OpResult> zkOpResultToMetaClientOpResults(List<org.apache.zookeeper.OpResult> zkResult) {
List<OpResult> metaClientOpResult = new ArrayList<>();
for (org.apache.zookeeper.OpResult opResult : zkResult) {
- Function<org.apache.zookeeper.OpResult, OpResult> function = getOpResultMap().get(opResult.getClass());
+ Function<org.apache.zookeeper.OpResult, OpResult> function =
+ getOpResultMap().get(opResult.getClass());
if (function != null) {
metaClientOpResult.add(function.apply(opResult));
} else {
- throw new IllegalArgumentException("OpResult type " + opResult.getType() + "is not supported.");
+ throw new IllegalArgumentException(
+ "OpResult type " + opResult.getType() + "is not supported.");
}
}
@@ -133,44 +146,59 @@ public class ZkMetaClientUtil {
}
private static final class OpResultMapHolder {
- static final Map<Class<? extends org.apache.zookeeper.OpResult>, Function<org.apache.zookeeper.OpResult, OpResult>> OPRESULTMAP = initializeOpResultMap();
+ static final Map<Class<? extends org.apache.zookeeper.OpResult>, Function<org.apache.zookeeper.OpResult, OpResult>>
+ OPRESULTMAP = initializeOpResultMap();
private static Map<Class<? extends org.apache.zookeeper.OpResult>, Function<org.apache.zookeeper.OpResult, OpResult>> initializeOpResultMap() {
- Map<Class<? extends org.apache.zookeeper.OpResult>, Function<org.apache.zookeeper.OpResult, OpResult>> opResultMap =
- new HashMap<>();
+ Map<Class<? extends org.apache.zookeeper.OpResult>, Function<org.apache.zookeeper.OpResult, OpResult>>
+ opResultMap = new HashMap<>();
opResultMap.put(org.apache.zookeeper.OpResult.CreateResult.class, opResult -> {
- org.apache.zookeeper.OpResult.CreateResult zkOpCreateResult = (org.apache.zookeeper.OpResult.CreateResult) opResult;
+ org.apache.zookeeper.OpResult.CreateResult zkOpCreateResult =
+ (org.apache.zookeeper.OpResult.CreateResult) opResult;
if (opResult.getType() == 1) {
return new OpResult.CreateResult(zkOpCreateResult.getPath());
} else {
- MetaClientInterface.Stat metaClientStat = new MetaClientInterface.Stat(convertZkEntryMode(zkOpCreateResult.getStat().getEphemeralOwner()),
+ MetaClientInterface.Stat metaClientStat = new MetaClientInterface.Stat(
+ convertZkEntryModeToMetaClientEntryMode(
+ zkOpCreateResult.getStat().getEphemeralOwner()),
zkOpCreateResult.getStat().getVersion());
return new OpResult.CreateResult(zkOpCreateResult.getPath(), metaClientStat);
- }});
+ }
+ });
- opResultMap.put(org.apache.zookeeper.OpResult.DeleteResult.class, opResult -> new OpResult.DeleteResult());
+ opResultMap.put(org.apache.zookeeper.OpResult.DeleteResult.class,
+ opResult -> new OpResult.DeleteResult());
opResultMap.put(org.apache.zookeeper.OpResult.GetDataResult.class, opResult -> {
- org.apache.zookeeper.OpResult.GetDataResult zkOpGetDataResult = (org.apache.zookeeper.OpResult.GetDataResult) opResult;
- MetaClientInterface.Stat metaClientStat = new MetaClientInterface.Stat(convertZkEntryMode(zkOpGetDataResult.getStat().getEphemeralOwner()),
+ org.apache.zookeeper.OpResult.GetDataResult zkOpGetDataResult =
+ (org.apache.zookeeper.OpResult.GetDataResult) opResult;
+ MetaClientInterface.Stat metaClientStat = new MetaClientInterface.Stat(
+ convertZkEntryModeToMetaClientEntryMode(
+ zkOpGetDataResult.getStat().getEphemeralOwner()),
zkOpGetDataResult.getStat().getVersion());
return new OpResult.GetDataResult(zkOpGetDataResult.getData(), metaClientStat);
});
opResultMap.put(org.apache.zookeeper.OpResult.SetDataResult.class, opResult -> {
- org.apache.zookeeper.OpResult.SetDataResult zkOpSetDataResult = (org.apache.zookeeper.OpResult.SetDataResult) opResult;
- MetaClientInterface.Stat metaClientStat = new MetaClientInterface.Stat(convertZkEntryMode(zkOpSetDataResult.getStat().getEphemeralOwner()),
+ org.apache.zookeeper.OpResult.SetDataResult zkOpSetDataResult =
+ (org.apache.zookeeper.OpResult.SetDataResult) opResult;
+ MetaClientInterface.Stat metaClientStat = new MetaClientInterface.Stat(
+ convertZkEntryModeToMetaClientEntryMode(
+ zkOpSetDataResult.getStat().getEphemeralOwner()),
zkOpSetDataResult.getStat().getVersion());
return new OpResult.SetDataResult(metaClientStat);
});
- opResultMap.put(org.apache.zookeeper.OpResult.GetChildrenResult.class, opResult -> new OpResult.GetChildrenResult(
- ((org.apache.zookeeper.OpResult.GetChildrenResult) opResult).getChildren()));
+ opResultMap.put(org.apache.zookeeper.OpResult.GetChildrenResult.class,
+ opResult -> new OpResult.GetChildrenResult(
+ ((org.apache.zookeeper.OpResult.GetChildrenResult) opResult).getChildren()));
- opResultMap.put(org.apache.zookeeper.OpResult.CheckResult.class, opResult -> new OpResult.CheckResult());
+ opResultMap.put(org.apache.zookeeper.OpResult.CheckResult.class,
+ opResult -> new OpResult.CheckResult());
- opResultMap.put(org.apache.zookeeper.OpResult.ErrorResult.class, opResult -> new OpResult.ErrorResult(
- ((org.apache.zookeeper.OpResult.ErrorResult) opResult).getErr()));
+ opResultMap.put(org.apache.zookeeper.OpResult.ErrorResult.class,
+ opResult -> new OpResult.ErrorResult(
+ ((org.apache.zookeeper.OpResult.ErrorResult) opResult).getErr()));
return opResultMap;
}
@@ -180,7 +208,8 @@ public class ZkMetaClientUtil {
return OpResultMapHolder.OPRESULTMAP;
}
- public static MetaClientInterface.EntryMode convertZkEntryMode(long ephemeralOwner) {
+ public static MetaClientInterface.EntryMode convertZkEntryModeToMetaClientEntryMode(
+ long ephemeralOwner) {
EphemeralType zkEphemeralType = EphemeralType.get(ephemeralOwner);
switch (zkEphemeralType) {
case VOID:
@@ -206,8 +235,7 @@ public class ZkMetaClientUtil {
return new MetaClientTimeoutException(e);
} else if (e instanceof ZkInterruptedException) {
return new MetaClientInterruptException(e);
- } else {
- return new MetaClientException(e);
}
+ return new MetaClientException(e);
}
}
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestZkMetaClient.java b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestZkMetaClient.java
index 15fce2e41..b4b7aedac 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestZkMetaClient.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestZkMetaClient.java
@@ -22,25 +22,25 @@ package org.apache.helix.metaclient.impl.zk;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.helix.metaclient.api.DataUpdater;
-import org.apache.helix.metaclient.api.MetaClientInterface;
-import org.apache.helix.metaclient.exception.MetaClientException;
-import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.helix.metaclient.api.DataChangeListener;
-import org.apache.helix.metaclient.impl.zk.factory.ZkMetaClientConfig;
+import org.apache.helix.metaclient.api.DataUpdater;
+import org.apache.helix.metaclient.api.MetaClientInterface;
import org.apache.helix.metaclient.api.Op;
import org.apache.helix.metaclient.api.OpResult;
+import org.apache.helix.metaclient.exception.MetaClientException;
+import org.apache.helix.metaclient.impl.zk.factory.ZkMetaClientConfig;
import org.apache.helix.zookeeper.zkclient.IDefaultNameSpace;
import org.apache.helix.zookeeper.zkclient.ZkServer;
import org.apache.zookeeper.KeeperException;
@@ -57,9 +57,9 @@ public class TestZkMetaClient {
private static final String ZK_ADDR = "localhost:2183";
private static final int DEFAULT_TIMEOUT_MS = 1000;
private static final String ENTRY_STRING_VALUE = "test-value";
- protected static final String ZK_SHARDING_KEY_PREFIX = "/sharding-key-0";
- protected static String PARENT_PATH = ZK_SHARDING_KEY_PREFIX + "/RealmAwareZkClient";
- protected static final String TEST_INVALID_PATH = ZK_SHARDING_KEY_PREFIX + "_invalid" + "/a/b/c";
+ protected static final String TRANSACTION_TEST_KEY_PREFIX = "/sharding-key-0";
+ protected static String PARENT_PATH = TRANSACTION_TEST_KEY_PREFIX + "/RealmAwareZkClient";
+ protected static final String TEST_INVALID_PATH = TRANSACTION_TEST_KEY_PREFIX + "_invalid" + "/a/b/c";
private final Object _syncObject = new Object();
@@ -300,6 +300,9 @@ public class TestZkMetaClient {
Assert.assertTrue(dataExpected.get());
}
}
+
+ // TODO: Create a ZkMetadata test base class and move these helper to base class when more tests
+ // are added.
private static ZkMetaClient<String> createZkMetaClient() {
ZkMetaClientConfig config =
new ZkMetaClientConfig.ZkMetaClientConfigBuilder().setConnectionAddress(ZK_ADDR).build();
@@ -328,18 +331,18 @@ public class TestZkMetaClient {
zkServer.start();
return zkServer;
}
-
+
/**
- * Test that zk multi works for zkmetaclient operations create,
+ * Test that zk transactional operation works for zkmetaclient operations create,
* delete, and set.
*/
@Test
- public void testMultiOps() {
- String test_name = "/test_multi_ops";
+ public void testTransactionOps() {
+ String test_name = "/test_transaction_ops";
try(ZkMetaClient<String> zkMetaClient = createZkMetaClient()) {
zkMetaClient.connect();
- zkMetaClient.create(ZK_SHARDING_KEY_PREFIX, ENTRY_STRING_VALUE);
+ zkMetaClient.create(TRANSACTION_TEST_KEY_PREFIX, ENTRY_STRING_VALUE);
//Create Nodes
List<Op> ops = Arrays.asList(
@@ -371,12 +374,12 @@ public class TestZkMetaClient {
}
/**
- * Tests that attempts to call multi on an invalid path. Should fail.
+ * Tests that attempts to call transactional operation on an invalid path. Should fail.
* @throws KeeperException
*/
- @Test(dependsOnMethods = "testMultiOps")
- public void testMultiFail() {
- String test_name = "/test_multi_fail";
+ @Test(dependsOnMethods = "testTransactionOps")
+ public void testTransactionFail() {
+ String test_name = "/test_transaction_fail";
try(ZkMetaClient<String> zkMetaClient = createZkMetaClient()) {
zkMetaClient.connect();
//Create Nodes
@@ -387,7 +390,8 @@ public class TestZkMetaClient {
try {
zkMetaClient.transactionOP(ops);
- Assert.fail("Should have thrown an exception. Cannot run multi on incorrect path.");
+ Assert.fail(
+ "Should have thrown an exception. Cannot run transactional create OP on incorrect path.");
} catch (Exception e) {
MetaClientInterface.Stat entryStat = zkMetaClient.exists(PARENT_PATH);
Assert.assertNull(entryStat);