diff options
| author | Robert Gemmell <robbie@apache.org> | 2013-03-31 21:46:12 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2013-03-31 21:46:12 +0000 |
| commit | 3559eeb5424c51fc94997c8f4ac9c9514dbd7e04 (patch) | |
| tree | 4833298c63f06e863f7594baefdb38eeca849050 /java | |
| parent | d15cb05bdbca4b5a904a644c81b524d426a21799 (diff) | |
| download | qpid-python-3559eeb5424c51fc94997c8f4ac9c9514dbd7e04.tar.gz | |
QPID-4594, QPID-4682: changes from review of new 'management mode' functionality
- Tweak the command line options for the management mode ports to group the options and make it clear they are only for management mode, and remove a naming clash with old options that had different behaviour.
- Make the virtualhosts load during management mode, enabling them to normally be managed as well.
- Add a new command line option to quiesce the virtualhosts during mangement mode if required.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1463061 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
6 files changed, 70 insertions, 24 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java b/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java index 289cfebc29..8384af915f 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java +++ b/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java @@ -43,6 +43,7 @@ public class BrokerOptions private String _initialConfigurationLocation; private boolean _managementMode; + private boolean _managementModeQuiesceVhosts; private int _managementModeRmiPort; private int _managementModeConnectorPort; private int _managementModeHttpPort; @@ -83,6 +84,16 @@ public class BrokerOptions _managementMode = managementMode; } + public boolean isManagementModeQuiesceVirtualHosts() + { + return _managementModeQuiesceVhosts; + } + + public void setManagementModeQuiesceVirtualHosts(boolean managementModeQuiesceVhosts) + { + _managementModeQuiesceVhosts = managementModeQuiesceVhosts; + } + public int getManagementModeRmiPort() { return _managementModeRmiPort; diff --git a/java/broker/src/main/java/org/apache/qpid/server/Main.java b/java/broker/src/main/java/org/apache/qpid/server/Main.java index ddda137bcc..f4757cad21 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/Main.java +++ b/java/broker/src/main/java/org/apache/qpid/server/Main.java @@ -64,12 +64,14 @@ public class Main private static final Option OPTION_MANAGEMENT_MODE = OptionBuilder.withDescription("start broker in a management mode") .withLongOpt("management-mode").create("mm"); - private static final Option OPTION_RMI_PORT = OptionBuilder.withArgName("port").hasArg() - .withDescription("override jmx rmi port in management mode").withLongOpt("jmxregistryport").create("rmi"); - private static final Option OPTION_CONNECTOR_PORT = OptionBuilder.withArgName("port").hasArg() - .withDescription("override jmx connector port in management mode").withLongOpt("jmxconnectorport").create("jmxrmi"); - private static final Option OPTION_HTTP_PORT = OptionBuilder.withArgName("port").hasArg() - .withDescription("override web management port in management mode").withLongOpt("httpport").create("http"); + private static final Option OPTION_MM_QUIESCE_VHOST = OptionBuilder.withDescription("make virtualhosts stay in the quiesced state during management mode.") + .withLongOpt("management-mode-quiesce-virtualhosts").create("mmqv"); + private static final Option OPTION_MM_RMI_PORT = OptionBuilder.withArgName("port").hasArg() + .withDescription("override jmx rmi registry port in management mode").withLongOpt("management-mode-rmi-registry-port").create("mmrmi"); + private static final Option OPTION_MM_CONNECTOR_PORT = OptionBuilder.withArgName("port").hasArg() + .withDescription("override jmx connector port in management mode").withLongOpt("management-mode-jmx-connector-port").create("mmjmx"); + private static final Option OPTION_MM_HTTP_PORT = OptionBuilder.withArgName("port").hasArg() + .withDescription("override http management port in management mode").withLongOpt("management-mode-http-port").create("mmhttp"); private static final Options OPTIONS = new Options(); @@ -83,9 +85,10 @@ public class Main OPTIONS.addOption(OPTION_LOG_WATCH); OPTIONS.addOption(OPTION_INITIAL_CONFIGURATION_PATH); OPTIONS.addOption(OPTION_MANAGEMENT_MODE); - OPTIONS.addOption(OPTION_RMI_PORT); - OPTIONS.addOption(OPTION_CONNECTOR_PORT); - OPTIONS.addOption(OPTION_HTTP_PORT); + OPTIONS.addOption(OPTION_MM_QUIESCE_VHOST); + OPTIONS.addOption(OPTION_MM_RMI_PORT); + OPTIONS.addOption(OPTION_MM_CONNECTOR_PORT); + OPTIONS.addOption(OPTION_MM_HTTP_PORT); } protected CommandLine _commandLine; @@ -200,21 +203,26 @@ public class Main if (managmentMode) { options.setManagementMode(true); - String rmiPort = _commandLine.getOptionValue(OPTION_RMI_PORT.getOpt()); + String rmiPort = _commandLine.getOptionValue(OPTION_MM_RMI_PORT.getOpt()); if (rmiPort != null) { options.setManagementModeRmiPort(Integer.parseInt(rmiPort)); } - String connectorPort = _commandLine.getOptionValue(OPTION_CONNECTOR_PORT.getOpt()); + String connectorPort = _commandLine.getOptionValue(OPTION_MM_CONNECTOR_PORT.getOpt()); if (connectorPort != null) { options.setManagementModeConnectorPort(Integer.parseInt(connectorPort)); } - String httpPort = _commandLine.getOptionValue(OPTION_HTTP_PORT.getOpt()); + String httpPort = _commandLine.getOptionValue(OPTION_MM_HTTP_PORT.getOpt()); if (httpPort != null) { options.setManagementModeHttpPort(Integer.parseInt(httpPort)); } + boolean quiesceVhosts = _commandLine.hasOption(OPTION_MM_QUIESCE_VHOST.getOpt()); + if (quiesceVhosts) + { + options.setManagementModeQuiesceVirtualHosts(true); + } } setExceptionHandler(); diff --git a/java/broker/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java b/java/broker/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java index 385d2f7327..6733c8ee2d 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java +++ b/java/broker/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java @@ -244,7 +244,7 @@ public class ManagementModeStoreHandler implements ConfigurationEntryStore String entryType = entry.getType(); Map<String, Object> attributes = entry.getAttributes(); boolean quiesce = false; - if (VIRTUAL_HOST_TYPE.equals(entryType)) + if (VIRTUAL_HOST_TYPE.equals(entryType) && options.isManagementModeQuiesceVirtualHosts()) { quiesce = true; } diff --git a/java/broker/src/test/java/org/apache/qpid/server/BrokerOptionsTest.java b/java/broker/src/test/java/org/apache/qpid/server/BrokerOptionsTest.java index 51fe2d88d3..b36d1bd21f 100644 --- a/java/broker/src/test/java/org/apache/qpid/server/BrokerOptionsTest.java +++ b/java/broker/src/test/java/org/apache/qpid/server/BrokerOptionsTest.java @@ -129,6 +129,17 @@ public class BrokerOptionsTest extends QpidTestCase assertEquals(true, _options.isManagementMode()); } + public void testDefaultManagementModeQuiesceVirtualHosts() + { + assertEquals(false, _options.isManagementModeQuiesceVirtualHosts()); + } + + public void testOverriddenDefaultManagementModeQuiesceVirtualHosts() + { + _options.setManagementModeQuiesceVirtualHosts(true); + assertEquals(true, _options.isManagementModeQuiesceVirtualHosts()); + } + public void testDefaultManagementModeRmiPort() { assertEquals(0, _options.getManagementModeRmiPort()); diff --git a/java/broker/src/test/java/org/apache/qpid/server/MainTest.java b/java/broker/src/test/java/org/apache/qpid/server/MainTest.java index 46c63c9e34..b587ee9030 100644 --- a/java/broker/src/test/java/org/apache/qpid/server/MainTest.java +++ b/java/broker/src/test/java/org/apache/qpid/server/MainTest.java @@ -122,43 +122,43 @@ public class MainTest extends QpidTestCase public void testManagementModeRmiPort() { - BrokerOptions options = startDummyMain("-mm -rmi 7777"); + BrokerOptions options = startDummyMain("-mm -mmrmi 7777"); assertTrue(options.isManagementMode()); assertEquals(7777, options.getManagementModeRmiPort()); - options = startDummyMain("-mm --jmxregistryport 7777"); + options = startDummyMain("-mm --management-mode-rmi-registry-port 7777"); assertTrue(options.isManagementMode()); assertEquals(7777, options.getManagementModeRmiPort()); - options = startDummyMain("-rmi 7777"); + options = startDummyMain("-mmrmi 7777"); assertEquals(0, options.getManagementModeRmiPort()); } public void testManagementModeConnectorPort() { - BrokerOptions options = startDummyMain("-mm -jmxrmi 8888"); + BrokerOptions options = startDummyMain("-mm -mmjmx 8888"); assertTrue(options.isManagementMode()); assertEquals(8888, options.getManagementModeConnectorPort()); - options = startDummyMain("-mm --jmxconnectorport 8888"); + options = startDummyMain("-mm --management-mode-jmx-connector-port 8888"); assertTrue(options.isManagementMode()); assertEquals(8888, options.getManagementModeConnectorPort()); - options = startDummyMain("-jmxrmi 8888"); + options = startDummyMain("-mmjmx 8888"); assertEquals(0, options.getManagementModeConnectorPort()); } public void testManagementModeHttpPort() { - BrokerOptions options = startDummyMain("-mm -http 9999"); + BrokerOptions options = startDummyMain("-mm -mmhttp 9999"); assertTrue(options.isManagementMode()); assertEquals(9999, options.getManagementModeHttpPort()); - options = startDummyMain("-mm --httpport 9999"); + options = startDummyMain("-mm --management-mode-http-port 9999"); assertTrue(options.isManagementMode()); assertEquals(9999, options.getManagementModeHttpPort()); - options = startDummyMain("-http 9999"); + options = startDummyMain("-mmhttp 9999"); assertEquals(0, options.getManagementModeHttpPort()); } diff --git a/java/broker/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java b/java/broker/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java index 52e021240e..d9d3c9fe8f 100644 --- a/java/broker/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java +++ b/java/broker/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java @@ -176,7 +176,17 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase assertEquals("Unexpected state", State.QUIESCED, portEntry.getAttributes().get(Port.STATE)); } - public void testVirtualHostEntryIsQuiesced() + public void testVirtualHostEntryIsNotQuiescedByDefault() + { + virtualHostEntryQuiescedStatusTestImpl(false); + } + + public void testVirtualHostEntryIsQuiescedWhenRequested() + { + virtualHostEntryQuiescedStatusTestImpl(true); + } + + private void virtualHostEntryQuiescedStatusTestImpl(boolean mmQuiesceVhosts) { UUID virtualHostId = UUID.randomUUID(); ConfigurationEntry virtualHost = mock(ConfigurationEntry.class); @@ -188,11 +198,17 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase when(_store.getEntry(virtualHostId)).thenReturn(virtualHost); when(_root.getChildrenIds()).thenReturn(new HashSet<UUID>(Arrays.asList(_portEntryId, virtualHostId))); + State expectedState = mmQuiesceVhosts ? State.QUIESCED : null; + if(mmQuiesceVhosts) + { + _options.setManagementModeQuiesceVirtualHosts(mmQuiesceVhosts); + } + _handler = new ManagementModeStoreHandler(_store, _options); ConfigurationEntry hostEntry = _handler.getEntry(virtualHostId); Map<String, Object> hostAttributes = hostEntry.getAttributes(); - assertEquals("Unexpected state", State.QUIESCED, hostAttributes.get(VirtualHost.STATE)); + assertEquals("Unexpected state", expectedState, hostAttributes.get(VirtualHost.STATE)); hostAttributes.remove(VirtualHost.STATE); assertEquals("Unexpected attributes", attributes, hostAttributes); } |
