You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by jx...@apache.org on 2023/08/28 20:58:10 UTC
[helix] 04/21: deserialize test
This is an automated email from the ASF dual-hosted git repository.
jxue pushed a commit to branch metaclient
in repository https://gitbox.apache.org/repos/asf/helix.git
commit 6797d915180d2591e46ebbc48b91fc1da17fb41e
Author: Grant Palau Spencer <gs...@linkedin.com>
AuthorDate: Sat Jun 3 10:06:19 2023 -0700
deserialize test
---
.../metaclient/impl/zk/TestStressZkClient.java | 140 ++++++++++++---------
1 file changed, 79 insertions(+), 61 deletions(-)
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestStressZkClient.java b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestStressZkClient.java
index 3e7140f64..4b541ba74 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestStressZkClient.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestStressZkClient.java
@@ -29,8 +29,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.helix.metaclient.api.DataChangeListener;
import org.apache.helix.metaclient.api.DataUpdater;
import org.apache.helix.metaclient.api.MetaClientInterface;
+import org.apache.helix.metaclient.datamodel.DataRecord;
import org.apache.helix.metaclient.exception.MetaClientException;
import org.apache.helix.metaclient.impl.zk.factory.ZkMetaClientConfig;
+import org.apache.helix.zookeeper.datamodel.ZNRecord;
+import org.apache.helix.zookeeper.datamodel.serializer.ZNRecordSerializer;
import org.apache.helix.zookeeper.exception.ZkClientException;
import org.testng.Assert;
import org.slf4j.Logger;
@@ -43,23 +46,6 @@ public class TestStressZkClient extends ZkMetaClientTestBase {
private static final long TEST_ITERATION_COUNT = 1000;
private static final Logger LOG = LoggerFactory.getLogger(TestStressZkClient.class);
- private void cleanUpTestNodes(String parentZnodeKey) {
- try (ZkMetaClient<String> zkMetaClient = createZkMetaClient()) {
- zkMetaClient.connect();
- int retryCount = 0;
- while (zkMetaClient.countDirectChildren(parentZnodeKey) > 0) {
- try {
- retryCount++;
- zkMetaClient.recursiveDelete(parentZnodeKey);
- } catch (ZkClientException e) {
- if (retryCount >= 3) {
- throw new ZkClientException("Failed to clean up test nodes after 3 tries", e);
- }
- }
- }
- Assert.assertEquals(zkMetaClient.countDirectChildren(parentZnodeKey), 0);
- }
- }
@Test
public void testCreate() {
@@ -92,7 +78,10 @@ public class TestStressZkClient extends ZkMetaClientTestBase {
} catch (Exception ignoredException) {
}
}
- cleanUpTestNodes(zkParentKey);
+
+ // cleanup
+ zkMetaClient.recursiveDelete(zkParentKey);
+ Assert.assertEquals(zkMetaClient.countDirectChildren(zkParentKey), 0);
}
}
@@ -111,7 +100,9 @@ public class TestStressZkClient extends ZkMetaClientTestBase {
Assert.assertEquals(String.valueOf(zkMetaClient.get(zkParentKey + "/" + i)), String.valueOf(i));
}
- cleanUpTestNodes(zkParentKey);
+ // cleanup
+ zkMetaClient.recursiveDelete(zkParentKey);
+ Assert.assertEquals(zkMetaClient.countDirectChildren(zkParentKey), 0);
}
}
@@ -142,8 +133,11 @@ public class TestStressZkClient extends ZkMetaClientTestBase {
} catch (Exception ignoredException) {
}
}
+
+ // cleanup
+ zkMetaClient.recursiveDelete(zkParentKey);
+ Assert.assertEquals(zkMetaClient.countDirectChildren(zkParentKey), 0);
}
- cleanUpTestNodes(zkParentKey);
}
@Test
@@ -212,9 +206,11 @@ public class TestStressZkClient extends ZkMetaClientTestBase {
} catch (Exception ignoredException) {
}
}
- }
- cleanUpTestNodes(zkParentKey);
+ // cleanup
+ zkMetaClient.recursiveDelete(zkParentKey);
+ Assert.assertEquals(zkMetaClient.countDirectChildren(zkParentKey), 0);
+ }
}
@Test
@@ -251,8 +247,11 @@ public class TestStressZkClient extends ZkMetaClientTestBase {
Assert.assertEquals(zkMetaClient.get(childKey), String.valueOf(i));
Assert.assertEquals(entryStat.getVersion(), 2);
}
+
+ // cleanup
+ zkMetaClient.recursiveDelete(zkParentKey);
+ Assert.assertEquals(zkMetaClient.countDirectChildren(zkParentKey), 0);
}
- cleanUpTestNodes(zkParentKey);
}
@Test
@@ -260,59 +259,72 @@ public class TestStressZkClient extends ZkMetaClientTestBase {
final String zkParentKey = "/stressZk_testUpdateSingleNode";
ZkMetaClientConfig config =
new ZkMetaClientConfig.ZkMetaClientConfigBuilder().setConnectionAddress(ZK_ADDR).build();
- try (ZkMetaClient<Integer> zkMetaClient = new ZkMetaClient<>(config)) {
+ try (ZkMetaClient<byte[]> zkMetaClient = new ZkMetaClient<>(config)) {
zkMetaClient.connect();
- zkMetaClient.create(zkParentKey, 0);
+ ZNRecord record = new ZNRecord("foo");
+ record.setIntField("key", 0);
+ ZNRecordSerializer serializer = new ZNRecordSerializer();
+ zkMetaClient.create(zkParentKey, serializer.serialize(record));
+
for (int i = 0; i < TEST_ITERATION_COUNT; i++) {
MetaClientInterface.Stat entryStat = zkMetaClient.exists(zkParentKey);
Assert.assertEquals(entryStat.getVersion(), i);
- Integer newData = zkMetaClient.update(zkParentKey, new DataUpdater<Integer>() {
+ byte[] newData = zkMetaClient.update(zkParentKey, new DataUpdater<byte[]>() {
@Override
- public Integer update(Integer currentData) {
- return currentData + 1;
+ public byte[] update(byte[] currentData) {
+ ZNRecordSerializer serializer = new ZNRecordSerializer();
+ ZNRecord record = (ZNRecord) serializer.deserialize(currentData);
+ int value = record.getIntField("key", 0);
+ record.setIntField("key", value + 1);
+ return serializer.serialize(record);
}
});
- Assert.assertEquals((int) newData, i + 1);
+ ZNRecord newRecord = (ZNRecord) serializer.deserialize(newData);
+ Assert.assertEquals(newRecord.getIntField("key", 0), i+1);
}
- zkMetaClient.delete(zkParentKey);
- zkMetaClient.create(zkParentKey, "parent_node");
- // Set with path to non-existent node - should fail
- for (int i = 0; i < TEST_ITERATION_COUNT; i++) {
- try {
- zkMetaClient.update("/a/b/c", new DataUpdater<Integer>() {
- @Override
- public Integer update(Integer currentData) {
- return currentData + 1;
- }
- });
+// zkMetaClient.delete(zkParentKey);
+// zkMetaClient.create(zkParentKey, "parent_node");
- Assert.fail("Should have failed due to path to non-existent node");
- } catch (Exception ignoredException) {
- }
- }
+// Set with path to non-existent node - should fail
+// for (int i = 0; i < TEST_ITERATION_COUNT; i++) {
+// try {
+// zkMetaClient.update("/a/b/c", new DataUpdater<Integer>() {
+// @Override
+// public Integer update(Integer currentData) {
+// return currentData + 1;
+// }
+// });
+//
+// Assert.fail("Should have failed due to path to non-existent node");
+// } catch (Exception ignoredException) {
+// }
+// }
- zkMetaClient.delete(zkParentKey);
- zkMetaClient.create(zkParentKey, "parent_node");
+// zkMetaClient.delete(zkParentKey);
+// zkMetaClient.create(zkParentKey, "parent_node");
// Set with invalid path - should fail
- for (int i = 0; i < TEST_ITERATION_COUNT; i++) {
- try {
- zkMetaClient.update("/a/b/c", new DataUpdater<Integer>() {
- @Override
- public Integer update(Integer currentData) {
- return currentData + 1;
- }
- });
- Assert.fail("Should have failed due to invalid path - no leading /.");
- } catch (Exception ignoredException) {
- }
- }
+// for (int i = 0; i < TEST_ITERATION_COUNT; i++) {
+// try {
+// zkMetaClient.update("/a/b/c", new DataUpdater<Integer>() {
+// @Override
+// public Integer update(Integer currentData) {
+// return currentData + 1;
+// }
+// });
+// Assert.fail("Should have failed due to invalid path - no leading /.");
+// } catch (Exception ignoredException) {
+// }
+// }
+
+ // cleanup
+ zkMetaClient.recursiveDelete(zkParentKey);
+ Assert.assertEquals(zkMetaClient.countDirectChildren(zkParentKey), 0);
}
- cleanUpTestNodes(zkParentKey);
}
@Test
@@ -344,8 +356,11 @@ public class TestStressZkClient extends ZkMetaClientTestBase {
entryStat = zkMetaClient.exists(childKey);
Assert.assertEquals(entryStat.getVersion(), 1);
}
+
+ // cleanup
+ zkMetaClient.recursiveDelete(zkParentKey);
+ Assert.assertEquals(zkMetaClient.countDirectChildren(zkParentKey), 0);
}
- cleanUpTestNodes(zkParentKey);
}
@Test
@@ -388,7 +403,10 @@ public class TestStressZkClient extends ZkMetaClientTestBase {
Assert.assertTrue(countDownLatch.await(5000, TimeUnit.MILLISECONDS));
Assert.assertTrue(dataExpected.get());
+
+ // cleanup
+ zkMetaClient.recursiveDelete(zkParentKey);
+ Assert.assertEquals(zkMetaClient.countDirectChildren(zkParentKey), 0);
}
- cleanUpTestNodes(zkParentKey);
}
}
\ No newline at end of file