summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2014-06-26 15:32:02 +0000
committerAlex Rudyy <orudyy@apache.org>2014-06-26 15:32:02 +0000
commitc84f31d347eb57eca6248777702c98dab87ebfd2 (patch)
tree7d52247b35f90b71c39d64d5a0157a8831598464 /qpid/java
parentb7effa46a280071d76839d7c4e6ce68fb72a719c (diff)
downloadqpid-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')
-rw-r--r--qpid/java/pom.xml6
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java36
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java36
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] );