public async Task testUpdateConflict() { var zk = await createClient(); Assert.assertNull(await zk.existsAsync("/multi", null)); try { await multiAsync(zk, Arrays.asList( Op.create("/multi", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT), Op.setData("/multi", "X".UTF8getBytes(), 0), Op.setData("/multi", "Y".UTF8getBytes(), 0) )); Assert.fail("Should have thrown a KeeperException for invalid version"); } catch (KeeperException e) { //PASS LOG.error("STACKTRACE: " + e); } Assert.assertNull(await zk.existsAsync("/multi", null)); //Updating version solves conflict -- order matters await multiAsync(zk, Arrays.asList( Op.create("/multi", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT), Op.setData("/multi", "X".UTF8getBytes(), 0), Op.setData("/multi", "Y".UTF8getBytes(), 1) )); Assert.assertEquals((await zk.getDataAsync("/multi", false)).Data, "Y".UTF8getBytes()); }
public async Task testChRootSetData() { // creating the subtree for chRoot clients. string chRoot = await createNameSpace(); // setData using chRoot client. var zk_chroot = await createClient(chRoot); string[] names = new[] { "/multi0", "/multi1", "/multi2" }; List <Op> ops = new List <Op>(); for (int i = 0; i < names.Length; i++) { ops.Add(Op.create(names[i], new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT)); ops.Add(Op.setData(names[i], names[i].UTF8getBytes(), 0)); } await multiAsync(zk_chroot, ops); for (int i = 0; i < names.Length; i++) { Assert.assertEquals("zNode data not matching", names[i] .UTF8getBytes(), (await zk_chroot.getDataAsync(names[i], false)).Data); } }
public async Task testSetData() { var zk = await createClient(); string[] names = new string[] { "/multi0", "/multi1", "/multi2" }; List <Op> ops = new List <Op>(); for (int i = 0; i < names.Length; i++) { ops.Add(Op.create(names[i], new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT)); ops.Add(Op.setData(names[i], names[i].UTF8getBytes(), 0)); } await multiAsync(zk, ops); for (int i = 0; i < names.Length; i++) { Assert.assertEquals(names[i].UTF8getBytes(), (await zk.getDataAsync(names[i], false)).Data); } }
private async Task multiHavingErrors(ZooKeeper zk, List <Op> ops, List <KeeperException.Code> expectedResultCodes) { try { await multiAsync(zk, ops); Assert.fail("Shouldn't have validated in ZooKeeper client!"); } catch (KeeperException e) { var results = e.getResults(); for (int i = 0; i < results.Count; i++) { OpResult opResult = results[i]; Assert.assertTrue("Did't recieve proper error response", opResult is OpResult.ErrorResult); OpResult.ErrorResult errRes = (OpResult.ErrorResult)opResult; Assert.assertEquals("Did't recieve proper error code", expectedResultCodes[i], errRes.getErr()); } } }
public async Task testChRootTransaction() { var zk = await createClient(); // creating the subtree for chRoot clients. string chRoot = await createNameSpace(); // checking the child version using chRoot client. var zk_chroot = await createClient(chRoot); const string childPath = "/myid"; Transaction transaction = zk_chroot.transaction(); transaction.create(childPath, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); transaction.check(childPath, 0); transaction.setData(childPath, childPath.UTF8getBytes(), 0); await commitAsync(transaction); Assert.assertNotNull("zNode is not created under chroot:" + chRoot, await zk .existsAsync(chRoot + childPath, false)); Assert.assertNotNull("zNode is not created under chroot:" + chRoot, await zk_chroot.existsAsync(childPath, false)); Assert.assertNull("zNode is created directly under '/', ignored configured chroot", await zk.existsAsync(childPath, false)); Assert.assertEquals("zNode data not matching", childPath .UTF8getBytes(), (await zk_chroot.getDataAsync(childPath, false)).Data); transaction = zk_chroot.transaction(); // Deleting child using chRoot client. transaction.delete(childPath, 1); await commitAsync(transaction); Assert.assertNull("chroot:" + chRoot + " exists after delete", await zk .existsAsync(chRoot + "/myid", false)); Assert.assertNull("chroot:" + chRoot + " exists after delete", await zk_chroot.existsAsync("/myid", false)); }
public async Task testTransactionBuilder() { var zk = await createClient(); List <OpResult> results = await commitAsync(zk.transaction() .create("/t1", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT) .create("/t1/child", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT) .create("/t2", null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL)); Assert.assertEquals(3, results.Count); foreach (OpResult r in results) { OpResult.CreateResult c = (OpResult.CreateResult)r; Assert.assertTrue(c.getPath().StartsWith("/t")); Assert.assertNotNull(c.ToString()); } Assert.assertNotNull(await zk.existsAsync("/t1", false)); Assert.assertNotNull(await zk.existsAsync("/t1/child", false)); Assert.assertNotNull(await zk.existsAsync("/t2", false)); results = await commitAsync(zk.transaction() .check("/t1", 0) .check("/t1/child", 0) .check("/t2", 0)); Assert.assertEquals(3, results.Count); foreach (OpResult r in results) { OpResult.CheckResult c = (OpResult.CheckResult)r; Assert.assertNotNull(c.ToString()); } try { await commitAsync(zk.transaction() .check("/t1", 0) .check("/t1/child", 0) .check("/t2", 1)); Assert.fail(); } catch (KeeperException.BadVersionException) { // expected } results = await commitAsync(zk.transaction() .check("/t1", 0) .setData("/t1", new byte[0], 0)); Assert.assertEquals(2, results.Count); foreach (OpResult r in results) { Assert.assertNotNull(r.ToString()); } try { results = await commitAsync(zk.transaction() .check("/t1", 1) .setData("/t1", new byte[0], 2)); Assert.fail(); } catch (KeeperException.BadVersionException) { // expected } results = await commitAsync(zk.transaction() .check("/t1", 1) .check("/t1/child", 0) .check("/t2", 0)); Assert.assertEquals(3, results.Count); results = await commitAsync(zk.transaction() .delete("/t2", -1) .delete("/t1/child", -1)); Assert.assertEquals(2, results.Count); foreach (OpResult r in results) { OpResult.DeleteResult d = (OpResult.DeleteResult)r; Assert.assertNotNull(d.ToString()); } Assert.assertNotNull(await zk.existsAsync("/t1", false)); Assert.assertNull(await zk.existsAsync("/t1/child", false)); Assert.assertNull(await zk.existsAsync("/t2", false)); }