From 61a16cef3fe9da1cc0be30c90464efbc66d78990 Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Sat, 4 Feb 2012 23:36:00 +0000 Subject: QPID-3813: allow configuring the default version reply to an unsupported protocol version initiation git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1240644 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/qpid/server/DisablingProtocolsTest.java | 122 ----------------- .../qpid/server/SupportedProtocolVersionsTest.java | 147 +++++++++++++++++++++ 2 files changed, 147 insertions(+), 122 deletions(-) delete mode 100644 java/systests/src/main/java/org/apache/qpid/server/DisablingProtocolsTest.java create mode 100644 java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java (limited to 'java/systests') diff --git a/java/systests/src/main/java/org/apache/qpid/server/DisablingProtocolsTest.java b/java/systests/src/main/java/org/apache/qpid/server/DisablingProtocolsTest.java deleted file mode 100644 index 5b3ac8d745..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/server/DisablingProtocolsTest.java +++ /dev/null @@ -1,122 +0,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 - * 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.server; - -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.configuration.ClientProperties; -import org.apache.qpid.framing.ProtocolVersion; -import org.apache.qpid.test.utils.QpidBrokerTestCase; - -/** - * Tests to validate it is possible to disable support for particular protocol - * versions entirely, rather than selectively excluding them on particular ports. - */ -public class DisablingProtocolsTest extends QpidBrokerTestCase -{ - public void setUp() throws Exception - { - // No-op, we call super.setUp() from test methods after appropriate config overrides - } - - /** - * Test that 0-10, 0-9-1, 0-9, and 0-8 support is present when no - * attempt has yet been made to disable them, and forcing the client - * to negotiate from a particular protocol version returns a connection - * using the expected protocol version. - */ - public void testDefaultProtocolSupport() throws Exception - { - //Start the broker without modifying its supported protocols - super.setUp(); - - //Verify requesting a 0-10 connection works - setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-10"); - AMQConnection connection = (AMQConnection) getConnection(); - assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_10, connection.getProtocolVersion()); - connection.close(); - - //Verify requesting a 0-91 connection works - setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-9-1"); - connection = (AMQConnection) getConnection(); - assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_91, connection.getProtocolVersion()); - connection.close(); - - //Verify requesting a 0-9 connection works - setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-9"); - connection = (AMQConnection) getConnection(); - assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_9, connection.getProtocolVersion()); - connection.close(); - - //Verify requesting a 0-8 connection works - setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-8"); - connection = (AMQConnection) getConnection(); - assertEquals("Unexpected protocol version in use", ProtocolVersion.v8_0, connection.getProtocolVersion()); - connection.close(); - } - - public void testDisabling010() throws Exception - { - //disable 0-10 support - setConfigurationProperty("connector.amqp010enabled", "false"); - - super.setUp(); - - //Verify initially requesting a 0-10 connection now negotiates a 0-91 - //connection as the broker should reply with its highest supported protocol - setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-10"); - AMQConnection connection = (AMQConnection) getConnection(); - assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_91, connection.getProtocolVersion()); - connection.close(); - } - - public void testDisabling091and010() throws Exception - { - //disable 0-91 and 0-10 support - setConfigurationProperty("connector.amqp010enabled", "false"); - setConfigurationProperty("connector.amqp091enabled", "false"); - - super.setUp(); - - //Verify initially requesting a 0-10 connection now negotiates a 0-9 - //connection as the broker should reply with its highest supported protocol - setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-10"); - AMQConnection connection = (AMQConnection) getConnection(); - assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_9, connection.getProtocolVersion()); - connection.close(); - } - - public void testDisabling09and091and010() throws Exception - { - //disable 0-9, 0-91 and 0-10 support - setConfigurationProperty("connector.amqp09enabled", "false"); - setConfigurationProperty("connector.amqp091enabled", "false"); - setConfigurationProperty("connector.amqp010enabled", "false"); - - super.setUp(); - - //Verify initially requesting a 0-10 connection now negotiates a 0-8 - //connection as the broker should reply with its highest supported protocol - setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-10"); - AMQConnection connection = (AMQConnection) getConnection(); - assertEquals("Unexpected protocol version in use", ProtocolVersion.v8_0, connection.getProtocolVersion()); - connection.close(); - } -} \ No newline at end of file diff --git a/java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java b/java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java new file mode 100644 index 0000000000..c42bb3b1fa --- /dev/null +++ b/java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java @@ -0,0 +1,147 @@ +/* + * 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.server; + +import org.apache.qpid.client.AMQConnection; +import org.apache.qpid.configuration.ClientProperties; +import org.apache.qpid.framing.ProtocolVersion; +import org.apache.qpid.server.configuration.ServerConfiguration; +import org.apache.qpid.test.utils.QpidBrokerTestCase; + +/** + * Tests to validate it is possible to disable support for particular protocol + * versions entirely, rather than selectively excluding them on particular ports, + * and it is possible to configure the reply to an unsupported protocol initiation. + */ +public class SupportedProtocolVersionsTest extends QpidBrokerTestCase +{ + public void setUp() throws Exception + { + // No-op, we call super.setUp() from test methods after appropriate config overrides + } + + /** + * Test that 0-10, 0-9-1, 0-9, and 0-8 support is present when no + * attempt has yet been made to disable them, and forcing the client + * to negotiate from a particular protocol version returns a connection + * using the expected protocol version. + */ + public void testDefaultProtocolSupport() throws Exception + { + //Start the broker without modifying its supported protocols + super.setUp(); + + //Verify requesting a 0-10 connection works + setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-10"); + AMQConnection connection = (AMQConnection) getConnection(); + assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_10, connection.getProtocolVersion()); + connection.close(); + + //Verify requesting a 0-91 connection works + setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-9-1"); + connection = (AMQConnection) getConnection(); + assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_91, connection.getProtocolVersion()); + connection.close(); + + //Verify requesting a 0-9 connection works + setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-9"); + connection = (AMQConnection) getConnection(); + assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_9, connection.getProtocolVersion()); + connection.close(); + + //Verify requesting a 0-8 connection works + setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-8"); + connection = (AMQConnection) getConnection(); + assertEquals("Unexpected protocol version in use", ProtocolVersion.v8_0, connection.getProtocolVersion()); + connection.close(); + } + + public void testDisabling010() throws Exception + { + //disable 0-10 support + setConfigurationProperty("connector.amqp010enabled", "false"); + + super.setUp(); + + //Verify initially requesting a 0-10 connection now negotiates a 0-91 + //connection as the broker should reply with its highest supported protocol + setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-10"); + AMQConnection connection = (AMQConnection) getConnection(); + assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_91, connection.getProtocolVersion()); + connection.close(); + } + + public void testDisabling091and010() throws Exception + { + //disable 0-91 and 0-10 support + setConfigurationProperty(ServerConfiguration.CONNECTOR_AMQP010ENABLED, "false"); + setConfigurationProperty(ServerConfiguration.CONNECTOR_AMQP091ENABLED, "false"); + + super.setUp(); + + //Verify initially requesting a 0-10 connection now negotiates a 0-9 + //connection as the broker should reply with its highest supported protocol + setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-10"); + AMQConnection connection = (AMQConnection) getConnection(); + assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_9, connection.getProtocolVersion()); + connection.close(); + } + + public void testDisabling09and091and010() throws Exception + { + //disable 0-9, 0-91 and 0-10 support + setConfigurationProperty(ServerConfiguration.CONNECTOR_AMQP09ENABLED, "false"); + setConfigurationProperty(ServerConfiguration.CONNECTOR_AMQP091ENABLED, "false"); + setConfigurationProperty(ServerConfiguration.CONNECTOR_AMQP010ENABLED, "false"); + + super.setUp(); + + //Verify initially requesting a 0-10 connection now negotiates a 0-8 + //connection as the broker should reply with its highest supported protocol + setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-10"); + AMQConnection connection = (AMQConnection) getConnection(); + assertEquals("Unexpected protocol version in use", ProtocolVersion.v8_0, connection.getProtocolVersion()); + connection.close(); + } + + public void testConfiguringReplyingToUnsupported010ProtocolInitiationWith09insteadOf091() throws Exception + { + //disable 0-10 support, and set the default unsupported protocol initiation reply to 0-9 + setConfigurationProperty(ServerConfiguration.CONNECTOR_AMQP010ENABLED, "false"); + setConfigurationProperty(ServerConfiguration.CONNECTOR_AMQP_SUPPORTED_REPLY, "v0_9"); + + super.setUp(); + + //Verify initially requesting a 0-10 connection now negotiates a 0-9 connection as the + //broker should reply with its 'default unsupported protocol initiation reply' as opposed + //to the previous behaviour of the highest supported protocol version. + setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-10"); + AMQConnection connection = (AMQConnection) getConnection(); + assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_9, connection.getProtocolVersion()); + connection.close(); + + //Verify requesting a 0-91 connection directly still works, as its support is still enabled + setTestClientSystemProperty(ClientProperties.AMQP_VERSION, "0-9-1"); + connection = (AMQConnection) getConnection(); + assertEquals("Unexpected protocol version in use", ProtocolVersion.v0_91, connection.getProtocolVersion()); + connection.close(); + } +} \ No newline at end of file -- cgit v1.2.1