Пример #1
0
        public async Task ExceptionHandlingTest()
        {
            string path = $"/asyncexception{Guid.NewGuid()}";

            using (ZooKeeper zk = CreateClient())
            {
                await zk.CreateAsync(path, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);

                Assert.That(async() => await zk.CreateAsync(path, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent),
                            Throws.Exception.TypeOf <NodeExistsException>().With.Property(nameof(NodeExistsException.ErrorCode)).EqualTo(Code.NODEEXISTS));
            }
        }
Пример #2
0
        public async Task GetChildrenTest()
        {
            string path       = $"/asyncchildren{Guid.NewGuid()}";
            string child1path = "child1";
            string child2path = "child2";

            using (ZooKeeper zk = CreateClient())
            {
                await zk.CreateAsync(path, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);

                Assert.That(await zk.GetChildrenAsync(path, false), Is.Empty);

                await Task.WhenAll(zk.CreateAsync($"{path}/{child1path}", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent),
                                   zk.CreateAsync($"{path}/{child2path}", new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent)).ConfigureAwait(false);

                Assert.That(await zk.GetChildrenAsync(path, false), Is.EquivalentTo(new[] { child1path, child2path }));
            }
        }
 /// <summary>
 /// 设置指定的节点为指定值,如果不存在,会创建该节点
 /// </summary>
 /// <param name="keeper"></param>
 /// <param name="path"></param>
 /// <param name="values"></param>
 /// <returns></returns>
 public static async Task SetDataAsync(this ZooKeeper keeper, ZookeeperPathString path, byte[] values)
 {
     if (await keeper.ExistAsync(path))
     {
         await keeper.setDataAsync(path, values);
     }
     else
     {
         await keeper.CreateAsync(path, values);
     }
 }
        /// <summary>
        /// 获取指定节点上的数据,如果不存在,则创建并添加
        /// </summary>
        /// <param name="keeper"></param>
        /// <param name="path"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static async Task <byte[]> GetOrAddAsync(this ZooKeeper keeper, ZookeeperPathString path, byte[] data)
        {
            if (await keeper.ExistAsync(path))
            {
                return((await keeper.getDataAsync(path, true)).Data);
            }
            else
            {
                await keeper.CreateAsync(path, data);

                return(data);
            }
        }
Пример #5
0
        public async Task CreateAndDeleteTest()
        {
            string path = $"/async{Guid.NewGuid()}";

            using (ZooKeeper zk = CreateClient())
            {
                await zk.CreateAsync(path, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);

                Assert.That(await zk.ExistsAsync(path, false), Is.Not.Null);
                await zk.DeleteAsync(path, -1);

                Assert.That(await zk.ExistsAsync(path, false), Is.Null);
            }
        }
Пример #6
0
        public async Task SetAndGetACLTest()
        {
            string path = $"/asyncacl{Guid.NewGuid()}";

            using (ZooKeeper zk = CreateClient())
            {
                await zk.CreateAsync(path, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);

                Assert.That(await zk.GetACLAsync(path, new Stat()), Is.EquivalentTo(Ids.OPEN_ACL_UNSAFE));

                await zk.SetACLAsync(path, Ids.READ_ACL_UNSAFE, -1);

                Assert.That(await zk.GetACLAsync(path, new Stat()), Is.EquivalentTo(Ids.READ_ACL_UNSAFE));
            }
        }
Пример #7
0
        public async Task SetAndGetDataTest()
        {
            string path = $"/asyncdata{Guid.NewGuid()}";

            using (ZooKeeper zk = CreateClient())
            {
                await zk.CreateAsync(path, new byte[0], Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);

                Assert.That(await zk.GetDataAsync(path, false, new Stat()), Is.Empty);

                byte[] data = "async data".GetBytes();
                await zk.SetDataAsync(path, data, -1);

                Assert.That(await zk.GetDataAsync(path, false, new Stat()), Is.EqualTo(data));
            }
        }