예제 #1
0
        private CuratorTransactionResult makeCuratorResult(OpResult opResult,
                                                           CuratorMultiTransactionRecord.TypeAndPath metadata)
        {
            String resultPath = null;
            Stat   resultStat = null;

            if (opResult is OpResult.CreateResult)
            {
                OpResult.CreateResult createResult = (OpResult.CreateResult)opResult;
                resultPath = client.unfixForNamespace(createResult.getPath());
            }
            else if (opResult is OpResult.SetDataResult)
            {
                OpResult.SetDataResult setDataResult = (OpResult.SetDataResult)opResult;
                resultStat = setDataResult.getStat();
            }
            return(new CuratorTransactionResult(metadata.type, metadata.forPath, resultPath, resultStat));
        }
예제 #2
0
        public void testTransactionBuilder()
        {
            IList <OpResult> results = 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).commit();

            Assert.assertEquals(3, results.Count);
            foreach (OpResult r in results)
            {
                OpResult.CreateResult c = (OpResult.CreateResult)r;
                Assert.assertTrue(c.getPath().Contains("/t"));
                Assert.assertNotNull(c.ToString());
            }
            Assert.assertNotNull(zk.exists("/t1", false));
            Assert.assertNotNull(zk.exists("/t1/child", false));
            Assert.assertNotNull(zk.exists("/t2", false));

            results = zk.transaction().check("/t1", 0).check("/t1/child", 0).check("/t2", 0).commit();
            Assert.assertEquals(3, results.Count);
            foreach (OpResult r in results)
            {
                OpResult.CheckResult c = (OpResult.CheckResult)r;
                Assert.assertNotNull(c.ToString());
            }

            try
            {
                results = zk.transaction().check("/t1", 0).check("/t1/child", 0).check("/t2", 1).commit();
                Assert.fail();
            }
            catch (KeeperException.BadVersionException)
            {
                // expected
            }

            results = zk.transaction().check("/t1", 0).setData("/t1", new byte[0], 0).commit();
            Assert.assertEquals(2, results.Count);
            foreach (OpResult r in results)
            {
                Assert.assertNotNull(r.ToString());
            }

            try
            {
                results = zk.transaction().check("/t1", 1).setData("/t1", new byte[0], 2).commit();
                Assert.fail();
            }
            catch (KeeperException.BadVersionException)
            {
                // expected
            }

            results = zk.transaction().check("/t1", 1).check("/t1/child", 0).check("/t2", 0).commit();
            Assert.assertEquals(3, results.Count);

            results = zk.transaction().delete("/t2", -1).delete("/t1/child", -1).commit();
            Assert.assertEquals(2, results.Count);
            foreach (OpResult r in results)
            {
                OpResult.DeleteResult d = (OpResult.DeleteResult)r;
                Assert.assertNotNull(d.ToString());
            }
            Assert.assertNotNull(zk.exists("/t1", false));
            Assert.assertNull(zk.exists("/t1/child", false));
            Assert.assertNull(zk.exists("/t2", false));
        }