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 c8bbebfd146eb1e71c9e02d309e39897e8659bd8 Author: Alex Rudyy <[email protected]> AuthorDate: Mon Aug 19 14:19:03 2019 +0100 QPID-8350: [Tests][AMQP 1.0] Add more assertions and validation into sole connection tests --- .../extensions/soleconn/CloseExistingPolicy.java | 89 ++++++-------- .../v1_0/extensions/soleconn/MixedPolicy.java | 13 ++- .../soleconn/RefuseConnectionPolicy.java | 109 ++++++----------- .../extensions/soleconn/SoleConnectionAsserts.java | 129 +++++++++++++++++++++ 4 files changed, 213 insertions(+), 127 deletions(-) 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.Sole 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 @@ public class CloseExistingPolicy extends BrokerAdminUsingTestBase .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 @@ public class CloseExistingPolicy extends BrokerAdminUsingTestBase 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 @@ public class CloseExistingPolicy extends BrokerAdminUsingTestBase .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 @@ public class CloseExistingPolicy extends BrokerAdminUsingTestBase .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 @@ public class CloseExistingPolicy extends BrokerAdminUsingTestBase .openProperties(Collections.singletonMap(SOLE_CONNECTION_ENFORCEMENT_POLICY, CLOSE_EXISTING)) .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)))); + .consumeResponse(Open.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()})); - } + final Open responseOpen2 = interaction2.getLatestResponse(Open.class); + assumeSoleConnectionCapability(responseOpen2); + assumeEnforcementPolicyCloseExisting(responseOpen2); + assumeDetectionPolicyStrong(responseOpen2); + assertResourceLocked(interaction1.consumeResponse().getLatestResponse(Close.class)); } } } @@ -180,12 +172,10 @@ public class CloseExistingPolicy extends BrokerAdminUsingTestBase 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 @@ public class CloseExistingPolicy extends BrokerAdminUsingTestBase .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.Sole 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.junit.Test; 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 @@ public class MixedPolicy extends BrokerAdminUsingTestBase 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 @@ public class MixedPolicy extends BrokerAdminUsingTestBase 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.Sole 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 @@ public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase .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 @@ public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase 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 @@ public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase 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 @@ public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase .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 @@ public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase 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 @@ public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase .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 @@ public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase .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 @@ public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase .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 @@ public class RefuseConnectionPolicy extends BrokerAdminUsingTestBase .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)))); + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
