void subscribe(ByteString topic, ByteString subscriberId) throws Exception { org.apache.hw_v4_1_0.hedwig.protocol.PubSubProtocol.SubscriptionOptions options = org.apache.hw_v4_1_0.hedwig.protocol.PubSubProtocol.SubscriptionOptions.newBuilder() .setCreateOrAttach( org.apache.hw_v4_1_0.hedwig.protocol.PubSubProtocol.SubscribeRequest .CreateOrAttach.CREATE_OR_ATTACH) .build(); subscribe(topic, subscriberId, options); }
/** * Test compatability between version 4.1.0 and the current version. * * <p>A 4.1.0 client could not update message bound, while current could do it. */ @Test(timeout = 60000) public void testUpdateMessageBoundCompat410() throws Exception { ByteString topic = ByteString.copyFromUtf8("TestUpdateMessageBoundCompat410"); ByteString subid = ByteString.copyFromUtf8("mysub"); // start bookkeeper BookKeeperCluster420 bkc420 = new BookKeeperCluster420(3); bkc420.start(); int port = PortManager.nextFreePort(); int sslPort = PortManager.nextFreePort(); // start hub server Server420 s420 = new Server420(zkUtil.getZooKeeperConnectString(), port, sslPort); s420.start(); org.apache.hedwig.protocol.PubSubProtocol.SubscriptionOptions options5cur = org.apache.hedwig.protocol.PubSubProtocol.SubscriptionOptions.newBuilder() .setCreateOrAttach( org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest.CreateOrAttach .CREATE_OR_ATTACH) .setMessageBound(5) .build(); org.apache.hw_v4_1_0.hedwig.protocol.PubSubProtocol.SubscriptionOptions options5v410 = org.apache.hw_v4_1_0.hedwig.protocol.PubSubProtocol.SubscriptionOptions.newBuilder() .setCreateOrAttach( org.apache.hw_v4_1_0.hedwig.protocol.PubSubProtocol.SubscribeRequest.CreateOrAttach .CREATE_OR_ATTACH) .setMessageBound(5) .build(); org.apache.hw_v4_1_0.hedwig.protocol.PubSubProtocol.SubscriptionOptions options20v410 = org.apache.hw_v4_1_0.hedwig.protocol.PubSubProtocol.SubscriptionOptions.newBuilder() .setCreateOrAttach( org.apache.hw_v4_1_0.hedwig.protocol.PubSubProtocol.SubscribeRequest.CreateOrAttach .CREATE_OR_ATTACH) .setMessageBound(20) .build(); Client410 c410 = new Client410("localhost:" + port + ":" + sslPort); c410.subscribe(topic, subid, options20v410); c410.closeSubscription(topic, subid); Thread.sleep(1000); // give server time to run disconnect logic (BOOKKEEPER-513) c410.sendXExpectLastY(topic, subid, 50, 20); c410.subscribe(topic, subid, options5v410); c410.closeSubscription(topic, subid); Thread.sleep(1000); // give server time to run disconnect logic (BOOKKEEPER-513) // the message bound isn't updated. c410.sendXExpectLastY(topic, subid, 50, 20); ClientCurrent ccur = new ClientCurrent("localhost:" + port + ":" + sslPort); ccur.subscribe(topic, subid, options5cur); ccur.closeSubscription(topic, subid); Thread.sleep(1000); // give server time to run disconnect logic (BOOKKEEPER-513) // the message bound should be updated. c410.sendXExpectLastY(topic, subid, 50, 5); // stop 420 server s420.stop(); c410.close(); ccur.close(); // stop bookkeeper cluster bkc420.stop(); }