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)); } }
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); } }
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); } }
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)); } }
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)); } }