QPID-8350: [Tests][AMQP 1.0] Add more assertions and validation into sole connection tests
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/CloseExistingPolicy.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/CloseExistingPolicy.java
index 8e4f676..0427c96 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/CloseExistingPolicy.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/CloseExistingPolicy.java
@@ -24,30 +24,28 @@
import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionConnectionProperties.SOLE_CONNECTION_ENFORCEMENT_POLICY;
import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionConnectionProperties.SOLE_CONNECTION_FOR_CONTAINER;
import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionEnforcementPolicy.CLOSE_EXISTING;
-import static org.hamcrest.CoreMatchers.hasItem;
-import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assertEnforcementPolicyCloseExisting;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assertResourceLocked;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assertSoleConnectionCapability;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeDetectionPolicyStrong;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeEnforcementPolicyCloseExisting;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeSoleConnectionCapability;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.in;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assume.assumeThat;
import java.net.InetSocketAddress;
-import java.util.Arrays;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
-import org.apache.qpid.server.protocol.v1_0.type.Symbol;
import org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger;
import org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionDetectionPolicy;
-import org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError;
import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
-import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
public class CloseExistingPolicy extends BrokerAdminUsingTestBase
@@ -75,7 +73,9 @@
.open().consumeResponse()
.getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen.getOfferedCapabilities()), hasItem(SOLE_CONNECTION_FOR_CONTAINER));
+ assumeSoleConnectionCapability(responseOpen);
+ assumeEnforcementPolicyCloseExisting(responseOpen);
+
if (responseOpen.getProperties().containsKey(SOLE_CONNECTION_DETECTION_POLICY))
{
assertThat(responseOpen.getProperties().get(SOLE_CONNECTION_DETECTION_POLICY),
@@ -98,6 +98,10 @@
CLOSE_EXISTING))
.open().consumeResponse(Open.class);
+ final Open responseOpen = interaction1.getLatestResponse(Open.class);
+ assumeSoleConnectionCapability(responseOpen);
+ assumeEnforcementPolicyCloseExisting(responseOpen);
+
try (FrameTransport transport2 = new FrameTransport(_brokerAddress).connect())
{
final Interaction interaction2 = transport2.newInteraction();
@@ -109,26 +113,18 @@
.open()
.sync();
- final Close close1 = interaction1.consumeResponse().getLatestResponse(Close.class);
- assertThat(close1.getError(), is(notNullValue()));
- assertThat(close1.getError().getCondition(), is(equalTo(AmqpError.RESOURCE_LOCKED)));
- assertThat(close1.getError().getInfo(), is(equalTo(Collections.singletonMap(Symbol.valueOf("sole-connection-enforcement"), true))));
+ assertResourceLocked(interaction1.consumeResponse().getLatestResponse(Close.class));
final Open responseOpen2 = interaction2.consumeResponse().getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen2.getOfferedCapabilities()), hasItem(SOLE_CONNECTION_FOR_CONTAINER));
- if (responseOpen2.getProperties().containsKey(SOLE_CONNECTION_DETECTION_POLICY))
- {
- assertThat(responseOpen2.getProperties().get(SOLE_CONNECTION_DETECTION_POLICY),
- in(new UnsignedInteger[]{SoleConnectionDetectionPolicy.STRONG.getValue(),
- SoleConnectionDetectionPolicy.WEAK.getValue()}));
- }
+ assertSoleConnectionCapability(responseOpen2);
+ assertEnforcementPolicyCloseExisting(responseOpen2);
}
}
}
@Test
- public void weakDetection() throws Exception
+ public void strongDetectionWhenConnectionWithoutSoleConnectionCapabilityOpened() throws Exception
{
try (FrameTransport transport1 = new FrameTransport(_brokerAddress).connect())
{
@@ -138,6 +134,10 @@
.openContainerId("testContainerId")
.open().consumeResponse(Open.class);
+ final Open responseOpen = interaction1.getLatestResponse(Open.class);
+ assumeSoleConnectionCapability(responseOpen);
+ assumeDetectionPolicyStrong(responseOpen);
+
try (FrameTransport transport2 = new FrameTransport(_brokerAddress).connect())
{
final Interaction interaction2 = transport2.newInteraction();
@@ -147,21 +147,13 @@
.openProperties(Collections.singletonMap(SOLE_CONNECTION_ENFORCEMENT_POLICY,
CLOSE_EXISTING))
.open()
- .sync();
+ .consumeResponse(Open.class);
- final Close close1 = interaction1.consumeResponse().getLatestResponse(Close.class);
- assertThat(close1.getError(), is(notNullValue()));
- assertThat(close1.getError().getCondition(), is(equalTo(AmqpError.RESOURCE_LOCKED)));
- assertThat(close1.getError().getInfo(), is(equalTo(Collections.singletonMap(Symbol.valueOf("sole-connection-enforcement"), true))));
-
- final Open responseOpen2 = interaction2.consumeResponse().getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen2.getOfferedCapabilities()), hasItem(SOLE_CONNECTION_FOR_CONTAINER));
- if (responseOpen2.getProperties().containsKey(SOLE_CONNECTION_DETECTION_POLICY))
- {
- assertThat(responseOpen2.getProperties().get(SOLE_CONNECTION_DETECTION_POLICY),
- in(new UnsignedInteger[]{SoleConnectionDetectionPolicy.STRONG.getValue(),
- SoleConnectionDetectionPolicy.WEAK.getValue()}));
- }
+ final Open responseOpen2 = interaction2.getLatestResponse(Open.class);
+ assumeSoleConnectionCapability(responseOpen2);
+ assumeEnforcementPolicyCloseExisting(responseOpen2);
+ assumeDetectionPolicyStrong(responseOpen2);
+ assertResourceLocked(interaction1.consumeResponse().getLatestResponse(Close.class));
}
}
}
@@ -180,12 +172,10 @@
CLOSE_EXISTING))
.open().consumeResponse()
.getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen.getOfferedCapabilities()), hasItem(SOLE_CONNECTION_FOR_CONTAINER));
- if (responseOpen.getProperties().containsKey(SOLE_CONNECTION_DETECTION_POLICY))
- {
- assumeThat(responseOpen.getProperties().get(SOLE_CONNECTION_DETECTION_POLICY),
- is(equalTo(SoleConnectionDetectionPolicy.STRONG.getValue())));
- }
+
+ assumeSoleConnectionCapability(responseOpen);
+ assumeEnforcementPolicyCloseExisting(responseOpen);
+ assumeDetectionPolicyStrong(responseOpen);
try (FrameTransport transport2 = new FrameTransport(_brokerAddress).connect())
{
@@ -195,19 +185,8 @@
.openContainerId("testContainerId")
.open().sync();
- final Close close1 = interaction1.consumeResponse().getLatestResponse(Close.class);
- assertThat(close1.getError(), is(notNullValue()));
- assertThat(close1.getError().getCondition(), is(equalTo(AmqpError.RESOURCE_LOCKED)));
- assertThat(close1.getError().getInfo(), is(equalTo(Collections.singletonMap(Symbol.valueOf("sole-connection-enforcement"), true))));
-
- final Open responseOpen2 = interaction2.consumeResponse().getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen2.getOfferedCapabilities()), hasItem(SOLE_CONNECTION_FOR_CONTAINER));
- if (responseOpen2.getProperties().containsKey(SOLE_CONNECTION_DETECTION_POLICY))
- {
- assertThat(responseOpen2.getProperties().get(SOLE_CONNECTION_DETECTION_POLICY),
- in(new UnsignedInteger[]{SoleConnectionDetectionPolicy.STRONG.getValue(),
- SoleConnectionDetectionPolicy.WEAK.getValue()}));
- }
+ assertResourceLocked(interaction1.consumeResponse().getLatestResponse(Close.class));
+ assertSoleConnectionCapability(interaction2.consumeResponse().getLatestResponse(Open.class));
}
}
}
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/MixedPolicy.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/MixedPolicy.java
index 0c9ce9f..5e32c86 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/MixedPolicy.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/MixedPolicy.java
@@ -24,6 +24,9 @@
import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionConnectionProperties.SOLE_CONNECTION_FOR_CONTAINER;
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.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeEnforcementPolicyCloseExisting;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeEnforcementPolicyRefuse;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeSoleConnectionCapability;
import java.net.InetSocketAddress;
import java.util.Collections;
@@ -33,9 +36,9 @@
import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
-import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
public class MixedPolicy extends BrokerAdminUsingTestBase
@@ -61,6 +64,10 @@
CLOSE_EXISTING))
.open().consumeResponse(Open.class);
+ Open responseOpen = interaction1.getLatestResponse(Open.class);
+ assumeSoleConnectionCapability(responseOpen);
+ assumeEnforcementPolicyCloseExisting(responseOpen);
+
try (FrameTransport transport2 = new FrameTransport(_brokerAddress).connect())
{
final Interaction interaction2 = transport2.newInteraction();
@@ -104,6 +111,10 @@
REFUSE_CONNECTION))
.open().consumeResponse(Open.class);
+ final Open responseOpen = interaction1.getLatestResponse(Open.class);
+ assumeSoleConnectionCapability(responseOpen);
+ assumeEnforcementPolicyRefuse(responseOpen);
+
try (FrameTransport transport2 = new FrameTransport(_brokerAddress).connect())
{
final Interaction interaction2 = transport2.newInteraction();
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/RefuseConnectionPolicy.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/RefuseConnectionPolicy.java
index ca7d4a7..08ebda1 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/RefuseConnectionPolicy.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/RefuseConnectionPolicy.java
@@ -24,31 +24,28 @@
import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionConnectionProperties.SOLE_CONNECTION_ENFORCEMENT_POLICY;
import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionConnectionProperties.SOLE_CONNECTION_FOR_CONTAINER;
import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionEnforcementPolicy.REFUSE_CONNECTION;
-import static org.hamcrest.CoreMatchers.hasItem;
-import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assertConnectionEstablishmentFailed;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assertInvalidContainerId;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeConnectionEstablishmentFailed;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeDetectionPolicyStrong;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeEnforcementPolicyRefuse;
+import static org.apache.qpid.tests.protocol.v1_0.extensions.soleconn.SoleConnectionAsserts.assumeSoleConnectionCapability;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasKey;
import static org.hamcrest.Matchers.in;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assume.assumeThat;
import java.net.InetSocketAddress;
-import java.util.Arrays;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
-import org.apache.qpid.server.protocol.v1_0.type.Symbol;
import org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger;
import org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionDetectionPolicy;
-import org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError;
import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
-import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase
@@ -76,7 +73,9 @@
.open().consumeResponse()
.getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen.getOfferedCapabilities()), hasItem(SOLE_CONNECTION_FOR_CONTAINER));
+ assumeSoleConnectionCapability(responseOpen);
+ assumeEnforcementPolicyRefuse(responseOpen);
+
if (responseOpen.getProperties().containsKey(SOLE_CONNECTION_DETECTION_POLICY))
{
assertThat(responseOpen.getProperties().get(SOLE_CONNECTION_DETECTION_POLICY),
@@ -99,6 +98,10 @@
REFUSE_CONNECTION))
.open().consumeResponse(Open.class);
+ final Open responseOpen = interaction1.getLatestResponse(Open.class);
+ assumeSoleConnectionCapability(responseOpen);
+ assumeEnforcementPolicyRefuse(responseOpen);
+
try (FrameTransport transport2 = new FrameTransport(_brokerAddress).connect())
{
final Interaction interaction2 = transport2.newInteraction();
@@ -110,26 +113,16 @@
REFUSE_CONNECTION))
.open().consumeResponse()
.getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen2.getOfferedCapabilities()),
- hasItem(SOLE_CONNECTION_FOR_CONTAINER));
- assertThat(responseOpen2.getProperties(),
- hasKey(Symbol.valueOf("amqp:connection-establishment-failed")));
- assertThat(responseOpen2.getProperties().get(Symbol.valueOf("amqp:connection-establishment-failed")),
- is(true));
- final Close close2 = interaction2.consumeResponse().getLatestResponse(Close.class);
- assertThat(close2.getError(), is(notNullValue()));
- assertThat(close2.getError().getCondition(), is(equalTo(AmqpError.INVALID_FIELD)));
- assertThat(close2.getError().getInfo(),
- is(equalTo(Collections.singletonMap(Symbol.valueOf("invalid-field"),
- Symbol.valueOf("container-id")))));
+ assertConnectionEstablishmentFailed(responseOpen2);
+ assertInvalidContainerId(interaction2.consumeResponse().getLatestResponse(Close.class));
}
}
}
@Test
- public void weakDetection() throws Exception
+ public void strongDetectionWhenConnectionWithoutSoleConnectionCapabilityOpened() throws Exception
{
try (FrameTransport transport1 = new FrameTransport(_brokerAddress).connect())
{
@@ -139,6 +132,10 @@
.openContainerId("testContainerId")
.open().consumeResponse(Open.class);
+ final Open responseOpen = interaction1.getLatestResponse(Open.class);
+ assumeSoleConnectionCapability(responseOpen);
+ assumeDetectionPolicyStrong(responseOpen);
+
try (FrameTransport transport2 = new FrameTransport(_brokerAddress).connect())
{
final Interaction interaction2 = transport2.newInteraction();
@@ -150,19 +147,9 @@
REFUSE_CONNECTION))
.open().consumeResponse()
.getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen2.getOfferedCapabilities()),
- hasItem(SOLE_CONNECTION_FOR_CONTAINER));
- assertThat(responseOpen2.getProperties(),
- hasKey(Symbol.valueOf("amqp:connection-establishment-failed")));
- assertThat(responseOpen2.getProperties().get(Symbol.valueOf("amqp:connection-establishment-failed")),
- is(true));
- final Close close2 = interaction2.consumeResponse().getLatestResponse(Close.class);
- assertThat(close2.getError(), is(notNullValue()));
- assertThat(close2.getError().getCondition(), is(equalTo(AmqpError.INVALID_FIELD)));
- assertThat(close2.getError().getInfo(),
- is(equalTo(Collections.singletonMap(Symbol.valueOf("invalid-field"),
- Symbol.valueOf("container-id")))));
+ assumeConnectionEstablishmentFailed(responseOpen2);
+ assertInvalidContainerId(interaction2.consumeResponse().getLatestResponse(Close.class));
}
}
}
@@ -178,15 +165,13 @@
.openDesiredCapabilities(SOLE_CONNECTION_FOR_CONTAINER)
.openProperties(Collections.singletonMap(
SOLE_CONNECTION_ENFORCEMENT_POLICY,
- REFUSE_CONNECTION))
+ REFUSE_CONNECTION.getValue()))
.open().consumeResponse()
.getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen.getOfferedCapabilities()), hasItem(SOLE_CONNECTION_FOR_CONTAINER));
- if (responseOpen.getProperties().containsKey(SOLE_CONNECTION_DETECTION_POLICY))
- {
- assumeThat(responseOpen.getProperties().get(SOLE_CONNECTION_DETECTION_POLICY),
- is(equalTo(SoleConnectionDetectionPolicy.STRONG.getValue())));
- }
+
+ assumeSoleConnectionCapability(responseOpen);
+ assumeEnforcementPolicyRefuse(responseOpen);
+ assumeDetectionPolicyStrong(responseOpen);
try (FrameTransport transport2 = new FrameTransport(_brokerAddress).connect())
{
@@ -197,19 +182,8 @@
.open().consumeResponse()
.getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen2.getOfferedCapabilities()),
- hasItem(SOLE_CONNECTION_FOR_CONTAINER));
- assertThat(responseOpen2.getProperties(),
- hasKey(Symbol.valueOf("amqp:connection-establishment-failed")));
- assertThat(responseOpen2.getProperties().get(Symbol.valueOf("amqp:connection-establishment-failed")),
- is(true));
-
- final Close close2 = interaction2.consumeResponse().getLatestResponse(Close.class);
- assertThat(close2.getError(), is(notNullValue()));
- assertThat(close2.getError().getCondition(), is(equalTo(AmqpError.INVALID_FIELD)));
- assertThat(close2.getError().getInfo(),
- is(equalTo(Collections.singletonMap(Symbol.valueOf("invalid-field"),
- Symbol.valueOf("container-id")))));
+ assertConnectionEstablishmentFailed(responseOpen2);
+ assertInvalidContainerId(interaction2.consumeResponse().getLatestResponse(Close.class));
}
}
}
@@ -226,6 +200,10 @@
.openDesiredCapabilities(SOLE_CONNECTION_FOR_CONTAINER)
.open().consumeResponse(Open.class);
+ final Open responseOpen = interaction1.getLatestResponse(Open.class);
+ assumeSoleConnectionCapability(responseOpen);
+ assumeEnforcementPolicyRefuse(responseOpen);
+
try (FrameTransport transport2 = new FrameTransport(_brokerAddress).connect())
{
final Interaction interaction2 = transport2.newInteraction();
@@ -236,19 +214,8 @@
.open().consumeResponse()
.getLatestResponse(Open.class);
- assertThat(Arrays.asList(responseOpen2.getOfferedCapabilities()),
- hasItem(SOLE_CONNECTION_FOR_CONTAINER));
- assertThat(responseOpen2.getProperties(),
- hasKey(Symbol.valueOf("amqp:connection-establishment-failed")));
- assertThat(responseOpen2.getProperties().get(Symbol.valueOf("amqp:connection-establishment-failed")),
- is(true));
-
- final Close close2 = interaction2.consumeResponse().getLatestResponse(Close.class);
- assertThat(close2.getError(), is(notNullValue()));
- assertThat(close2.getError().getCondition(), is(equalTo(AmqpError.INVALID_FIELD)));
- assertThat(close2.getError().getInfo(),
- is(equalTo(Collections.singletonMap(Symbol.valueOf("invalid-field"),
- Symbol.valueOf("container-id")))));
+ assertConnectionEstablishmentFailed(responseOpen2);
+ assertInvalidContainerId(interaction2.consumeResponse().getLatestResponse(Close.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
new file mode 100644
index 0000000..298ab00
--- /dev/null
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/extensions/soleconn/SoleConnectionAsserts.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.tests.protocol.v1_0.extensions.soleconn;
+
+import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionConnectionProperties.SOLE_CONNECTION_DETECTION_POLICY;
+import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionConnectionProperties.SOLE_CONNECTION_ENFORCEMENT_POLICY;
+import static org.apache.qpid.server.protocol.v1_0.type.extensions.soleconn.SoleConnectionConnectionProperties.SOLE_CONNECTION_FOR_CONTAINER;
+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.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;
+import org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError;
+import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
+import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
+
+class SoleConnectionAsserts
+{
+ private static final Symbol CONNECTION_ESTABLISHMENT_FAILED = Symbol.valueOf("amqp:connection-establishment-failed");
+ private static final Symbol SOLE_CONNECTION_ENFORCEMENT = Symbol.valueOf("sole-connection-enforcement");
+ private static final Symbol INVALID_FIELD = Symbol.valueOf("invalid-field");
+ private static final Symbol CONTAINER_ID = Symbol.valueOf("container-id");
+
+ private SoleConnectionAsserts()
+ {
+ }
+
+ static void assumeSoleConnectionCapability(Open open)
+ {
+ assumeThat(open.getOfferedCapabilities(), is(notNullValue()));
+ assumeThat(open.getOfferedCapabilities(), hasItemInArray(SOLE_CONNECTION_FOR_CONTAINER));
+ }
+
+ static void assertSoleConnectionCapability(Open open)
+ {
+ assertThat(open.getOfferedCapabilities(), is(notNullValue()));
+ assertThat(open.getOfferedCapabilities(), hasItemInArray(SOLE_CONNECTION_FOR_CONTAINER));
+ }
+
+ static void assumeEnforcementPolicyCloseExisting(Open open)
+ {
+ assumeThat(open.getProperties(), is(notNullValue()));
+ assumeThat(open.getProperties(), hasEntry(SOLE_CONNECTION_ENFORCEMENT_POLICY, CLOSE_EXISTING.getValue()));
+ }
+
+ static void assertEnforcementPolicyCloseExisting(Open open)
+ {
+ assertThat(open.getProperties(), is(notNullValue()));
+ assertThat(open.getProperties(), hasEntry(SOLE_CONNECTION_ENFORCEMENT_POLICY, CLOSE_EXISTING.getValue()));
+ }
+
+ static void assumeEnforcementPolicyRefuse(Open open)
+ {
+ 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)))));
+ }
+
+ static void assumeDetectionPolicyStrong(Open open)
+ {
+ assumeThat(open.getProperties(), is(notNullValue()));
+ assumeThat(open.getProperties(),
+ anyOf(hasEntry(SOLE_CONNECTION_DETECTION_POLICY, SoleConnectionDetectionPolicy.STRONG.getValue()),
+ is(not(hasKey(SOLE_CONNECTION_DETECTION_POLICY)))));
+ }
+
+ static void assertConnectionEstablishmentFailed(final Open open)
+ {
+ assertThat(open.getProperties(), is(notNullValue()));
+ assertThat(open.getProperties(), Matchers.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));
+ assertThat(open.getProperties(), hasEntry(CONNECTION_ESTABLISHMENT_FAILED, true));
+ }
+
+
+ static void assertResourceLocked(final Close close)
+ {
+ assertThat(close.getError(), is(notNullValue()));
+ assertThat(close.getError().getCondition(), is(equalTo(AmqpError.RESOURCE_LOCKED)));
+ assertThat(close.getError().getInfo(), is(equalTo(Collections.singletonMap(SOLE_CONNECTION_ENFORCEMENT, true))));
+ }
+
+
+ static void assertInvalidContainerId(final Close close)
+ {
+ assertThat(close.getError(), is(notNullValue()));
+ assertThat(close.getError().getCondition(), is(equalTo(AmqpError.INVALID_FIELD)));
+ assertThat(close.getError().getInfo(), is(equalTo(Collections.singletonMap(INVALID_FIELD, CONTAINER_ID))));
+ }
+}