diff options
| author | Keith Wall <kwall@apache.org> | 2014-01-27 10:40:31 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-01-27 10:40:31 +0000 |
| commit | 616c55cbeb855e9fbf7c10906be2ff3e621caf0e (patch) | |
| tree | b1929df4fb6e0fdc99eaeba0f84024c6452dc173 /qpid/java | |
| parent | 7d3e48dc2acf7ca77f044ac34f2063c5a0bf0692 (diff) | |
| download | qpid-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')
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); |
