You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2017/04/10 15:42:10 UTC
svn commit: r1790864 - in /qpid/java/trunk: ./
systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/
systests/protocol-tests-amqp-1-0/src/main/resources/
systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests...
Author: lquack
Date: Mon Apr 10 15:42:09 2017
New Revision: 1790864
URL: http://svn.apache.org/viewvc?rev=1790864&view=rev
Log:
QPID-7665: [Java Broker] Improvements to AMQP 1.0 Protocol Tests
* clean up work directory after test
* add SpecificationTest annotation to reference relevant sections of the AMQP specification
* add license header to initial config
Added:
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/SpecificationTest.java
- copied, changed from r1790856, qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/BrokerAdmin.java
Modified:
qpid/java/trunk/pom.xml
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/BrokerAdmin.java
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/EmbeddedBrokerPerClassAdminImpl.java
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/ExternalQpidBrokerAdminImpl.java
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/FrameTransport.java
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/resources/config-protocol-tests.json
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java
qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java
Modified: qpid/java/trunk/pom.xml
URL: http://svn.apache.org/viewvc/qpid/java/trunk/pom.xml?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/pom.xml (original)
+++ qpid/java/trunk/pom.xml Mon Apr 10 15:42:09 2017
@@ -141,7 +141,7 @@
<!-- test dependency version numbers -->
<junit-version>4.11</junit-version>
<mockito-version>1.9.5</mockito-version>
- <netty-version>4.1.9.Final</netty-version>
+ <netty-version>4.1.8.Final</netty-version>
<hamcrest-version>1.3</hamcrest-version>
<httpclient-version>4.4</httpclient-version>
<qpid-jms-client-version>0.21.0</qpid-jms-client-version>
Modified: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/BrokerAdmin.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/BrokerAdmin.java?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/BrokerAdmin.java (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/BrokerAdmin.java Mon Apr 10 15:42:09 2017
@@ -34,6 +34,7 @@ public interface BrokerAdmin extends Plu
InetSocketAddress getBrokerAddress(PortType portType);
void createQueue(String queueName);
+ void deleteQueue(String queueName);
enum PortType
{
Modified: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/EmbeddedBrokerPerClassAdminImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/EmbeddedBrokerPerClassAdminImpl.java?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/EmbeddedBrokerPerClassAdminImpl.java (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/EmbeddedBrokerPerClassAdminImpl.java Mon Apr 10 15:42:09 2017
@@ -24,10 +24,11 @@ import java.io.File;
import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.nio.file.Files;
-import java.nio.file.Path;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,12 +43,14 @@ import org.apache.qpid.server.logging.lo
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Container;
import org.apache.qpid.server.model.IllegalStateTransitionException;
+import org.apache.qpid.server.model.NotFoundException;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.SystemConfig;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.plugin.PluggableService;
import org.apache.qpid.server.store.MemoryConfigurationStore;
+import org.apache.qpid.server.util.FileUtils;
import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
@PluggableService
@@ -58,6 +61,7 @@ public class EmbeddedBrokerPerClassAdmin
private SystemLauncher _systemLauncher;
private Container<?> _broker;
private VirtualHostNode<?> _currentVirtualHostNode;
+ private String _currentWorkDirectory;
@Override
public void beforeTestClass(final Class testClass)
@@ -65,10 +69,11 @@ public class EmbeddedBrokerPerClassAdmin
LOGGER.info("beforeTestClass " + testClass.getSimpleName());
try
{
- Path qpidWorkDir = Files.createTempDirectory("qpid-work-");
+ String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date(System.currentTimeMillis()));
+ _currentWorkDirectory = Files.createTempDirectory(String.format("qpid-work-%s-%s-", timestamp, testClass.getSimpleName())).toString();
Map<String,String> context = new HashMap<>();
- context.put("qpid.work_dir", qpidWorkDir.toString());
+ context.put("qpid.work_dir", _currentWorkDirectory);
context.put("qpid.port.protocol_handshake_timeout", "1000000");
Map<String,Object> systemConfigAttributes = new HashMap<>();
@@ -135,7 +140,7 @@ public class EmbeddedBrokerPerClassAdmin
public void afterTestMethod(final Class testClass, final Method method)
{
LOGGER.info("afterTestMethod " + testClass.getSimpleName() + "#" + method.getName());
- if (!Boolean.getBoolean("qpid.tests.protocols.keepVirtualHosts"))
+ if (Boolean.getBoolean("broker.clean.between.tests"))
{
_currentVirtualHostNode.delete();
}
@@ -147,6 +152,10 @@ public class EmbeddedBrokerPerClassAdmin
LOGGER.info("afterTestClass " + testClass.getSimpleName());
_systemLauncher.shutdown();
_ports.clear();
+ if (Boolean.getBoolean("broker.clean.between.tests"))
+ {
+ FileUtils.delete(new File(_currentWorkDirectory), true);
+ }
}
@Override
@@ -170,11 +179,30 @@ public class EmbeddedBrokerPerClassAdmin
}
@Override
+ public void deleteQueue(final String queueName)
+ {
+ getQueue(queueName).delete();
+ }
+
+ @Override
public String getType()
{
return "EMBEDDED_BROKER_PER_CLASS";
}
+ private Queue getQueue(final String queueName)
+ {
+ Collection<Queue> queues = _currentVirtualHostNode.getVirtualHost().getChildren(Queue.class);
+ for (Queue queue : queues)
+ {
+ if (queue.getName().equals(queueName))
+ {
+ return queue;
+ }
+ }
+ throw new NotFoundException(String.format("Queue '%s' not found", queueName));
+ }
+
private class PortExtractingLauncherListener implements SystemLauncherListener
{
private SystemConfig<?> _systemConfig;
Modified: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/ExternalQpidBrokerAdminImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/ExternalQpidBrokerAdminImpl.java?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/ExternalQpidBrokerAdminImpl.java (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/ExternalQpidBrokerAdminImpl.java Mon Apr 10 15:42:09 2017
@@ -86,6 +86,12 @@ public class ExternalQpidBrokerAdminImpl
}
@Override
+ public void deleteQueue(final String queueName)
+ {
+ LOGGER.debug(String.format("deletion of queue '%s' requested", queueName));
+ }
+
+ @Override
public String getType()
{
return "EXTERNAL_BROKER";
Modified: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/FrameTransport.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/FrameTransport.java?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/FrameTransport.java (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/FrameTransport.java Mon Apr 10 15:42:09 2017
@@ -19,15 +19,21 @@
package org.apache.qpid.tests.protocol.v1_0;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertNull;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.Set;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
import com.google.common.util.concurrent.JdkFutureAdapters;
import com.google.common.util.concurrent.ListenableFuture;
@@ -46,14 +52,17 @@ import io.netty.channel.socket.nio.NioSo
import org.apache.qpid.server.protocol.v1_0.framing.TransportFrame;
import org.apache.qpid.server.protocol.v1_0.type.FrameBody;
import org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.Source;
+import org.apache.qpid.server.protocol.v1_0.type.messaging.Target;
+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.Role;
public class FrameTransport implements AutoCloseable
{
private static final long RESPONSE_TIMEOUT = 6000;
- private static final AtomicInteger _amqpConnectionIdGenerator = new AtomicInteger(1);
- private static final AtomicInteger _amqpChannelIdGenerator = new AtomicInteger(1);
+ private static final Set<Integer> _amqpConnectionIds = Collections.newSetFromMap(new ConcurrentHashMap<>());
private final Channel _channel;
private final BlockingQueue<Response> _queue = new ArrayBlockingQueue<>(100);
@@ -99,6 +108,7 @@ public class FrameTransport implements A
}
finally
{
+ _amqpConnectionIds.remove(_amqpConnectionId);
_workerGroup.shutdownGracefully();
}
}
@@ -146,8 +156,8 @@ public class FrameTransport implements A
{
doProtocolNegotiation();
Open open = new Open();
- _amqpConnectionId = _amqpConnectionIdGenerator.getAndIncrement();
- open.setContainerId(String.format("testContainer-%d", _amqpConnectionId));
+
+ open.setContainerId(String.format("testContainer-%d", getConnectionId()));
TransportFrame transportFrame = new TransportFrame((short) 0, open);
sendPerformative(transportFrame);
PerformativeResponse response = (PerformativeResponse) getNextResponse();
@@ -164,7 +174,7 @@ public class FrameTransport implements A
begin.setNextOutgoingId(UnsignedInteger.ZERO);
begin.setIncomingWindow(UnsignedInteger.ZERO);
begin.setOutgoingWindow(UnsignedInteger.ZERO);
- _amqpChannelId = (short) _amqpChannelIdGenerator.getAndIncrement();
+ _amqpChannelId = (short) 1;
sendPerformative(new TransportFrame(_amqpChannelId, begin));
PerformativeResponse response = (PerformativeResponse) getNextResponse();
if (!(response.getFrameBody() instanceof Begin))
@@ -173,9 +183,45 @@ public class FrameTransport implements A
}
}
+ public void doAttachReceivingLink(String queueName) throws Exception
+ {
+ doBeginSession();
+ Role localRole = Role.RECEIVER;
+ Attach attach = new Attach();
+ attach.setName("testReceivingLink");
+ attach.setHandle(new UnsignedInteger(0));
+ attach.setRole(localRole);
+ Source source = new Source();
+ source.setAddress(queueName);
+ attach.setSource(source);
+ Target target = new Target();
+ attach.setTarget(target);
+
+ sendPerformative(attach);
+ PerformativeResponse response = (PerformativeResponse) getNextResponse();
+
+ assertThat(response, is(notNullValue()));
+ assertThat(response.getFrameBody(), is(instanceOf(Attach.class)));
+ Attach responseAttach = (Attach) response.getFrameBody();
+ assertThat(responseAttach.getSource(), is(notNullValue()));
+ }
+
public void assertNoMoreResponses() throws Exception
{
Response response = getNextResponse();
assertNull("Unexpected response.", response);
}
+
+ private int getConnectionId()
+ {
+ if (_amqpConnectionId == 0)
+ {
+ _amqpConnectionId = 1;
+ while (!_amqpConnectionIds.add(_amqpConnectionId))
+ {
+ ++_amqpConnectionId;
+ }
+ }
+ return _amqpConnectionId;
+ }
}
Copied: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/SpecificationTest.java (from r1790856, qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/BrokerAdmin.java)
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/SpecificationTest.java?p2=qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/SpecificationTest.java&p1=qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/BrokerAdmin.java&r1=1790856&r2=1790864&rev=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/BrokerAdmin.java (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/java/org/apache/qpid/tests/protocol/v1_0/SpecificationTest.java Mon Apr 10 15:42:09 2017
@@ -1,4 +1,5 @@
-/*
+package org.apache.qpid.tests.protocol.v1_0;/*
+ *
* 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
@@ -15,29 +16,19 @@
* 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;
-
-import java.lang.reflect.Method;
-import java.net.InetSocketAddress;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
-import org.apache.qpid.server.plugin.Pluggable;
-public interface BrokerAdmin extends Pluggable
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface SpecificationTest
{
- void beforeTestClass(final Class testClass);
- void beforeTestMethod(final Class testClass, final Method method);
- void afterTestMethod(final Class testClass, final Method method);
- void afterTestClass(final Class testClass);
-
- InetSocketAddress getBrokerAddress(PortType portType);
-
- void createQueue(String queueName);
-
- enum PortType
- {
- ANONYMOUS_AMQP,
- AMQP
- }
+ String section();
+ String description();
}
Modified: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/resources/config-protocol-tests.json
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/resources/config-protocol-tests.json?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/resources/config-protocol-tests.json (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/main/resources/config-protocol-tests.json Mon Apr 10 15:42:09 2017
@@ -1,3 +1,23 @@
+/*
+ *
+ * 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.
+ *
+ */
{
"name" : "${broker.name}",
"modelVersion" : "7.0",
Modified: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java Mon Apr 10 15:42:09 2017
@@ -31,6 +31,7 @@ import org.apache.qpid.tests.protocol.v1
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.HeaderResponse;
import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
/*
@@ -50,6 +51,11 @@ queue creation?
public class ProtocolHeaderTest extends ProtocolTestBase
{
@Test
+ @SpecificationTest(section = "2.2",
+ description = "Prior to sending any frames on a connection, each peer MUST start by sending a protocol header that indicates "
+ + "the protocol version used on the connection. The protocol header consists of the upper case ASCII letters “AMQP” "
+ + "followed by a protocol id of zero, followed by three unsigned bytes representing the major, minor, and revision of "
+ + "the protocol version (currently 1 (MAJOR), 0 (MINOR), 0 (REVISION)).")
public void successfulHeaderExchange() throws Exception
{
final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
Modified: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java Mon Apr 10 15:42:09 2017
@@ -45,13 +45,14 @@ import org.apache.qpid.tests.protocol.v1
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.PerformativeResponse;
import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
public class OpenTest extends ProtocolTestBase
{
- private static final Logger LOGGER = LoggerFactory.getLogger(OpenTest.class);
-
@Test
+ @SpecificationTest(section = "1.3.4",
+ description = "Open without mandatory fields should result in a decoding error.")
public void emptyOpen() throws Exception
{
final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
@@ -72,6 +73,9 @@ public class OpenTest extends ProtocolTe
}
@Test
+ @SpecificationTest(section = "2.4.1",
+ description = "Each AMQP connection begins with an exchange of capabilities and limitations, "
+ + "including the maximum frame size.")
public void successfulOpen() throws Exception
{
final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
@@ -95,4 +99,26 @@ public class OpenTest extends ProtocolTe
transport.assertNoMoreResponses();
}
}
+
+ @Test
+ @SpecificationTest(section = "2.4.1", description = "The open frame can only be sent on channel 0")
+ public void failOpenOnChannelNotZero() throws Exception
+ {
+ final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
+ try (FrameTransport transport = new FrameTransport(addr))
+ {
+ transport.doProtocolNegotiation();
+ Open open = new Open();
+ open.setContainerId("testContainerId");
+ TransportFrame transportFrame = new TransportFrame((short) 1, open);
+ transport.sendPerformative(transportFrame);
+ PerformativeResponse response = (PerformativeResponse) transport.getNextResponse();
+
+ assertThat(response, is(notNullValue()));
+ assertThat(response.getFrameBody(), is(instanceOf(Close.class)));
+ Close responseClose = (Close) response.getFrameBody();
+ assertThat(responseClose.getError(), is(notNullValue()));
+ assertThat(responseClose.getError().getCondition(), equalTo(AmqpError.NOT_ALLOWED));
+ }
+ }
}
Modified: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java Mon Apr 10 15:42:09 2017
@@ -42,10 +42,13 @@ import org.apache.qpid.tests.protocol.v1
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.PerformativeResponse;
import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
public class AttachTest extends ProtocolTestBase
{
@Test
+ @SpecificationTest(section = "1.3.4",
+ description = "Attach without mandatory fields should result in a decoding error.")
public void emptyAttach() throws Exception
{
final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
@@ -66,6 +69,9 @@ public class AttachTest extends Protocol
}
@Test
+ @SpecificationTest(section = "2.6.3",
+ description = "Links are established and/or resumed by creating a link endpoint associated with a local terminus, "
+ + "assigning it to an unused handle, and sending an attach frame.")
public void successfulAttachAsSender() throws Exception
{
final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
@@ -98,6 +104,9 @@ public class AttachTest extends Protocol
}
@Test
+ @SpecificationTest(section = "2.6.3",
+ description = "Links are established and/or resumed by creating a link endpoint associated with a local terminus, "
+ + "assigning it to an unused handle, and sending an attach frame.")
public void successfulAttachAsReceiver() throws Exception
{
String queueName = "testQueue";
Modified: qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java?rev=1790864&r1=1790863&r2=1790864&view=diff
==============================================================================
--- qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java (original)
+++ qpid/java/trunk/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java Mon Apr 10 15:42:09 2017
@@ -38,10 +38,13 @@ import org.apache.qpid.tests.protocol.v1
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.PerformativeResponse;
import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
public class BeginTest extends ProtocolTestBase
{
@Test
+ @SpecificationTest(section = "1.3.4",
+ description = "Begin without mandatory fields should result in a decoding error.")
public void emptyBegin() throws Exception
{
final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
@@ -63,6 +66,9 @@ public class BeginTest extends ProtocolT
}
@Test
+ @SpecificationTest(section = "2.5.1",
+ description = "Sessions are established by creating a session endpoint, assigning it to an unused channel number, "
+ + "and sending a begin announcing the association of the session endpoint with the outgoing channel.")
public void successfulBegin() throws Exception
{
final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org