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 2017/11/20 11:20:17 UTC
qpid-broker-j git commit: QPID-8042: [Broker-J][AMQP 1.0] Add
protocol test for pipelined connection open
Repository: qpid-broker-j
Updated Branches:
refs/heads/master c6d80d80e -> 9daed1ed1
QPID-8042: [Broker-J][AMQP 1.0] Add protocol test for pipelined connection open
Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/9daed1ed
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/9daed1ed
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/9daed1ed
Branch: refs/heads/master
Commit: 9daed1ed1f494d4814e551c58a08020c00e6b143
Parents: c6d80d8
Author: Alex Rudyy <or...@apache.org>
Authored: Mon Nov 20 11:19:42 2017 +0000
Committer: Alex Rudyy <or...@apache.org>
Committed: Mon Nov 20 11:19:42 2017 +0000
----------------------------------------------------------------------
.../v1_0/transport/security/sasl/SaslTest.java | 47 +++++++++++++++++++-
.../apache/qpid/tests/protocol/Interaction.java | 8 ++++
2 files changed, 53 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/9daed1ed/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java
index 6fea928..d7f3bc1 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java
@@ -37,6 +37,7 @@ import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.apache.qpid.server.protocol.v1_0.type.Binary;
@@ -45,11 +46,12 @@ import org.apache.qpid.server.protocol.v1_0.type.security.SaslChallenge;
import org.apache.qpid.server.protocol.v1_0.type.security.SaslCode;
import org.apache.qpid.server.protocol.v1_0.type.security.SaslMechanisms;
import org.apache.qpid.server.protocol.v1_0.type.security.SaslOutcome;
-import org.apache.qpid.tests.utils.BrokerAdmin;
+import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
+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.BrokerAdmin;
import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
-import org.apache.qpid.tests.protocol.SpecificationTest;
public class SaslTest extends BrokerAdminUsingTestBase
{
@@ -104,6 +106,47 @@ public class SaslTest extends BrokerAdminUsingTestBase
}
}
+ @Ignore("QPID-8042")
+ @Test
+ @SpecificationTest(section = "2.4.2",
+ description = "For applications that use many short-lived connections,"
+ + " it MAY be desirable to pipeline the connection negotiation process."
+ + " A peer MAY do this by starting to send subsequent frames before receiving"
+ + " the partner’s connection header or open frame")
+ public void saslSuccessfulAuthenticationWithPipelinedFrames() throws Exception
+ {
+ final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.AMQP);
+ try (FrameTransport transport = new FrameTransport(addr, true).connect())
+ {
+ final Binary initialResponse = new Binary(String.format("\0%s\0%s", _username, _password).getBytes(StandardCharsets.US_ASCII));
+ final Interaction interaction = transport.newInteraction();
+ interaction.protocolHeader(SASL_AMQP_HEADER_BYTES)
+ .negotiateProtocol()
+ .saslMechanism(PLAIN)
+ .saslInitialResponse(initialResponse)
+ .saslInit()
+ .protocolHeader(AMQP_HEADER_BYTES)
+ .negotiateProtocol()
+ .openContainerId("testContainerId")
+ .open();
+
+ final byte[] saslHeaderResponse = interaction.consumeResponse().getLatestResponse(byte[].class);
+ assertThat(saslHeaderResponse, is(equalTo(SASL_AMQP_HEADER_BYTES)));
+
+ SaslMechanisms saslMechanismsResponse = interaction.consumeResponse().getLatestResponse(SaslMechanisms.class);
+ assertThat(Arrays.asList(saslMechanismsResponse.getSaslServerMechanisms()), hasItem(PLAIN));
+
+ SaslOutcome saslOutcome = interaction.consumeResponse().getLatestResponse(SaslOutcome.class);
+ assertThat(saslOutcome.getCode(), equalTo(SaslCode.OK));
+
+ final byte[] headerResponse = interaction.consumeResponse().getLatestResponse(byte[].class);
+ assertThat(headerResponse, is(equalTo(AMQP_HEADER_BYTES)));
+
+ interaction.consumeResponse().getLatestResponse(Open.class);
+ interaction.doCloseConnection();
+ }
+ }
+
@Test
@SpecificationTest(section = "5.3.2",
description = "SASL Negotiation [...] challenge/response step occurs once")
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/9daed1ed/systests/protocol-tests-core/src/main/java/org/apache/qpid/tests/protocol/Interaction.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-core/src/main/java/org/apache/qpid/tests/protocol/Interaction.java b/systests/protocol-tests-core/src/main/java/org/apache/qpid/tests/protocol/Interaction.java
index 238c0a5..2390227 100644
--- a/systests/protocol-tests-core/src/main/java/org/apache/qpid/tests/protocol/Interaction.java
+++ b/systests/protocol-tests-core/src/main/java/org/apache/qpid/tests/protocol/Interaction.java
@@ -92,6 +92,14 @@ public abstract class Interaction<I extends Interaction>
public <T> T getLatestResponse(Class<T> type) throws Exception
{
sync();
+
+ if (_latestResponse.getBody() == null)
+ {
+ throw new IllegalStateException(String.format("Unexpected response. Expected '%s' got '%s'.",
+ type.getSimpleName(),
+ _latestResponse.getClass()));
+ }
+
if (!type.isAssignableFrom(_latestResponse.getBody().getClass()))
{
throw new IllegalStateException(String.format("Unexpected response. Expected '%s' got '%s'.",
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org