summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-02-26 12:34:13 +0000
committerAlex Rudyy <orudyy@apache.org>2013-02-26 12:34:13 +0000
commitc1a3d6e2927975d83f683334360f613b9fb44189 (patch)
tree7ee41f099361d7d9862b26016099b7a9ebb755d8 /qpid/java
parentf40d09db7c96b8050cabf4783f067a1cfe1e5c5d (diff)
downloadqpid-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')
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java5
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelper.java39
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerCommandHelperTest.java25
-rwxr-xr-xqpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java6
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);