You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2013/02/26 13:34:14 UTC

svn commit: r1450151 - in /qpid/trunk/qpid/java: broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/ systests/src/main/java/org/apache/qpid/test/utils/

Author: orudyy
Date: Tue Feb 26 12:34:13 2013
New Revision: 1450151

URL: http://svn.apache.org/r1450151
Log:
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.

Modified:
    qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java
    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
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java

Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java?rev=1450151&r1=1450150&r2=1450151&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java Tue Feb 26 12:34:13 2013
@@ -187,7 +187,10 @@ public class JMXManagement extends Abstr
         }
         new Shutdown(_objectRegistry);
         new ServerInformationMBean(_objectRegistry, _broker);
-        new LoggingManagementMBean(LoggingManagementFacade.getCurrentInstance(), _objectRegistry);
+        if (LoggingManagementFacade.getCurrentInstance() != null)
+        {
+            new LoggingManagementMBean(LoggingManagementFacade.getCurrentInstance(), _objectRegistry);
+        }
         _objectRegistry.start();
     }
 

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=1450151&r1=1450150&r2=1450151&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 Tue Feb 26 12:34:13 2013
@@ -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);
     }
 }

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=1450151&r1=1450150&r2=1450151&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 Tue Feb 26 12:34:13 2013
@@ -30,21 +30,32 @@ public class BrokerCommandHelperTest ext
     @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);
+        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[] 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] );
+        }
     }
+
 }

Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java?rev=1450151&r1=1450150&r2=1450151&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java Tue Feb 26 12:34:13 2013
@@ -473,9 +473,9 @@ public class QpidBrokerTestCase extends 
             // 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);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org