Repository: qpid-broker-j Updated Branches: refs/heads/master c38f9eee2 -> 40a7fdbe4
QPID-8038: [Broker-J] [AMQP 0-8..0-91] Enhance queue bind tests Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/755dda5e Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/755dda5e Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/755dda5e Branch: refs/heads/master Commit: 755dda5ee33d28219094c373b9b042616bfd2531 Parents: c4fd686 Author: Keith Wall <[email protected]> Authored: Thu Dec 28 19:52:25 2017 +0000 Committer: Keith Wall <[email protected]> Committed: Thu Dec 28 19:56:19 2017 +0000 ---------------------------------------------------------------------- .../tests/protocol/v0_8/QueueInteraction.java | 6 ++ .../qpid/tests/protocol/v0_8/QueueTest.java | 58 ++++++++++++++++++++ 2 files changed, 64 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/755dda5e/systests/protocol-tests-amqp-0-8/src/main/java/org/apache/qpid/tests/protocol/v0_8/QueueInteraction.java ---------------------------------------------------------------------- diff --git a/systests/protocol-tests-amqp-0-8/src/main/java/org/apache/qpid/tests/protocol/v0_8/QueueInteraction.java b/systests/protocol-tests-amqp-0-8/src/main/java/org/apache/qpid/tests/protocol/v0_8/QueueInteraction.java index cbf3a1a..3f8a4fc 100644 --- a/systests/protocol-tests-amqp-0-8/src/main/java/org/apache/qpid/tests/protocol/v0_8/QueueInteraction.java +++ b/systests/protocol-tests-amqp-0-8/src/main/java/org/apache/qpid/tests/protocol/v0_8/QueueInteraction.java @@ -165,6 +165,12 @@ public class QueueInteraction return this; } + public QueueInteraction bindArguments(final Map<String, Object> args) + { + _bindArguments = args == null ? Collections.emptyMap() : new HashMap<>(args); + return this; + } + public Interaction bind() throws Exception { return _interaction.sendPerformative(new QueueBindBody(0, http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/755dda5e/systests/protocol-tests-amqp-0-8/src/test/java/org/apache/qpid/tests/protocol/v0_8/QueueTest.java ---------------------------------------------------------------------- diff --git a/systests/protocol-tests-amqp-0-8/src/test/java/org/apache/qpid/tests/protocol/v0_8/QueueTest.java b/systests/protocol-tests-amqp-0-8/src/test/java/org/apache/qpid/tests/protocol/v0_8/QueueTest.java index cdb2dd5..0ac0aeb 100644 --- a/systests/protocol-tests-amqp-0-8/src/test/java/org/apache/qpid/tests/protocol/v0_8/QueueTest.java +++ b/systests/protocol-tests-amqp-0-8/src/test/java/org/apache/qpid/tests/protocol/v0_8/QueueTest.java @@ -30,12 +30,15 @@ import static org.junit.Assume.assumeThat; import java.net.InetSocketAddress; import java.util.Collections; +import java.util.Map; import org.hamcrest.Matchers; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; +import org.apache.qpid.server.exchange.ExchangeDefaults; +import org.apache.qpid.server.filter.AMQPFilterTypes; import org.apache.qpid.server.protocol.ErrorCodes; import org.apache.qpid.server.protocol.v0_8.AMQShortString; import org.apache.qpid.server.protocol.v0_8.transport.BasicCancelOkBody; @@ -51,6 +54,8 @@ import org.apache.qpid.server.protocol.v0_8.transport.QueueDeclareOkBody; import org.apache.qpid.server.protocol.v0_8.transport.QueueDeleteOkBody; import org.apache.qpid.server.protocol.v0_8.transport.QueuePurgeOkBody; import org.apache.qpid.server.protocol.v0_8.transport.QueueUnbindOkBody; +import org.apache.qpid.server.protocol.v0_8.transport.TxCommitOkBody; +import org.apache.qpid.server.protocol.v0_8.transport.TxSelectOkBody; import org.apache.qpid.tests.protocol.SpecificationTest; import org.apache.qpid.tests.utils.BrokerAdmin; import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase; @@ -836,4 +841,57 @@ public class QueueTest extends BrokerAdminUsingTestBase assertThat(response.getReplyCode(), is(equalTo(ErrorCodes.NOT_FOUND))); } } + + /** Qpid specific extension */ + @Test + public void topicExchangeInstancesAllowRebindWithDifferentArguments() throws Exception + { + getBrokerAdmin().createQueue(BrokerAdmin.TEST_QUEUE_NAME); + + final String content = "content"; + final String routingKey = "rk1"; + try(FrameTransport transport = new FrameTransport(_brokerAddress).connect()) + { + final Interaction interaction = transport.newInteraction(); + final Map<String, Object> messageProps = Collections.singletonMap("prop", 0); + interaction.openAnonymousConnection() + .channel().open().consumeResponse(ChannelOpenOkBody.class) + .tx().select() + .consumeResponse(TxSelectOkBody.class) + .queue() + .bindName(ExchangeDefaults.TOPIC_EXCHANGE_NAME) + .bindRoutingKey(routingKey) + .bindQueueName(BrokerAdmin.TEST_QUEUE_NAME) + .bindArguments(Collections.singletonMap(AMQPFilterTypes.JMS_SELECTOR.getValue(), "prop = 1")) + .bind() + .consumeResponse(QueueBindOkBody.class) + .basic() + .publishExchange(ExchangeDefaults.TOPIC_EXCHANGE_NAME) + .publishRoutingKey(routingKey) + .content(content) + .contentHeaderPropertiesHeaders(messageProps) + .publishMessage() + .tx().commit() + .consumeResponse(TxCommitOkBody.class); + + assertThat(getBrokerAdmin().getQueueDepthMessages(BrokerAdmin.TEST_QUEUE_NAME), is(equalTo(0))); + + interaction.queue() + .bindName(ExchangeDefaults.TOPIC_EXCHANGE_NAME) + .bindRoutingKey(routingKey) + .bindQueueName(BrokerAdmin.TEST_QUEUE_NAME) + .bindArguments(Collections.singletonMap(AMQPFilterTypes.JMS_SELECTOR.getValue(), "prop = 0")) + .bind() + .consumeResponse(QueueBindOkBody.class) + .basic().publishExchange(ExchangeDefaults.TOPIC_EXCHANGE_NAME) + .publishRoutingKey(routingKey) + .content(content) + .contentHeaderPropertiesHeaders(messageProps) + .publishMessage() + .tx().commit() + .consumeResponse(TxCommitOkBody.class); + + assertThat(getBrokerAdmin().getQueueDepthMessages(BrokerAdmin.TEST_QUEUE_NAME), is(equalTo(1))); + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
