You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2019/08/28 06:38:09 UTC
[qpid-broker-j] 05/08: QPID-8350: [Tests][AMQP 1.0] Improve various
protocol tests
This is an automated email from the ASF dual-hosted git repository.
orudyy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git
commit 64e57a2d90917ade4dceff467d1bda4c66aa7ed0
Author: Alex Rudyy <or...@apache.org>
AuthorDate: Tue Aug 27 16:51:20 2019 +0100
QPID-8350: [Tests][AMQP 1.0] Improve various protocol tests
---
.../qpid/tests/protocol/v1_0/Interaction.java | 5 --
.../bindmapjms/TemporaryDestinationTest.java | 16 ++++++
.../extensions/soleconn/SoleConnectionAsserts.java | 11 ++--
.../protocol/v1_0/messaging/DeleteOnCloseTest.java | 18 +++++--
.../protocol/v1_0/messaging/MessageFormat.java | 40 +++++++--------
.../protocol/v1_0/messaging/MultiTransferTest.java | 6 ---
.../tests/protocol/v1_0/messaging/OutcomeTest.java | 60 +++++++++++++++++++++-
.../protocol/v1_0/messaging/TransferTest.java | 34 ++++++++----
.../v1_0/transport/ProtocolHeaderTest.java | 1 +
.../v1_0/transport/connection/OpenTest.java | 3 ++
.../protocol/v1_0/transport/link/AttachTest.java | 5 +-
.../protocol/v1_0/transport/link/FlowTest.java | 29 +++--------
.../v1_0/transport/link/ResumeDeliveriesTest.java | 2 +-
.../protocol/v1_0/transport/session/BeginTest.java | 4 +-
14 files changed, 156 insertions(+), 78 deletions(-)
diff --git a/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/Interaction.java b/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/Interaction.java
index 6631590..152b73d 100644
--- a/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/Interaction.java
+++ b/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/Interaction.java
@@ -641,11 +641,6 @@ public class Interaction extends AbstractInteraction<Interaction>
return this;
}
- public Interaction flowNextIncomingIdFromLatestDelivery()
- {
- return flowNextIncomingId(_latestDeliveryId.add(UnsignedInteger.ONE));
- }
-
public Interaction flowNextIncomingIdFromPeerLatestSessionBeginAndDeliveryCount()
{
final Begin begin = getCachedResponse(Begin.class);
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/bindmapjms/TemporaryDestinationTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/bindmapjms/TemporaryDestinationTest.java
index 1dd63ea..bfa999a 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/bindmapjms/TemporaryDestinationTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/bindmapjms/TemporaryDestinationTest.java
@@ -20,10 +20,12 @@
package org.apache.qpid.tests.protocol.v1_0.extensions.bindmapjms;
+import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
+import static org.junit.Assume.assumeThat;
import java.net.InetSocketAddress;
import java.util.Collections;
@@ -46,6 +48,7 @@ import org.apache.qpid.server.protocol.v1_0.type.transport.Detach;
import org.apache.qpid.server.protocol.v1_0.type.transport.Flow;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
import org.apache.qpid.server.protocol.v1_0.type.transport.Role;
+import org.apache.qpid.tests.protocol.Response;
import org.apache.qpid.tests.protocol.SpecificationTest;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
@@ -100,6 +103,7 @@ public class TemporaryDestinationTest extends BrokerAdminUsingTestBase
.attachRole(Role.SENDER)
.attachTarget(target)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttachResponse)
.getLatestResponse(Attach.class);
assertThat(attachResponse.getSource(), is(notNullValue()));
@@ -151,6 +155,7 @@ public class TemporaryDestinationTest extends BrokerAdminUsingTestBase
.attachHandle(senderHandle)
.attachTarget(target)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttachResponse)
.getLatestResponse(Attach.class);
assertThat(senderAttachResponse.getSource(), is(notNullValue()));
@@ -211,6 +216,7 @@ public class TemporaryDestinationTest extends BrokerAdminUsingTestBase
.attachHandle(senderHandle)
.attachTarget(target)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttachResponse)
.getLatestResponse(Attach.class);
assertThat(senderAttachResponse.getSource(), is(notNullValue()));
@@ -250,6 +256,7 @@ public class TemporaryDestinationTest extends BrokerAdminUsingTestBase
.attachHandle(senderHandle)
.attachTarget(target)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttachResponse)
.getLatestResponse(Attach.class);
assertThat(senderAttachResponse.getSource(), is(notNullValue()));
@@ -305,6 +312,7 @@ public class TemporaryDestinationTest extends BrokerAdminUsingTestBase
.attachSource(source)
.attachHandle(receiverHandle)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttachResponse)
.getLatestResponse(Attach.class);
assertThat(receiverAttachResponse.getSource(), is(notNullValue()));
@@ -369,6 +377,7 @@ public class TemporaryDestinationTest extends BrokerAdminUsingTestBase
.attachSource(source)
.attachHandle(receiverHandle)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttachResponse)
.getLatestResponse(Attach.class);
assertThat(receiverAttachResponse.getSource(), is(notNullValue()));
@@ -410,6 +419,7 @@ public class TemporaryDestinationTest extends BrokerAdminUsingTestBase
.attachSource(source)
.attachHandle(receiverHandle)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttachResponse)
.getLatestResponse(Attach.class);
assertThat(receiverAttachResponse.getSource(), is(notNullValue()));
@@ -489,4 +499,10 @@ public class TemporaryDestinationTest extends BrokerAdminUsingTestBase
source.setAddress(name);
return source;
}
+
+ private void assumeAttachResponse(Response<?> response)
+ {
+ assertThat(response, notNullValue());
+ assumeThat(response.getBody(), instanceOf(Attach.class));
+ }
}
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/SoleConnectionAsserts.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/SoleConnectionAsserts.java
index 298ab00..c6eb906 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/SoleConnectionAsserts.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/SoleConnectionAsserts.java
@@ -26,19 +26,18 @@ import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.Sole
import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionEnforcementPolicy.CLOSE_EXISTING;
import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionEnforcementPolicy.REFUSE_CONNECTION;
import static org.hamcrest.CoreMatchers.anyOf;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasItemInArray;
-import static org.hamcrest.Matchers.is;
import static org.hamcrest.collection.IsMapContaining.hasEntry;
import static org.hamcrest.collection.IsMapContaining.hasKey;
import static org.junit.Assume.assumeThat;
import java.util.Collections;
-import org.hamcrest.Matchers;
import org.apache.qpid.server.protocol.v1_0.type.Symbol;
import org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionDetectionPolicy;
@@ -86,7 +85,7 @@ class SoleConnectionAsserts
assumeThat(open.getProperties(), is(notNullValue()));
assumeThat(open.getProperties(),
anyOf(hasEntry(SOLE_CONNECTION_ENFORCEMENT_POLICY, REFUSE_CONNECTION.getValue()),
- is(not(Matchers.hasKey(SOLE_CONNECTION_ENFORCEMENT_POLICY)))));
+ is(not(hasKey(SOLE_CONNECTION_ENFORCEMENT_POLICY)))));
}
static void assumeDetectionPolicyStrong(Open open)
@@ -100,14 +99,14 @@ class SoleConnectionAsserts
static void assertConnectionEstablishmentFailed(final Open open)
{
assertThat(open.getProperties(), is(notNullValue()));
- assertThat(open.getProperties(), Matchers.hasKey(CONNECTION_ESTABLISHMENT_FAILED));
+ assertThat(open.getProperties(), hasKey(CONNECTION_ESTABLISHMENT_FAILED));
assertThat(open.getProperties(), hasEntry(CONNECTION_ESTABLISHMENT_FAILED, true));
}
static void assumeConnectionEstablishmentFailed(final Open open)
{
assumeThat(open.getProperties(), is(notNullValue()));
- assumeThat(open.getProperties(), Matchers.hasKey(CONNECTION_ESTABLISHMENT_FAILED));
+ assumeThat(open.getProperties(), hasKey(CONNECTION_ESTABLISHMENT_FAILED));
assertThat(open.getProperties(), hasEntry(CONNECTION_ESTABLISHMENT_FAILED, true));
}
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/DeleteOnCloseTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/DeleteOnCloseTest.java
index bec5067..63f914f 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/DeleteOnCloseTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/DeleteOnCloseTest.java
@@ -20,6 +20,7 @@
package org.apache.qpid.tests.protocol.v1_0.messaging;
+import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
@@ -44,12 +45,13 @@ import org.apache.qpid.server.protocol.v1_0.type.transport.Detach;
import org.apache.qpid.server.protocol.v1_0.type.transport.Flow;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
import org.apache.qpid.server.protocol.v1_0.type.transport.Role;
-import org.apache.qpid.tests.utils.BrokerAdmin;
+import org.apache.qpid.tests.protocol.Response;
+import org.apache.qpid.tests.protocol.SpecificationTest;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
-import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
-import org.apache.qpid.tests.protocol.SpecificationTest;
import org.apache.qpid.tests.protocol.v1_0.Utils;
+import org.apache.qpid.tests.utils.BrokerAdmin;
+import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
public class DeleteOnCloseTest extends BrokerAdminUsingTestBase
{
@@ -79,6 +81,7 @@ public class DeleteOnCloseTest extends BrokerAdminUsingTestBase
.attachRole(Role.RECEIVER)
.attachSource(source)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttach)
.getLatestResponse(Attach.class);
assertThat(attachResponse.getSource(), is(notNullValue()));
final String newTempQueueAddress = ((Source) attachResponse.getSource()).getAddress();
@@ -114,6 +117,7 @@ public class DeleteOnCloseTest extends BrokerAdminUsingTestBase
.attachRole(Role.SENDER)
.attachTarget(target)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttach)
.getLatestResponse(Attach.class);
assertThat(attachResponse.getTarget(), is(notNullValue()));
final String newTempQueueAddress = ((Target) attachResponse.getTarget()).getAddress();
@@ -152,6 +156,7 @@ public class DeleteOnCloseTest extends BrokerAdminUsingTestBase
.attachRole(Role.RECEIVER)
.attachSource(source)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttach)
.getLatestResponse(Attach.class);
assertThat(attachResponse.getSource(), is(notNullValue()));
final String newTempQueueAddress = ((Source) attachResponse.getSource()).getAddress();
@@ -196,6 +201,7 @@ public class DeleteOnCloseTest extends BrokerAdminUsingTestBase
.attachRole(Role.RECEIVER)
.attachSource(source)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttach)
.getLatestResponse(Attach.class);
assertThat(attachResponse.getSource(), is(notNullValue()));
newTempQueueAddress = ((Source) attachResponse.getSource()).getAddress();
@@ -209,4 +215,10 @@ public class DeleteOnCloseTest extends BrokerAdminUsingTestBase
assertThat(Utils.doesNodeExist(_brokerAddress, newTempQueueAddress), is(true));
}
+
+ private void assumeAttach(final Response<?> response)
+ {
+ assertThat(response, notNullValue());
+ assumeThat(response.getBody(), instanceOf(Attach.class));
+ }
}
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/MessageFormat.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/MessageFormat.java
index 5539291..dfca049 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/MessageFormat.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/MessageFormat.java
@@ -67,26 +67,26 @@ public class MessageFormat extends BrokerAdminUsingTestBase
QpidByteBuffer[] payloads = Utils.splitPayload(getTestName(), 2);
transport.newInteraction()
- .negotiateProtocol().consumeResponse()
- .open().consumeResponse(Open.class)
- .begin().consumeResponse(Begin.class)
- .attachRole(Role.SENDER)
- .attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
- .attach().consumeResponse(Attach.class)
- .consumeResponse(Flow.class)
- .transferMore(true)
- .transferMessageFormat(UnsignedInteger.ZERO)
- .transferPayload(payloads[0])
- .transferSettled(true)
- .transfer()
- .consumeResponse(null, Flow.class, Disposition.class)
- .transferDeliveryTag(null)
- .transferDeliveryId(null)
- .transferMore(false)
- .transferMessageFormat(UnsignedInteger.ONE)
- .transferPayload(payloads[1])
- .transfer()
- .sync();
+ .negotiateProtocol().consumeResponse()
+ .open().consumeResponse(Open.class)
+ .begin().consumeResponse(Begin.class)
+ .attachRole(Role.SENDER)
+ .attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
+ .attach().consumeResponse(Attach.class)
+ .consumeResponse(Flow.class)
+ .transferMore(true)
+ .transferMessageFormat(UnsignedInteger.ZERO)
+ .transferPayload(payloads[0])
+ .transferSettled(true)
+ .transfer()
+ .consumeResponse(null, Flow.class, Disposition.class)
+ .transferDeliveryTag(null)
+ .transferDeliveryId(null)
+ .transferMore(false)
+ .transferMessageFormat(UnsignedInteger.ONE)
+ .transferPayload(payloads[1])
+ .transfer()
+ .sync();
for (final QpidByteBuffer payload : payloads)
{
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/MultiTransferTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/MultiTransferTest.java
index da85c83..96920c6 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/MultiTransferTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/MultiTransferTest.java
@@ -88,7 +88,6 @@ public class MultiTransferTest extends BrokerAdminUsingTestBase
.begin().consumeResponse(Begin.class)
.attachRole(Role.SENDER)
.attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
- .attachSourceOutcomes(Accepted.ACCEPTED_SYMBOL)
.attach().consumeResponse(Attach.class)
.consumeResponse(Flow.class)
.transferPayload(payloads[0])
@@ -135,7 +134,6 @@ public class MultiTransferTest extends BrokerAdminUsingTestBase
.begin().consumeResponse(Begin.class)
.attachRole(Role.SENDER)
.attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
- .attachSourceOutcomes(Accepted.ACCEPTED_SYMBOL)
.attach().consumeResponse(Attach.class)
.consumeResponse(Flow.class)
.transferDeliveryId(deliveryId)
@@ -197,7 +195,6 @@ public class MultiTransferTest extends BrokerAdminUsingTestBase
.begin().consumeResponse(Begin.class)
.attachRole(Role.SENDER)
.attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
- .attachSourceOutcomes(Accepted.ACCEPTED_SYMBOL)
.attach().consumeResponse(Attach.class)
.consumeResponse(Flow.class)
.transferPayload(payloads[0])
@@ -252,7 +249,6 @@ public class MultiTransferTest extends BrokerAdminUsingTestBase
.attachHandle(linkHandle1)
.attachRole(Role.SENDER)
.attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
- .attachSourceOutcomes(Accepted.ACCEPTED_SYMBOL)
.attach().consumeResponse(Attach.class)
.consumeResponse(Flow.class)
@@ -260,7 +256,6 @@ public class MultiTransferTest extends BrokerAdminUsingTestBase
.attachHandle(linkHandle2)
.attachRole(Role.SENDER)
.attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
- .attachSourceOutcomes(Accepted.ACCEPTED_SYMBOL)
.attach().consumeResponse(Attach.class)
.consumeResponse(Flow.class)
@@ -356,7 +351,6 @@ public class MultiTransferTest extends BrokerAdminUsingTestBase
.attachRole(Role.SENDER)
.attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
- .attachSourceOutcomes(Accepted.ACCEPTED_SYMBOL)
.attach().consumeResponse(Attach.class)
.consumeResponse(Flow.class)
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/OutcomeTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/OutcomeTest.java
index 2ea7dda..6fd1b58 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/OutcomeTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/OutcomeTest.java
@@ -21,8 +21,14 @@
package org.apache.qpid.tests.protocol.v1_0.messaging;
import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.emptyArray;
+import static org.hamcrest.Matchers.hasItemInArray;
+import static org.hamcrest.Matchers.nullValue;
+import static org.hamcrest.Matchers.oneOf;
+import static org.junit.Assume.assumeThat;
import java.net.InetSocketAddress;
@@ -30,10 +36,14 @@ import org.junit.Before;
import org.junit.Test;
import org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.Accepted;
import org.apache.qpid.server.protocol.v1_0.type.messaging.Modified;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.Source;
import org.apache.qpid.server.protocol.v1_0.type.transport.Attach;
import org.apache.qpid.server.protocol.v1_0.type.transport.Begin;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
+import org.apache.qpid.server.protocol.v1_0.type.transport.Disposition;
+import org.apache.qpid.server.protocol.v1_0.type.transport.Flow;
import org.apache.qpid.server.protocol.v1_0.type.transport.Role;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
@@ -72,6 +82,7 @@ public class OutcomeTest extends BrokerAdminUsingTestBase
.attachRole(Role.RECEIVER)
.attachSourceAddress(BrokerAdmin.TEST_QUEUE_NAME)
.attach().consumeResponse(Attach.class)
+ .assertLatestResponse(Attach.class, this::assumeModifiedSupportedBySource)
.flowIncomingWindow(UnsignedInteger.ONE)
.flowLinkCredit(UnsignedInteger.ONE)
.flowHandleFromLinkHandle()
@@ -95,7 +106,7 @@ public class OutcomeTest extends BrokerAdminUsingTestBase
.flowLinkCredit(UnsignedInteger.valueOf(2))
.flowNextIncomingIdFromPeerLatestSessionBeginAndDeliveryCount()
.flow()
- .receiveDelivery()
+ .receiveDelivery(Flow.class)
.decodeLatestDelivery();
Object secondDeliveryPayload = interaction.getDecodedLatestDelivery();
@@ -107,4 +118,51 @@ public class OutcomeTest extends BrokerAdminUsingTestBase
assertThat(Utils.receiveMessage(_brokerAddress, BrokerAdmin.TEST_QUEUE_NAME), is(equalTo(content1)));
assertThat(Utils.receiveMessage(_brokerAddress, BrokerAdmin.TEST_QUEUE_NAME), is(equalTo(content2)));
}
+
+ @Test
+ @SpecificationTest(section = "3.5.3 Source",
+ description = "outcomes descriptors for the outcomes that can be chosen on this link\n"
+ + "The values in this field are the symbolic descriptors of the outcomes that can be chosen"
+ + " on this link. This field MAY be empty, indicating that the default-outcome will be"
+ + " assumed for all message transfers (if the default-outcome is not set, and no outcomes"
+ + " are provided, then the accepted outcome MUST be supported by the source)."
+ + " When present, the values MUST be a symbolic descriptor of a valid outcome, e.g.,"
+ + " “amqp:accepted:list”.")
+ public void transferMessageWithAttachSourceHavingExplicitlySetOutcomesToAccepted() throws Exception
+ {
+ try (FrameTransport transport = new FrameTransport(_brokerAddress).connect())
+ {
+ Interaction interaction = transport.newInteraction();
+ Disposition disposition = interaction.negotiateProtocol().consumeResponse()
+ .open().consumeResponse(Open.class)
+ .begin().consumeResponse(Begin.class)
+ .attachRole(Role.SENDER)
+ .attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
+ .attachSourceOutcomes(Accepted.ACCEPTED_SYMBOL)
+ .attach().consumeResponse(Attach.class)
+ .consumeResponse(Flow.class)
+ .transferPayloadData(getTestName())
+ .transfer()
+ .consume(Disposition.class, Flow.class);
+
+ interaction.detachEndCloseUnconditionally();
+
+ assertThat(disposition.getFirst(), is(equalTo(UnsignedInteger.ZERO)));
+ assertThat(disposition.getLast(), oneOf(null, UnsignedInteger.ZERO));
+ assertThat(disposition.getSettled(), is(equalTo(true)));
+ }
+ assertThat(Utils.receiveMessage(_brokerAddress, BrokerAdmin.TEST_QUEUE_NAME), is(equalTo(getTestName())));
+ }
+
+
+ private void assumeModifiedSupportedBySource(final Attach attach)
+ {
+ assumeThat(attach.getSource(), instanceOf(Source.class));
+ final Source source = (Source) attach.getSource();
+
+ if (!(source.getDefaultOutcome() instanceof Modified))
+ {
+ assumeThat(source.getOutcomes(), hasItemInArray(Modified.MODIFIED_SYMBOL));
+ }
+ }
}
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/TransferTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/TransferTest.java
index 792bf30..9d81ee7 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/TransferTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/messaging/TransferTest.java
@@ -113,10 +113,12 @@ public class TransferTest extends BrokerAdminUsingTestBase
.open().consumeResponse(Open.class)
.begin().consumeResponse(Begin.class)
.attachRole(Role.SENDER)
+ .attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
.attach().consumeResponse(Attach.class)
.consumeResponse(Flow.class)
.assertLatestResponse(Flow.class, this::assumeSufficientCredits)
.transferHandle(null)
+ .transferPayloadData(getTestName())
.transfer()
.consumeResponse()
.getLatestResponse();
@@ -125,9 +127,10 @@ public class TransferTest extends BrokerAdminUsingTestBase
assertThat(response.getBody(), is(notNullValue()));
assertThat(response.getBody(), is(instanceOf(ErrorCarryingFrameBody.class)));
- final Error error = ((ErrorCarryingFrameBody)response.getBody()).getError();
+ final Error error = ((ErrorCarryingFrameBody) response.getBody()).getError();
assertThat(error, is(notNullValue()));
- assertThat(error.getCondition(), anyOf(equalTo(AmqpError.DECODE_ERROR), equalTo(AmqpError.INVALID_FIELD)));
+ assertThat(error.getCondition(),
+ oneOf(AmqpError.DECODE_ERROR, AmqpError.INVALID_FIELD, AmqpError.ILLEGAL_STATE));
}
}
@@ -143,10 +146,12 @@ public class TransferTest extends BrokerAdminUsingTestBase
.open().consumeResponse(Open.class)
.begin().consumeResponse(Begin.class)
.attachRole(Role.SENDER)
+ .attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
.attach().consumeResponse(Attach.class)
.consumeResponse(Flow.class)
.assertLatestResponse(Flow.class, this::assumeSufficientCredits)
.transferDeliveryId(null)
+ .transferPayloadData(getTestName())
.transfer()
.consumeResponse()
.getLatestResponse();
@@ -347,11 +352,12 @@ public class TransferTest extends BrokerAdminUsingTestBase
assertThat(response, is(notNullValue()));
assertThat(response.getBody(), is(notNullValue()));
- assertThat(response.getBody(), is(instanceOf(Detach.class)));
+ assertThat(response.getBody(), is(instanceOf(ErrorCarryingFrameBody.class)));
- final Detach detach = (Detach) response.getBody();
- Error error = detach.getError();
+ final ErrorCarryingFrameBody performative = (ErrorCarryingFrameBody) response.getBody();
+ final Error error = performative.getError();
assertThat(error, is(notNullValue()));
+ assumeThat(error.getCondition(), is(not(AmqpError.NOT_IMPLEMENTED)));
assertThat(error.getCondition(), is(equalTo(AmqpError.INVALID_FIELD)));
}
}
@@ -562,8 +568,7 @@ public class TransferTest extends BrokerAdminUsingTestBase
.dispositionRole(Role.RECEIVER)
.disposition();
- // verify that no unexpected performative is received by closing
- interaction.doCloseConnection();
+ interaction.detachEndCloseUnconditionally();
}
}
@@ -581,6 +586,7 @@ public class TransferTest extends BrokerAdminUsingTestBase
.attachSourceAddress(BrokerAdmin.TEST_QUEUE_NAME)
.attachRcvSettleMode(ReceiverSettleMode.SECOND)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttach)
.assertLatestResponse(Attach.class, this::assumeReceiverSettlesSecond)
.flowIncomingWindow(UnsignedInteger.ONE)
.flowNextIncomingIdFromPeerLatestSessionBeginAndDeliveryCount()
@@ -628,6 +634,7 @@ public class TransferTest extends BrokerAdminUsingTestBase
.attachSourceOutcomes(Accepted.ACCEPTED_SYMBOL, Rejected.REJECTED_SYMBOL)
.attachRcvSettleMode(ReceiverSettleMode.SECOND)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttach)
.assertLatestResponse(Attach.class, this::assumeReceiverSettlesSecond)
.flowIncomingWindow(UnsignedInteger.ONE)
.flowNextIncomingIdFromPeerLatestSessionBeginAndDeliveryCount()
@@ -732,6 +739,7 @@ public class TransferTest extends BrokerAdminUsingTestBase
.attachSourceAddress(BrokerAdmin.TEST_QUEUE_NAME)
.attachRcvSettleMode(ReceiverSettleMode.SECOND)
.attach().consumeResponse()
+ .assertLatestResponse(this::assumeAttach)
.assertLatestResponse(Attach.class, this::assumeReceiverSettlesSecond)
.flowIncomingWindow(UnsignedInteger.ONE)
.flowNextIncomingIdFromPeerLatestSessionBeginAndDeliveryCount()
@@ -818,8 +826,7 @@ public class TransferTest extends BrokerAdminUsingTestBase
assertThat(isSettled.get(), is(true));
- // verify no unexpected performative received by closing the connection
- interaction.doCloseConnection();
+ interaction.detachEndCloseUnconditionally();
}
Utils.putMessageOnQueue(getBrokerAdmin(), BrokerAdmin.TEST_QUEUE_NAME, "test");
@@ -1137,7 +1144,7 @@ public class TransferTest extends BrokerAdminUsingTestBase
.dispositionLast(interaction.getLatestDeliveryId())
.dispositionState(new Accepted())
.disposition();
- interaction.doCloseConnection();
+ interaction.detachEndCloseUnconditionally();
}
final String messageText = getTestName() + "_" + 4;
@@ -1266,4 +1273,11 @@ public class TransferTest extends BrokerAdminUsingTestBase
assertThat(response, is(notNullValue()));
assumeThat(response.getBody(), anyOf(instanceOf(Attach.class), instanceOf(Flow.class)));
}
+
+ private void assumeAttach(final Response<?> response)
+ {
+ assertThat(response, notNullValue());
+ assumeThat(response.getBody(), is(instanceOf(Attach.class)));
+ }
+
}
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java
index 8467a51..bf6682f 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java
@@ -22,6 +22,7 @@ package org.apache.qpid.tests.protocol.v1_0.transport;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assume.assumeThat;
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java
index f0f46f4..f20b8c0 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java
@@ -28,8 +28,10 @@ import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.lessThan;
import static org.hamcrest.Matchers.lessThanOrEqualTo;
import static org.hamcrest.Matchers.notNullValue;
+import static org.junit.Assume.assumeThat;
import java.net.InetSocketAddress;
@@ -146,6 +148,7 @@ public class OpenTest extends BrokerAdminUsingTestBase
final int timeout = peerIdleTimeOut == null || peerIdleTimeOut.intValue() == 0
? idleTimeOut
: peerIdleTimeOut.intValue();
+ assumeThat(timeout, lessThan(30000));
Thread.sleep(timeout);
interaction.consumeResponse(EmptyResponse.class);
}
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java
index a170e7e..a6caac1 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java
@@ -39,16 +39,15 @@ import org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger;
import org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError;
import org.apache.qpid.server.protocol.v1_0.type.transport.Attach;
import org.apache.qpid.server.protocol.v1_0.type.transport.Begin;
-import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
import org.apache.qpid.server.protocol.v1_0.type.transport.Detach;
import org.apache.qpid.server.protocol.v1_0.type.transport.End;
import org.apache.qpid.server.protocol.v1_0.type.transport.Error;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
import org.apache.qpid.server.protocol.v1_0.type.transport.Role;
import org.apache.qpid.tests.protocol.Response;
+import org.apache.qpid.tests.protocol.SpecificationTest;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
-import org.apache.qpid.tests.protocol.SpecificationTest;
import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
import org.apache.qpid.tests.utils.BrokerSpecific;
@@ -89,6 +88,7 @@ public class AttachTest extends BrokerAdminUsingTestBase
+ "assigning it to an unused handle, and sending an attach frame.")
public void successfulAttachAsSender() throws Exception
{
+ getBrokerAdmin().createQueue(BrokerAdmin.TEST_QUEUE_NAME);
final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
try (FrameTransport transport = new FrameTransport(addr).connect())
{
@@ -98,6 +98,7 @@ public class AttachTest extends BrokerAdminUsingTestBase
.begin().consumeResponse(Begin.class)
.attachRole(Role.SENDER)
.attachInitialDeliveryCount(UnsignedInteger.ZERO)
+ .attachTargetAddress(BrokerAdmin.TEST_QUEUE_NAME)
.attach().consumeResponse()
.getLatestResponse(Attach.class);
assertThat(responseAttach.getName(), is(notNullValue()));
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/FlowTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/FlowTest.java
index 1f9968b..747fc02 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/FlowTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/FlowTest.java
@@ -39,6 +39,7 @@ import org.apache.qpid.server.protocol.v1_0.type.messaging.Accepted;
import org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError;
import org.apache.qpid.server.protocol.v1_0.type.transport.Attach;
import org.apache.qpid.server.protocol.v1_0.type.transport.Begin;
+import org.apache.qpid.server.protocol.v1_0.type.transport.Detach;
import org.apache.qpid.server.protocol.v1_0.type.transport.End;
import org.apache.qpid.server.protocol.v1_0.type.transport.Error;
import org.apache.qpid.server.protocol.v1_0.type.transport.Flow;
@@ -213,7 +214,6 @@ public class FlowTest extends BrokerAdminUsingTestBase
.consumeResponse().getLatestResponse(Flow.class);
assertThat(responseFlow.getHandle(), is(notNullValue()));
- assertThat(responseFlow.getLinkCredit(), is(equalTo(UnsignedInteger.ZERO)));
assertThat(responseFlow.getDrain(), is(equalTo(Boolean.TRUE)));
}
}
@@ -294,7 +294,6 @@ public class FlowTest extends BrokerAdminUsingTestBase
.consumeResponse().getLatestResponse(Flow.class);
assertThat(responseFlow.getHandle(), is(equalTo(remoteHandle)));
- assertThat(responseFlow.getLinkCredit(), is(equalTo(UnsignedInteger.ZERO)));
assertThat(responseFlow.getDrain(), is(equalTo(Boolean.TRUE)));
}
}
@@ -340,7 +339,7 @@ public class FlowTest extends BrokerAdminUsingTestBase
Utils.putMessageOnQueue(getBrokerAdmin(), BrokerAdmin.TEST_QUEUE_NAME, getTestName());
- final Object receivedMessageContent = interaction.receiveDelivery()
+ final Object receivedMessageContent = interaction.receiveDelivery(Flow.class)
.decodeLatestDelivery()
.getDecodedLatestDelivery();
@@ -358,7 +357,6 @@ public class FlowTest extends BrokerAdminUsingTestBase
.consumeResponse().getLatestResponse(Flow.class);
assertThat(responseFlow.getHandle(), is(equalTo(remoteHandle)));
- assertThat(responseFlow.getLinkCredit(), is(equalTo(UnsignedInteger.ZERO)));
interaction.dispositionSettled(true)
.dispositionRole(Role.RECEIVER)
@@ -396,10 +394,6 @@ public class FlowTest extends BrokerAdminUsingTestBase
.attachSourceAddress(BrokerAdmin.TEST_QUEUE_NAME)
.attach().consumeResponse(Attach.class);
- Attach remoteAttach = interaction.getLatestResponse(Attach.class);
- UnsignedInteger remoteHandle = remoteAttach.getHandle();
- assertThat(remoteHandle, is(notNullValue()));
-
UnsignedInteger delta = UnsignedInteger.ONE;
UnsignedInteger incomingWindow = UnsignedInteger.valueOf(3);
Object receivedMessageContent1 = interaction.flowIncomingWindow(incomingWindow)
@@ -432,25 +426,15 @@ public class FlowTest extends BrokerAdminUsingTestBase
assertThat(receivedMessageContent2, is(equalTo(contents[1])));
UnsignedInteger secondDeliveryId = interaction.getLatestDeliveryId();
- // send session flow with echo=true to verify that no message is delivered without issuing a credit
- interaction.flowNextIncomingIdFromPeerLatestSessionBeginAndDeliveryCount()
- .flowIncomingWindow(incomingWindow)
- .flowLinkCredit(null)
- .flowHandle(null)
- .flowDeliveryCount(null)
- .flowEcho(Boolean.TRUE)
- .flowOutgoingWindow(UnsignedInteger.ZERO)
- .flowNextOutgoingId(UnsignedInteger.ZERO)
- .flow()
- .consumeResponse(null, Flow.class);
-
interaction.dispositionSettled(true)
.dispositionRole(Role.RECEIVER)
.dispositionFirst(firstDeliveryId)
.dispositionLast(secondDeliveryId)
.dispositionState(new Accepted())
- .disposition()
- .sync();
+ .disposition();
+
+ // detach link and consume detach to verify that no transfer was delivered
+ interaction.detachClose(true).detach().consume(Detach.class, Flow.class);
}
assertThat(Utils.receiveMessage(addr, BrokerAdmin.TEST_QUEUE_NAME), is(equalTo(contents[2])));
}
@@ -585,7 +569,6 @@ public class FlowTest extends BrokerAdminUsingTestBase
.consumeResponse(Flow.class).getLatestResponse(Flow.class);
assertThat(responseFlow.getHandle(), is(equalTo(remoteHandle)));
- assertThat(responseFlow.getLinkCredit(), is(equalTo(UnsignedInteger.ZERO)));
interaction.dispositionSettled(true)
.dispositionRole(Role.RECEIVER)
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/ResumeDeliveriesTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/ResumeDeliveriesTest.java
index b58185e..e8b6160 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/ResumeDeliveriesTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/ResumeDeliveriesTest.java
@@ -486,7 +486,7 @@ public class ResumeDeliveriesTest extends BrokerAdminUsingTestBase
.dispositionRole(Role.RECEIVER)
.disposition();
- Detach detach = interaction.detach().consumeResponse().getLatestResponse(Detach.class);
+ Detach detach = interaction.detach().consume(Detach.class, Flow.class);
assertThat(detach.getClosed(), anyOf(nullValue(), equalTo(false)));
interaction.attachUnsettled(new HashMap<>())
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java
index a1ea481..e05de00 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java
@@ -39,6 +39,7 @@ import org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError;
import org.apache.qpid.server.protocol.v1_0.type.transport.Begin;
import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
import org.apache.qpid.server.protocol.v1_0.type.transport.ConnectionError;
+import org.apache.qpid.server.protocol.v1_0.type.transport.End;
import org.apache.qpid.server.protocol.v1_0.type.transport.Error;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
import org.apache.qpid.tests.protocol.Response;
@@ -93,12 +94,13 @@ public class BeginTest extends BrokerAdminUsingTestBase
.sessionChannel(channel)
.begin().consumeResponse()
.getLatestResponse(Begin.class);
+
assertThat(responseBegin.getRemoteChannel(), equalTo(channel));
assertThat(responseBegin.getIncomingWindow(), is(instanceOf(UnsignedInteger.class)));
assertThat(responseBegin.getOutgoingWindow(), is(instanceOf(UnsignedInteger.class)));
assertThat(responseBegin.getNextOutgoingId(), is(instanceOf(UnsignedInteger.class)));
- interaction.doCloseConnection();
+ interaction.end().consumeResponse(End.class).close().consumeResponse(Close.class);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org