Author: orudyy
Date: Thu Jun 26 15:32:02 2014
New Revision: 1605820
URL: http://svn.apache.org/r1605820
Log:
QPID-5853: Use quotes in broker command line provided by maven profile in order
to allow command line arguments with spaces
Modified:
qpid/trunk/qpid/java/pom.xml
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java
Modified: qpid/trunk/qpid/java/pom.xml
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/pom.xml?rev=1605820&r1=1605819&r2=1605820&view=diff
==============================================================================
--- qpid/trunk/qpid/java/pom.xml (original)
+++ qpid/trunk/qpid/java/pom.xml Thu Jun 26 15:32:02 2014
@@ -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>
Modified:
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java?rev=1605820&r1=1605819&r2=1605820&view=diff
==============================================================================
---
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java
(original)
+++
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java
Thu Jun 26 15:32:02 2014
@@ -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;
+ }
}
Modified:
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java?rev=1605820&r1=1605819&r2=1605820&view=diff
==============================================================================
---
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java
(original)
+++
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java
Thu Jun 26 15:32:02 2014
@@ -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 ext
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] );
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]