diff options
| author | Alex Rudyy <orudyy@apache.org> | 2014-06-26 15:32:02 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2014-06-26 15:32:02 +0000 |
| commit | c84f31d347eb57eca6248777702c98dab87ebfd2 (patch) | |
| tree | 7d52247b35f90b71c39d64d5a0157a8831598464 /qpid/java | |
| parent | b7effa46a280071d76839d7c4e6ce68fb72a719c (diff) | |
| download | qpid-python-c84f31d347eb57eca6248777702c98dab87ebfd2.tar.gz | |
QPID-5853: Use quotes in broker command line provided by maven profile in order to allow command line arguments with spaces
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1605820 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
3 files changed, 64 insertions, 14 deletions
diff --git a/qpid/java/pom.xml b/qpid/java/pom.xml index af0247f20d..06bc816334 100644 --- a/qpid/java/pom.xml +++ b/qpid/java/pom.xml @@ -60,8 +60,8 @@ <profile.broker.type>internal</profile.broker.type> <profile.broker.stopped>Exception</profile.broker.stopped> <profile.broker.ready>BRK-1004</profile.broker.ready> - <profile.broker.command>${qpid.home}${file.separator}bin${file.separator}qpid-server -sp ${at.sign}STORE_PATH -st ${at.sign}STORE_TYPE -l ${at.sign}LOG_CONFIG_FILE</profile.broker.command> - <profile.broker.command.windows>${qpid.home}${file.separator}bin${file.separator}qpid-server.bat -sp ${at.sign}STORE_PATH -st ${at.sign}STORE_TYPE -l ${at.sign}LOG_CONFIG_FILE</profile.broker.command.windows> + <profile.broker.command>"${qpid.home}${file.separator}bin${file.separator}qpid"-server -sp ${at.sign}STORE_PATH -st ${at.sign}STORE_TYPE -l ${at.sign}LOG_CONFIG_FILE</profile.broker.command> + <profile.broker.command.windows>"${qpid.home}${file.separator}bin${file.separator}qpid"-server.bat -sp ${at.sign}STORE_PATH -st ${at.sign}STORE_TYPE -l ${at.sign}LOG_CONFIG_FILE</profile.broker.command.windows> <profile.test.excludes>Excludes JavaExcludes ${profile}.excludes ${profile.specific.excludes}</profile.test.excludes> <profile.specific.excludes>JavaTransientExcludes Java010Excludes</profile.specific.excludes> <profile.broker.version>v0_10</profile.broker.version> @@ -671,7 +671,7 @@ <profile.broker.type>spawned</profile.broker.type> <profile.broker.stopped>Exception constructed</profile.broker.stopped> <profile.broker.ready>Listening on TCP</profile.broker.ready> - <profile.broker.command>${cpp-broker-dir}/qpidd -p ${at.sign}PORT --data-dir ${qpid.work}/${at.sign}PORT -t --auth no --no-module-dir</profile.broker.command> + <profile.broker.command>"${cpp-broker-dir}/qpidd" -p ${at.sign}PORT --data-dir "${qpid.work}/${at.sign}PORT" -t --auth no --no-module-dir</profile.broker.command> <profile.broker.command.windows /> <profile.test.excludes>Excludes CPPExcludes ${profile}.excludes ${profile.specific.excludes} cpp.excludes</profile.test.excludes> <profile.specific.excludes>CPPPrefetchExcludes CPPTransientExcludes</profile.specific.excludes> 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 12d286f822..7eba3f8e71 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,7 +18,6 @@ package org.apache.qpid.test.utils; import java.io.File; -import java.util.Arrays; import java.util.LinkedList; import java.util.List; @@ -35,7 +34,7 @@ public class BrokerCommandHelper public BrokerCommandHelper(String brokerCommandTemplate) { - _brokerCommandTemplateAsList = new LinkedList<String>(Arrays.asList(brokerCommandTemplate.split("\\s+"))); + _brokerCommandTemplateAsList = split(brokerCommandTemplate); } public String[] getBrokerCommand( int port, String storePath, String storeType, File logConfigFile) @@ -76,4 +75,37 @@ public class BrokerCommandHelper _brokerCommandTemplateAsList.remove(logOptionIndex); _brokerCommandTemplateAsList.remove(logOptionIndex); } + + private static List<String> split(String str) + { + List<String> tokens = new LinkedList<String>(); + boolean inQuote = false; + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < str.length(); i++) + { + char c = str.charAt(i); + + if (c == '\"' || c == '\'') + { + inQuote = !inQuote; + } + else if (c == ' ' && !inQuote) + { + if (sb.length() > 0) + { + tokens.add(sb.toString()); + sb.delete(0, sb.length()); + } + } + else + { + sb.append(c); + } + } + if (sb.length() > 0) + { + tokens.add(sb.toString()); + } + return tokens; + } } 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 f0bcea8e6e..83c2f1e58d 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 @@ -23,22 +23,38 @@ import java.io.File; public class BrokerCommandHelperTest extends QpidTestCase { - private BrokerCommandHelper _brokerCommandHelper = new BrokerCommandHelper("qpid -p @PORT -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE"); + private static final String PATH_TO_QPID_EXECUTABLE = "/path / to (/qpid"; + private static final String ARGUMENT_WITH_SPACES = " blah / blah /blah"; + private static final String ARGUMENT_PORT = "-p"; + private static final String ARGUMENT_PORT_VALUE = "@PORT"; + private static final String ARGUMENT_STORE_PATH = "-sp"; + private static final String ARGUMENT_STORE_PATH_VALUE = "@STORE_PATH"; + private static final String ARGUMENT_STORE_TYPE = "-st"; + private static final String ARGUMENT_STORE_TYPE_VALUE = "@STORE_TYPE"; + private static final String ARGUMENT_LOG = "-l"; + private static final String ARGUMENT_LOG_VALUE = "@LOG_CONFIG_FILE"; - private File logConfigFile = mock(File.class); + private BrokerCommandHelper _brokerCommandHelper; + + private File _logConfigFile = mock(File.class); @Override public void setUp() { - when(logConfigFile.getAbsolutePath()).thenReturn("log Config File"); + when(_logConfigFile.getAbsolutePath()).thenReturn("log Config File"); + _brokerCommandHelper = new BrokerCommandHelper("\"" + PATH_TO_QPID_EXECUTABLE + "\" " + ARGUMENT_PORT + " " + + ARGUMENT_PORT_VALUE + " " + ARGUMENT_STORE_PATH + " " + ARGUMENT_STORE_PATH_VALUE + " " + ARGUMENT_STORE_TYPE + + " " + ARGUMENT_STORE_TYPE_VALUE + " " + ARGUMENT_LOG + " " + ARGUMENT_LOG_VALUE + " '" + ARGUMENT_WITH_SPACES + + "'"); } public void testGetBrokerCommand() { - String[] brokerCommand = _brokerCommandHelper.getBrokerCommand(1, "configFile", "json", logConfigFile); + String[] brokerCommand = _brokerCommandHelper.getBrokerCommand(1, "path to config file", "json", _logConfigFile); - String[] expected = { "qpid", "-p", "1", "-sp", "configFile", "-st", "json", "-l", "\"log Config File\"" }; - assertEquals("Unexpected broker command", 9, brokerCommand.length); + String[] expected = { PATH_TO_QPID_EXECUTABLE, ARGUMENT_PORT, "1", ARGUMENT_STORE_PATH, "path to config file", + ARGUMENT_STORE_TYPE, "json", ARGUMENT_LOG, "\"log Config File\"", ARGUMENT_WITH_SPACES }; + assertEquals("Unexpected broker command", expected.length, brokerCommand.length); for (int i = 0; i < expected.length; i++) { assertEquals("Unexpected command part value at " + i,expected[i], brokerCommand[i] ); @@ -48,10 +64,12 @@ public class BrokerCommandHelperTest extends QpidTestCase public void testRemoveBrokerCommandLog4JFile() { _brokerCommandHelper.removeBrokerCommandLog4JFile(); - String[] brokerCommand = _brokerCommandHelper.getBrokerCommand(1, "configFile", "json", logConfigFile); + String[] brokerCommand = _brokerCommandHelper.getBrokerCommand(1, "configFile", "json", _logConfigFile); + + String[] expected = { PATH_TO_QPID_EXECUTABLE, ARGUMENT_PORT, "1", ARGUMENT_STORE_PATH, "configFile", + ARGUMENT_STORE_TYPE, "json", ARGUMENT_WITH_SPACES }; - String[] expected = { "qpid", "-p", "1", "-sp", "configFile", "-st", "json" }; - assertEquals("Unexpected broker command", 7, brokerCommand.length); + assertEquals("Unexpected broker command", expected.length, brokerCommand.length); for (int i = 0; i < expected.length; i++) { assertEquals("Unexpected command part value at " + i,expected[i], brokerCommand[i] ); |
