Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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());
                }
            }
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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));
        }