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 | 4dff8d8a0cf6a34529a80610c4a8b6e73eefd2dc (patch) | |
| tree | 93217c57262290b35f05e4f14a3d80ef1ebf31d7 /java/systests | |
| parent | c1387aa47ec51604fa8664ebe4af370f7a6b67e3 (diff) | |
| download | qpid-python-4dff8d8a0cf6a34529a80610c4a8b6e73eefd2dc.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/qpid@1450151 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/systests')
3 files changed, 54 insertions, 16 deletions
diff --git a/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java b/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java index 81b53e3dac..12d286f822 100644 --- a/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java +++ b/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/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java b/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java index 663e7d92b4..f0bcea8e6e 100644 --- a/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java +++ b/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/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java b/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java index 4259254123..d36f57171f 100755 --- a/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java +++ b/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); |
