summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-01-27 10:40:31 +0000
committerKeith Wall <kwall@apache.org>2014-01-27 10:40:31 +0000
commit616c55cbeb855e9fbf7c10906be2ff3e621caf0e (patch)
treeb1929df4fb6e0fdc99eaeba0f84024c6452dc173 /qpid/java
parent7d3e48dc2acf7ca77f044ac34f2063c5a0bf0692 (diff)
downloadqpid-python-616c55cbeb855e9fbf7c10906be2ff3e621caf0e.tar.gz
QPID-5514: [Java Broker Management] Close the AMQP transport on deletion of the port too.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1561631 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java6
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java35
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java3
3 files changed, 41 insertions, 3 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
index 3e7d03b5ac..882335626d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
@@ -311,7 +311,11 @@ public class PortAdapter extends AbstractAdapter implements Port
{
if (state == State.INITIALISING || state == State.ACTIVE || state == State.STOPPED || state == State.QUIESCED || state == State.ERRORED)
{
- return _state.compareAndSet(state, State.DELETED);
+ if( _state.compareAndSet(state, State.DELETED))
+ {
+ onStop();
+ return true;
+ }
}
else
{
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
index bae259ece7..81273589ea 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
@@ -29,6 +29,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import org.apache.qpid.server.BrokerOptions;
import org.apache.qpid.server.model.AuthenticationProvider;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Protocol;
@@ -288,4 +289,38 @@ public class PortRestTest extends QpidRestTestCase
Map<String, Object> port = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + portName);
assertEquals("Unexpected auth provider", ANONYMOUS_AUTHENTICATION_PROVIDER, port.get(Port.AUTHENTICATION_PROVIDER));
}
+
+ public void testDefaultAmqpPortIsQuiescedWhenInManagementMode() throws Exception
+ {
+ // restart Broker in management port
+ stopBroker();
+ startBroker(0, true);
+ getRestTestHelper().setUsernameAndPassword(BrokerOptions.MANAGEMENT_MODE_USER_NAME, MANAGEMENT_MODE_PASSWORD);
+
+ String ampqPortName = TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT;
+ Map<String, Object> portData = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + URLDecoder.decode(ampqPortName, "UTF-8"));
+ Asserts.assertPortAttributes(portData, State.QUIESCED);
+ }
+
+ public void testNewPortQuiescedIfPortNumberWasUsed() throws Exception
+ {
+ String ampqPortName = TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT;
+ Map<String, Object> portData = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + URLDecoder.decode(ampqPortName, "UTF-8"));
+ int amqpPort = (Integer)portData.get(Port.PORT);
+
+ int deleteResponseCode = getRestTestHelper().submitRequest("/rest/port/" + ampqPortName, "DELETE", null);
+ assertEquals("Port deletion should be allowed", 200, deleteResponseCode);
+
+ String newPortName = "reused-port";
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(Port.NAME, newPortName);
+ attributes.put(Port.PORT, amqpPort); // reuses port that was previously in use
+ attributes.put(Port.AUTHENTICATION_PROVIDER, TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER);
+
+ int responseCode = getRestTestHelper().submitRequest("/rest/port/" + newPortName, "PUT", attributes);
+ assertEquals("Unexpected response code for port creation", 201, responseCode);
+
+ portData = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + URLDecoder.decode(newPortName, "UTF-8"));
+ Asserts.assertPortAttributes(portData, State.QUIESCED);
+ }
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
index 666449b658..7f41a8eb2e 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
@@ -281,8 +281,7 @@ public class BrokerACLTest extends QpidRestTestCase
assertPortExists(portName);
}
- // TODO: test disabled until allowing the deletion of active ports outside management mode
- public void DISABLED_testDeletePortAllowed() throws Exception
+ public void testDeletePortAllowed() throws Exception
{
getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);