diff options
author | autumind <shen.zhibing@mobcb.com> | 2021-07-18 15:17:50 +0800 |
---|---|---|
committer | maoling <maoling@apache.org> | 2021-07-18 15:17:50 +0800 |
commit | 2aa17ffe428b9ac8477cedfed293b18f12c2376e (patch) | |
tree | def9b688d9f33218bcfe9fc433900b53a956de4a /zookeeper-server/src/test/java | |
parent | e642a325b91ab829aefa47708c7b4b45811d2d23 (diff) | |
download | zookeeper-2aa17ffe428b9ac8477cedfed293b18f12c2376e.tar.gz |
ZOOKEEPER-4325: Fix bug when list "/" with ZkUtil::listSubTreeBFS
Fix bug [ZOOKEEPER-4325](https://issues.apache.org/jira/browse/ZOOKEEPER-4325), re-create PR from [#1719](https://github.com/apache/zookeeper/pull/1719)
Author: autumind <shen.zhibing@mobcb.com>
Reviewers: maoling <maoling@apache.org>
Closes #1729 from autumind/master
Diffstat (limited to 'zookeeper-server/src/test/java')
-rw-r--r-- | zookeeper-server/src/test/java/org/apache/zookeeper/ZKUtilTest.java | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/ZKUtilTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/ZKUtilTest.java index 1111c2a23..51df90702 100644 --- a/zookeeper-server/src/test/java/org/apache/zookeeper/ZKUtilTest.java +++ b/zookeeper-server/src/test/java/org/apache/zookeeper/ZKUtilTest.java @@ -20,15 +20,20 @@ package org.apache.zookeeper; import static org.junit.Assume.assumeTrue; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertIterableEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import java.io.File; import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; import java.util.UUID; +import org.apache.zookeeper.test.ClientBase; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -public class ZKUtilTest { +public class ZKUtilTest extends ClientBase { private static final File testData = new File(System.getProperty("test.data.dir", "build/test/data")); @@ -85,4 +90,33 @@ public class ZKUtilTest { assertEquals(expectedMessage, error); } + @Test + public void testListRootPathSuccess() throws IOException, InterruptedException, KeeperException { + TestableZooKeeper zk = createClient(); + zk.setData("/", "some".getBytes(), -1); + zk.create("/a", "some".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); + zk.create("/a/b", "some".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); + + List<String> list = ZKUtil.listSubTreeBFS(zk, "/"); + list.remove(Quotas.procZookeeper); + list.remove(Quotas.quotaZookeeper); + list.remove(ZooDefs.CONFIG_NODE); + assertEquals(3, list.size()); + assertIterableEquals(Arrays.asList("/", "/a", "/a/b"), list); + } + + @Test + public void testListNoneRootPathSuccess() throws IOException, InterruptedException, KeeperException { + TestableZooKeeper zk = createClient(); + zk.setData("/", "some".getBytes(), -1); + zk.create("/a", "some".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); + zk.create("/a/b", "some".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); + List<String> aList = ZKUtil.listSubTreeBFS(zk, "/a"); + assertEquals(2, aList.size()); + assertIterableEquals(Arrays.asList("/a", "/a/b"), aList); + + List<String> bList = ZKUtil.listSubTreeBFS(zk, "/a/b"); + assertEquals(1, bList.size()); + assertIterableEquals(Collections.singletonList("/a/b"), bList); + } } |