Package org.apache.bookkeeper.versioning

Examples of org.apache.bookkeeper.versioning.Version


        // Write non-existed owner info
        toManager.writeOwnerInfo(topic, owner, Version.NEW, writeCallback, null);
        res = writeCallback.queue.take();
        Assert.assertEquals(null, res.right());
        Version v1 = res.left();

        // read owner info
        toManager.readOwnerInfo(topic, readCallback, null);
        Versioned<HubInfo> hubInfo = readCallback.queue.take().left();
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v1.compare(hubInfo.getVersion()));
        Assert.assertEquals(owner, hubInfo.getValue());

        HubInfo newOwner = new HubInfo(new HedwigSocketAddress("127.0.0.1", 8008), 1000);

        // write exsited owner info with null version
        toManager.writeOwnerInfo(topic, newOwner, Version.NEW, writeCallback, null);
        res = writeCallback.queue.take();
        Assert.assertNotNull(res.right());
        Assert.assertTrue(res.right() instanceof PubSubException.TopicOwnerInfoExistsException);

        // write existed owner info with right version
        toManager.writeOwnerInfo(topic, newOwner, v1, writeCallback, null);
        res = writeCallback.queue.take();
        Assert.assertEquals(null, res.right());
        Version v2 = res.left();
        Assert.assertEquals(Version.Occurred.AFTER, v2.compare(v1));

        // read owner info
        toManager.readOwnerInfo(topic, readCallback, null);
        hubInfo = readCallback.queue.take().left();
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v2.compare(hubInfo.getVersion()));
        Assert.assertEquals(newOwner, hubInfo.getValue());

        HubInfo newOwner2 = new HubInfo(new HedwigSocketAddress("127.0.0.1", 8008), 1001);

        // write existed owner info with bad version
        toManager.writeOwnerInfo(topic, newOwner2, v1,
                                 writeCallback, null);
        res = writeCallback.queue.take();
        Assert.assertNotNull(res.right());
        Assert.assertTrue(res.right() instanceof PubSubException.BadVersionException);

        // read owner info
        toManager.readOwnerInfo(topic, readCallback, null);
        hubInfo = readCallback.queue.take().left();
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v2.compare(hubInfo.getVersion()));
        Assert.assertEquals(newOwner, hubInfo.getValue());

        // delete existed owner info with bad version
        toManager.deleteOwnerInfo(topic, v1, deleteCallback, null);
        Assert.assertTrue(deleteCallback.queue.take().right() instanceof
                          PubSubException.BadVersionException);

        // read owner info
        toManager.readOwnerInfo(topic, readCallback, null);
        hubInfo = readCallback.queue.take().left();
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v2.compare(hubInfo.getVersion()));

        // delete existed owner info with right version
        toManager.deleteOwnerInfo(topic, v2, deleteCallback, null);
        Assert.assertEquals(null, deleteCallback.queue.take().right());
View Full Code Here


        // Write non-existed persistence info
        tpManager.writeTopicPersistenceInfo(topic, LedgerRanges.getDefaultInstance(),
                                            Version.NEW, writeCallback, null);
        Either<Version, PubSubException> res = writeCallback.queue.take();
        Assert.assertEquals(null, res.right());
        Version v1 = res.left();

        // read persistence info
        tpManager.readTopicPersistenceInfo(topic, readCallback, null);
        Versioned<LedgerRanges> ranges = readCallback.queue.take().left();
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v1.compare(ranges.getVersion()));
        Assert.assertEquals(LedgerRanges.getDefaultInstance(), ranges.getValue());

        LedgerRange lastRange = LedgerRange.newBuilder().setLedgerId(1).build();
        LedgerRanges.Builder builder = LedgerRanges.newBuilder();
        builder.addRanges(lastRange);
        LedgerRanges newRanges = builder.build();

        // write existed persistence info with null version
        tpManager.writeTopicPersistenceInfo(topic, newRanges, Version.NEW,
                                            writeCallback, null);
        res = writeCallback.queue.take();
        Assert.assertNotNull(res.right());
        Assert.assertTrue(res.right() instanceof PubSubException.TopicPersistenceInfoExistsException);

        // write existed persistence info with right version
        tpManager.writeTopicPersistenceInfo(topic, newRanges, v1,
                                            writeCallback, null);
        res = writeCallback.queue.take();
        Assert.assertEquals(null, res.right());
        Version v2 = res.left();
        Assert.assertEquals(Version.Occurred.AFTER, v2.compare(v1));

        // read persistence info
        tpManager.readTopicPersistenceInfo(topic, readCallback, null);
        ranges = readCallback.queue.take().left();
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v2.compare(ranges.getVersion()));
        Assert.assertEquals(newRanges, ranges.getValue());

        lastRange = LedgerRange.newBuilder().setLedgerId(2).build();
        builder = LedgerRanges.newBuilder();
        builder.addRanges(lastRange);
        LedgerRanges newRanges2 = builder.build();

        // write existed persistence info with bad version
        tpManager.writeTopicPersistenceInfo(topic, newRanges2, v1,
                                            writeCallback, null);
        res = writeCallback.queue.take();
        Assert.assertNotNull(res.right());
        Assert.assertTrue(res.right() instanceof PubSubException.BadVersionException);

        // read persistence info
        tpManager.readTopicPersistenceInfo(topic, readCallback, null);
        ranges = readCallback.queue.take().left();
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v2.compare(ranges.getVersion()));
        Assert.assertEquals(newRanges, ranges.getValue());

        // delete with bad version
        tpManager.deleteTopicPersistenceInfo(topic, v1, deleteCallback, null);
        Assert.assertTrue(deleteCallback.queue.take().right() instanceof
                          PubSubException.BadVersionException);

        // read persistence info
        tpManager.readTopicPersistenceInfo(topic, readCallback, null);
        ranges = readCallback.queue.take().left();
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v2.compare(ranges.getVersion()));
        Assert.assertEquals(newRanges, ranges.getValue());

        // delete existed persistence info with right version
        tpManager.deleteTopicPersistenceInfo(topic, v2, deleteCallback, null);
        Assert.assertEquals(null, deleteCallback.queue.take().right());
View Full Code Here

        SubscriptionData data = SubscriptionData.newBuilder().setState(stateBuilder).build();

        // create a subscription state
        subManager.createSubscriptionData(topic, subid, data, callback, null);
        Either<Version, PubSubException> cbResult = callback.queue.take();
        Version v1 = cbResult.left();
        Assert.assertEquals("Should not fail with PubSubException",
                            null, cbResult.right());

        // read subscriptions
        subManager.readSubscriptions(topic, subsCallback, null);
        res = subsCallback.queue.take();
        Assert.assertEquals("Should find just 1 subscriber", 1, res.left().size());
        Assert.assertEquals("Should not fail with PubSubException", null, res.right());
        Versioned<SubscriptionData> versionedSubData = res.left().get(subid);
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v1.compare(versionedSubData.getVersion()));
        SubscriptionData imss = versionedSubData.getValue();
        Assert.assertEquals("Found inconsistent subscription state",
                            data, imss);
        Assert.assertEquals("Found inconsistent last consumed seq id",
                            seqId, imss.getState().getMsgId().getLocalComponent());

        // move consume seq id
        seqId = 99;
        builder = MessageSeqId.newBuilder();
        builder.setLocalComponent(seqId);
        msgId = builder.build();

        stateBuilder = SubscriptionState.newBuilder(data.getState()).setMsgId(msgId);
        data = SubscriptionData.newBuilder().setState(stateBuilder).build();
       
        // update subscription state
        if (subManager.isPartialUpdateSupported()) {
            subManager.updateSubscriptionData(topic, subid, data, versionedSubData.getVersion(), callback, null);
        } else {
            subManager.replaceSubscriptionData(topic, subid, data, versionedSubData.getVersion(), callback, null);
        }
        cbResult = callback.queue.take();
        Assert.assertEquals("Fail to update a subscription state", null, cbResult.right());
        Version v2 = cbResult.left();
        // read subscription state
        subManager.readSubscriptionData(topic, subid, readCallback, null);
        Assert.assertEquals("Found inconsistent subscription state",
                            data, readCallback.queue.take().left().getValue());
       
        // read subscriptions again
        subManager.readSubscriptions(topic, subsCallback, null);
        res = subsCallback.queue.take();
        Assert.assertEquals("Should find just 1 subscriber", 1, res.left().size());
        Assert.assertEquals("Should not fail with PubSubException", null, res.right());
        versionedSubData = res.left().get(subid);
        Assert.assertEquals(Version.Occurred.CONCURRENTLY, v2.compare(versionedSubData.getVersion()));
        imss = res.left().get(subid).getValue();
        Assert.assertEquals("Found inconsistent subscription state",
                            data, imss);
        Assert.assertEquals("Found inconsistent last consumed seq id",
                            seqId, imss.getState().getMsgId().getLocalComponent());
View Full Code Here

    }

    @Override
    public void writeLedgerMetadata(final long ledgerId, final LedgerMetadata metadata,
                                    final GenericCallback<Void> cb) {
        Version v = metadata.getVersion();
        if (Version.NEW == v || !(v instanceof ZkVersion)) {
            cb.operationComplete(BKException.Code.MetadataVersionException, null);
            return;
        }
        final ZkVersion zv = (ZkVersion) v;
View Full Code Here

TOP

Related Classes of org.apache.bookkeeper.versioning.Version

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.