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