diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-02-26 12:34:13 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-02-26 12:34:13 +0000 |
| commit | c1a3d6e2927975d83f683334360f613b9fb44189 (patch) | |
| tree | 7ee41f099361d7d9862b26016099b7a9ebb755d8 /qpid/java | |
| parent | f40d09db7c96b8050cabf4783f067a1cfe1e5c5d (diff) | |
| download | qpid-python-c1a3d6e2927975d83f683334360f613b9fb44189.tar.gz | |
QPID-4602: Fix broker startup when default log4j configuration is used and fix java system tests to pass correctly log4j configuration path to the spawn broker if it contains spaces.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1450151 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
4 files changed, 58 insertions, 17 deletions
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java index 45d642e4f7..8f087ba50c 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java @@ -187,7 +187,10 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio } new Shutdown(_objectRegistry); new ServerInformationMBean(_objectRegistry, _broker); - new LoggingManagementMBean(LoggingManagementFacade.getCurrentInstance(), _objectRegistry); + if (LoggingManagementFacade.getCurrentInstance() != null) + { + new LoggingManagementMBean(LoggingManagementFacade.getCurrentInstance(), _objectRegistry); + } _objectRegistry.start(); } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java index 81b53e3dac..12d286f822 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java @@ -18,6 +18,9 @@ package org.apache.qpid.test.utils; import java.io.File; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; /** * Generates the command to start a broker by substituting the tokens @@ -28,25 +31,49 @@ import java.io.File; */ public class BrokerCommandHelper { - private String _brokerCommandTemplate; + private final List<String> _brokerCommandTemplateAsList; public BrokerCommandHelper(String brokerCommandTemplate) { - _brokerCommandTemplate = brokerCommandTemplate; + _brokerCommandTemplateAsList = new LinkedList<String>(Arrays.asList(brokerCommandTemplate.split("\\s+"))); } - public String getBrokerCommand( int port, String storePath, String storeType, File logConfigFile) + public String[] getBrokerCommand( int port, String storePath, String storeType, File logConfigFile) { - return _brokerCommandTemplate + String[] command = new String[_brokerCommandTemplateAsList.size()]; + int i=0; + for (String commandPart : _brokerCommandTemplateAsList) + { + command[i] = commandPart .replace("@PORT", "" + port) .replace("@STORE_PATH", storePath) .replace("@STORE_TYPE", storeType) .replace("@LOG_CONFIG_FILE", '"' + logConfigFile.getAbsolutePath() + '"'); + i++; + } + return command; } + private int getBrokerCommandLogOptionIndex(String logOption) + { + int logOptionIndex = _brokerCommandTemplateAsList.indexOf(logOption); + if(logOptionIndex == -1) + { + throw new RuntimeException("Could not find option " + logOption + " in " + _brokerCommandTemplateAsList); + } + return logOptionIndex; + } + + public void removeBrokerCommandLog4JFile() { - int logArgumentPosition = _brokerCommandTemplate.indexOf("-l"); - _brokerCommandTemplate = _brokerCommandTemplate.substring(0, logArgumentPosition - 1); + String logOption = "-l"; + int logOptionIndex = getBrokerCommandLogOptionIndex(logOption); + if (logOptionIndex + 1 >= _brokerCommandTemplateAsList.size()) + { + throw new RuntimeException("Could not find log config location"); + } + _brokerCommandTemplateAsList.remove(logOptionIndex); + _brokerCommandTemplateAsList.remove(logOptionIndex); } } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java index 663e7d92b4..f0bcea8e6e 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java @@ -30,21 +30,32 @@ public class BrokerCommandHelperTest extends QpidTestCase @Override public void setUp() { - when(logConfigFile.getAbsolutePath()).thenReturn("logConfigFile"); + when(logConfigFile.getAbsolutePath()).thenReturn("log Config File"); } public void testGetBrokerCommand() { - String brokerCommand = _brokerCommandHelper.getBrokerCommand(1, "configFile", "json", logConfigFile); - assertEquals("Unexpected broker command", "qpid -p 1 -sp configFile -st json -l \"logConfigFile\"", brokerCommand); + String[] brokerCommand = _brokerCommandHelper.getBrokerCommand(1, "configFile", "json", logConfigFile); + + String[] expected = { "qpid", "-p", "1", "-sp", "configFile", "-st", "json", "-l", "\"log Config File\"" }; + assertEquals("Unexpected broker command", 9, brokerCommand.length); + for (int i = 0; i < expected.length; i++) + { + assertEquals("Unexpected command part value at " + i,expected[i], brokerCommand[i] ); + } } public void testRemoveBrokerCommandLog4JFile() { _brokerCommandHelper.removeBrokerCommandLog4JFile(); - String brokerCommand = _brokerCommandHelper.getBrokerCommand(1, "configFile", "json", logConfigFile); - - assertEquals("The broker command list should not contain a log4j config option", - "qpid -p 1 -sp configFile -st json", brokerCommand ); + String[] brokerCommand = _brokerCommandHelper.getBrokerCommand(1, "configFile", "json", logConfigFile); + + String[] expected = { "qpid", "-p", "1", "-sp", "configFile", "-st", "json" }; + assertEquals("Unexpected broker command", 7, brokerCommand.length); + for (int i = 0; i < expected.length; i++) + { + assertEquals("Unexpected command part value at " + i,expected[i], brokerCommand[i] ); + } } + } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java index 4259254123..d36f57171f 100755 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java @@ -473,9 +473,9 @@ public class QpidBrokerTestCase extends QpidTestCase // Add the port to QPID_WORK to ensure unique working dirs for multi broker tests final String qpidWork = getQpidWork(_brokerType, port); - String cmd = _brokerCommandHelper.getBrokerCommand(port, testConfig, _brokerStoreType, _logConfigFile); - _logger.info("Starting spawn broker using command: " + cmd); - ProcessBuilder pb = new ProcessBuilder(cmd.split("\\s+")); + String[] cmd = _brokerCommandHelper.getBrokerCommand(port, testConfig, _brokerStoreType, _logConfigFile); + _logger.info("Starting spawn broker using command: " + StringUtils.join(cmd, ' ')); + ProcessBuilder pb = new ProcessBuilder(cmd); pb.redirectErrorStream(true); Map<String, String> processEnv = pb.environment(); String qpidHome = System.getProperty(QPID_HOME); |
