summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-01-17 13:05:23 +0000
committerKeith Wall <kwall@apache.org>2014-01-17 13:05:23 +0000
commitee76ebefc53d00751fa0c2a404c083dc63f516db (patch)
tree7d80d6b2942fb5e6f779bc244bd3cc64006929f4
parentcdf9dd41327c461b5c5264566992bc4e312cc97f (diff)
downloadqpid-python-ee76ebefc53d00751fa0c2a404c083dc63f516db.tar.gz
QPID-5065: modifications to get more tests running on windows (both ant and maven).
Also - Fixed the jca/rar pom module name, it should be qpid-ra not qpid-rar. - Added project details such as Website, Mailing List, SCM. Patch submitted by Andrew MacBean <andymacbean@gmail.com> git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1559096 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgraderTest.java36
-rw-r--r--qpid/java/bdbstore/systests/pom.xml6
-rw-r--r--qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java106
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java5
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java7
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java21
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java3
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java7
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java4
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java5
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/util/SystemUtils.java81
-rw-r--r--qpid/java/jca/rar/pom.xml2
-rw-r--r--qpid/java/perftests/pom.xml6
-rw-r--r--qpid/java/pom.xml59
-rw-r--r--qpid/java/systests/pom.xml6
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java5
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java37
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java4
-rwxr-xr-xqpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java48
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java95
-rw-r--r--qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-mem.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-mem.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-mem.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-spawn.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-spawn.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-spawn.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms-spawn.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms-spawn.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms-spawn.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms.0-9.testprofile3
49 files changed, 471 insertions, 159 deletions
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgraderTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgraderTest.java
index 23fd9bc24f..3465f3582f 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgraderTest.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgraderTest.java
@@ -24,7 +24,7 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
-import org.apache.qpid.server.store.berkeleydb.AbstractBDBMessageStore;
+import org.apache.qpid.server.store.berkeleydb.BDBMessageStore;
import org.apache.qpid.server.store.berkeleydb.tuple.ContentBinding;
import com.sleepycat.bind.tuple.IntegerBinding;
@@ -33,6 +33,7 @@ import com.sleepycat.je.Cursor;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
+import com.sleepycat.je.Environment;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
@@ -53,7 +54,7 @@ public class UpgraderTest extends AbstractUpgradeTestCase
_upgrader = new Upgrader(_environment, getVirtualHostName());
}
- private int getStoreVersion()
+ private int getStoreVersion(Environment environment)
{
DatabaseConfig dbConfig = new DatabaseConfig();
dbConfig.setTransactional(true);
@@ -63,7 +64,7 @@ public class UpgraderTest extends AbstractUpgradeTestCase
Cursor cursor = null;
try
{
- versionDb = _environment.openDatabase(null, Upgrader.VERSION_DB_NAME, dbConfig);
+ versionDb = environment.openDatabase(null, Upgrader.VERSION_DB_NAME, dbConfig);
cursor = versionDb.openCursor(null, null);
DatabaseEntry key = new DatabaseEntry();
DatabaseEntry value = new DatabaseEntry();
@@ -92,9 +93,9 @@ public class UpgraderTest extends AbstractUpgradeTestCase
public void testUpgrade() throws Exception
{
- assertEquals("Unexpected store version", -1, getStoreVersion());
+ assertEquals("Unexpected store version", -1, getStoreVersion(_environment));
_upgrader.upgradeIfNecessary();
- assertEquals("Unexpected store version", AbstractBDBMessageStore.VERSION, getStoreVersion());
+ assertEquals("Unexpected store version", BDBMessageStore.VERSION, getStoreVersion(_environment));
assertContent();
}
@@ -104,17 +105,24 @@ public class UpgraderTest extends AbstractUpgradeTestCase
deleteDirectoryIfExists(nonExistentStoreLocation);
nonExistentStoreLocation.mkdir();
- _environment = createEnvironment(nonExistentStoreLocation);
- _upgrader = new Upgrader(_environment, getVirtualHostName());
- _upgrader.upgradeIfNecessary();
+ Environment emptyEnvironment = createEnvironment(nonExistentStoreLocation);
+ try
+ {
+ _upgrader = new Upgrader(emptyEnvironment, getVirtualHostName());
+ _upgrader.upgradeIfNecessary();
- List<String> databaseNames = _environment.getDatabaseNames();
- List<String> expectedDatabases = new ArrayList<String>();
- expectedDatabases.add(Upgrader.VERSION_DB_NAME);
- assertEquals("Expectedonly VERSION table in initially empty store after upgrade: ", expectedDatabases, databaseNames);
- assertEquals("Unexpected store version", AbstractBDBMessageStore.VERSION, getStoreVersion());
+ List<String> databaseNames = emptyEnvironment.getDatabaseNames();
+ List<String> expectedDatabases = new ArrayList<String>();
+ expectedDatabases.add(Upgrader.VERSION_DB_NAME);
+ assertEquals("Expectedonly VERSION table in initially empty store after upgrade: ", expectedDatabases, databaseNames);
+ assertEquals("Unexpected store version", BDBMessageStore.VERSION, getStoreVersion(emptyEnvironment));
- nonExistentStoreLocation.delete();
+ }
+ finally
+ {
+ emptyEnvironment.close();
+ nonExistentStoreLocation.delete();
+ }
}
private void assertContent()
diff --git a/qpid/java/bdbstore/systests/pom.xml b/qpid/java/bdbstore/systests/pom.xml
index 5660b47085..9c4aaa1e21 100644
--- a/qpid/java/bdbstore/systests/pom.xml
+++ b/qpid/java/bdbstore/systests/pom.xml
@@ -27,10 +27,10 @@
<artifactId>qpid-bdbstore-systests</artifactId>
<properties>
- <broker.home.dir>target/qpid-broker/${project.version}</broker.home.dir>
+ <broker.home.dir>target${file.separator}qpid-broker${file.separator}${project.version}</broker.home.dir>
<!-- test properties -->
- <qpid.home>${basedir}/${broker.home.dir}</qpid.home>
- <qpid.home.qbtc.output>${qpid.home}/qbtc-output</qpid.home.qbtc.output>
+ <qpid.home>${basedir}${file.separator}${broker.home.dir}</qpid.home>
+ <qpid.home.qbtc.output>${qpid.home}${file.separator}qbtc-output</qpid.home.qbtc.output>
</properties>
<dependencies>
diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java
index 73eaf363ad..1b9fa0be9c 100644
--- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java
+++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java
@@ -34,6 +34,7 @@ import org.apache.log4j.Logger;
import org.apache.qpid.test.utils.Piper;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
import org.apache.qpid.util.FileUtils;
+import org.apache.qpid.util.SystemUtils;
/**
* Tests the BDB backup script can successfully perform a backup and that
@@ -134,7 +135,7 @@ public class BDBBackupTest extends QpidBrokerTestCase
private void invokeBdbBackup(final File backupFromDir, final File backupToDir) throws Exception
{
- if (IS_OS_WINDOWS)
+ if (SystemUtils.isWindows())
{
BDBBackup.main(new String[]{"-todir", backupToDir.getAbsolutePath(), "-fromdir", backupFromDir.getAbsolutePath()});
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java
index 6a961c8fa4..5b411e2d8d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java
@@ -25,6 +25,8 @@ import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.log4j.xml.Log4jEntityResolver;
+import org.apache.qpid.util.FileUtils;
+import org.apache.qpid.util.SystemUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
@@ -293,7 +295,9 @@ public class LoggingManagementFacade
public List<String> getAvailableLoggerLevels()
{
return new ArrayList<String>()
- {{
+ {
+ private static final long serialVersionUID = 599203507907836466L;
+ {
add(Level.ALL.toString());
add(Level.TRACE.toString());
add(Level.DEBUG.toString());
@@ -364,6 +368,65 @@ public class LoggingManagementFacade
throw new IOException("Specified log4j XML configuration file is not writable");
}
+ // Swap temp file in to replace existing configuration file.
+ File old = new File(log4jConfigFile.getAbsoluteFile() + ".old");
+ if (old.exists())
+ {
+ old.delete();
+ }
+
+ if(!SystemUtils.isWindows())
+ {
+
+ File tmp;
+ Random r = new Random();
+
+ final String absolutePath = log4jConfigFile.getAbsolutePath();
+ do
+ {
+ tmp = new File(absolutePath + r.nextInt() + ".tmp");
+ }
+ while(tmp.exists());
+
+ tmp.deleteOnExit();
+
+ writeConfigToFile(doc, new FileOutputStream(tmp));
+
+ if(!log4jConfigFile.renameTo(old))
+ {
+ //unable to rename the existing file to the backup name
+ LOGGER.error("Could not backup the existing log4j XML file");
+ throw new IOException("Could not backup the existing log4j XML file");
+ }
+
+ if(!tmp.renameTo(new File(absolutePath)))
+ {
+ //failed to rename the new file to the required filename
+
+ if(!old.renameTo(log4jConfigFile))
+ {
+ //unable to return the backup to required filename
+ LOGGER.error("Could not rename the new log4j configuration file into place, and unable to restore original file");
+ throw new IOException("Could not rename the new log4j configuration file into place, and unable to restore original file");
+ }
+
+ LOGGER.error("Could not rename the new log4j configuration file into place");
+ throw new IOException("Could not rename the new log4j configuration file into place");
+ }
+ }
+ else
+ {
+ // In windows we can't do a safe rename current -> old, tmp -> current as it will not allow
+ // a new file with the same name as current to be created while it is still open.
+
+ // Instead we have to do an unsafe "copy current to old", "replace current contents with tmp contents"
+ FileUtils.copy(log4jConfigFile,old);
+ writeConfigToFile(doc, new FileOutputStream(log4jConfigFile));
+ }
+ }
+
+ private void writeConfigToFile(Document doc, FileOutputStream outputFile) throws TransformerConfigurationException, IOException
+ {
Transformer transformer = null;
transformer = TransformerFactory.newInstance().newTransformer();
@@ -371,20 +434,10 @@ public class LoggingManagementFacade
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "log4j.dtd");
DOMSource source = new DOMSource(doc);
- File tmp;
- Random r = new Random();
-
- do
- {
- tmp = new File(log4jConfigFile.getAbsolutePath() + r.nextInt() + ".tmp");
- }
- while(tmp.exists());
-
- tmp.deleteOnExit();
try
{
- StreamResult result = new StreamResult(new FileOutputStream(tmp));
+ StreamResult result = new StreamResult(outputFile);
transformer.transform(source, result);
}
catch (TransformerException e)
@@ -392,35 +445,6 @@ public class LoggingManagementFacade
LOGGER.warn("Could not transform the XML into new file: ", e);
throw new IOException("Could not transform the XML into new file: ", e);
}
-
- // Swap temp file in to replace existing configuration file.
- File old = new File(log4jConfigFile.getAbsoluteFile() + ".old");
- if (old.exists())
- {
- old.delete();
- }
-
- if(!log4jConfigFile.renameTo(old))
- {
- //unable to rename the existing file to the backup name
- LOGGER.error("Could not backup the existing log4j XML file");
- throw new IOException("Could not backup the existing log4j XML file");
- }
-
- if(!tmp.renameTo(log4jConfigFile))
- {
- //failed to rename the new file to the required filename
-
- if(!old.renameTo(log4jConfigFile))
- {
- //unable to return the backup to required filename
- LOGGER.error("Could not rename the new log4j configuration file into place, and unable to restore original file");
- throw new IOException("Could not rename the new log4j configuration file into place, and unable to restore original file");
- }
-
- LOGGER.error("Could not rename the new log4j configuration file into place");
- throw new IOException("Could not rename the new log4j configuration file into place");
- }
}
//method to parse the XML configuration file, validating it in the process, and returning a DOM Document of the content.
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
index e7b5d65c65..b0ef11bc1b 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
@@ -71,6 +71,7 @@ import org.apache.qpid.server.stats.StatisticsGatherer;
import org.apache.qpid.server.store.MessageStoreCreator;
import org.apache.qpid.server.util.MapValueConverter;
import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
+import org.apache.qpid.util.SystemUtils;
public class BrokerAdapter extends AbstractAdapter implements Broker, ConfigurationChangeListener
{
@@ -750,9 +751,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat
}
else if(OPERATING_SYSTEM.equals(name))
{
- return System.getProperty("os.name") + " "
- + System.getProperty("os.version") + " "
- + System.getProperty("os.arch");
+ return SystemUtils.getOSString();
}
else if(PLATFORM.equals(name))
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
index 9d16f4b927..8e7916e4b2 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
@@ -54,6 +54,7 @@ import org.apache.qpid.server.stats.StatisticsCounter;
import org.apache.qpid.server.stats.StatisticsGatherer;
import org.apache.qpid.server.virtualhost.VirtualHost;
import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
+import org.apache.qpid.util.SystemUtils;
/**
@@ -339,9 +340,9 @@ public class ApplicationRegistry implements IApplicationRegistry
logActor.message(BrokerMessages.PLATFORM(System.getProperty("java.vendor"),
System.getProperty("java.runtime.version", System.getProperty("java.version")),
- System.getProperty("os.name"),
- System.getProperty("os.version"),
- System.getProperty("os.arch")));
+ SystemUtils.getOSName(),
+ SystemUtils.getOSVersion(),
+ SystemUtils.getOSArch()));
logActor.message(BrokerMessages.MAX_MEMORY(Runtime.getRuntime().maxMemory()));
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
index 8eed1fa5a4..05b0052bf1 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
@@ -134,26 +134,32 @@ public class JsonFileConfigStore implements DurableConfigurationStore
return file.exists();
}
- private void getFileLock() throws IOException, AMQStoreException
+ private void getFileLock() throws AMQStoreException
{
File lockFile = new File(_directoryName, _name + ".lck");
- lockFile.createNewFile();
-
- FileOutputStream out = new FileOutputStream(lockFile);
- FileChannel channel = out.getChannel();
try
{
+ lockFile.createNewFile();
+ lockFile.deleteOnExit();
+
+ @SuppressWarnings("resource")
+ FileOutputStream out = new FileOutputStream(lockFile);
+ FileChannel channel = out.getChannel();
_fileLock = channel.tryLock();
}
+ catch (IOException ioe)
+ {
+ throw new AMQStoreException("Cannot create the lock file " + lockFile.getName(), ioe);
+ }
catch(OverlappingFileLockException e)
{
_fileLock = null;
}
+
if(_fileLock == null)
{
- throw new AMQStoreException("Cannot get lock on file " + lockFile.getAbsolutePath() + " is another instance running?");
+ throw new AMQStoreException("Cannot get lock on file " + lockFile.getAbsolutePath() + ". Is another instance running?");
}
- lockFile.deleteOnExit();
}
private void checkDirectoryIsWritable(String directoryName) throws AMQStoreException
@@ -185,7 +191,6 @@ public class JsonFileConfigStore implements DurableConfigurationStore
Map data = _objectMapper.readValue(new File(_directoryName,_configFileName),Map.class);
Collection<Class<? extends ConfiguredObject>> childClasses =
MODEL.getChildTypes(VirtualHost.class);
- String modelVersion = (String) data.remove("modelVersion");
Object configVersion;
if((configVersion = data.remove("configVersion")) instanceof Integer)
{
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java
index 72b34868ba..e55e700489 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java
@@ -19,14 +19,11 @@
*/
package org.apache.qpid.server.logging.log4j;
-import java.io.File;
-import java.io.InputStream;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Level;
import org.apache.qpid.test.utils.TestFileUtils;
-import org.apache.qpid.util.FileUtils;
import junit.framework.TestCase;
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java b/qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java
index 6f9d872f98..b2bcc1836e 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java
@@ -24,6 +24,7 @@ import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import org.apache.qpid.transport.util.Logger;
+import org.apache.qpid.util.SystemUtils;
/**
* Constants for the various properties clients can
@@ -88,11 +89,11 @@ public class ConnectionStartProperties
fullSystemInfo.append(", ");
fullSystemInfo.append(System.getProperty("java.vendor"));
fullSystemInfo.append(", ");
- fullSystemInfo.append(System.getProperty("os.arch"));
+ fullSystemInfo.append(SystemUtils.getOSArch());
fullSystemInfo.append(", ");
- fullSystemInfo.append(System.getProperty("os.name"));
+ fullSystemInfo.append(SystemUtils.getOSName());
fullSystemInfo.append(", ");
- fullSystemInfo.append(System.getProperty("os.version"));
+ fullSystemInfo.append(SystemUtils.getOSVersion());
fullSystemInfo.append(", ");
fullSystemInfo.append(System.getProperty("sun.os.patch.level"));
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
index 06a43e21c6..0ab195ced8 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
@@ -26,6 +26,7 @@ import org.apache.qpid.transport.Receiver;
import org.apache.qpid.transport.TransportException;
import org.apache.qpid.transport.network.Ticker;
import org.apache.qpid.transport.util.Logger;
+import org.apache.qpid.util.SystemUtils;
import javax.net.ssl.SSLSocket;
import java.io.IOException;
@@ -57,8 +58,7 @@ final class IoReceiver implements Runnable, Closeable
private Ticker _ticker;
static
{
- String osName = System.getProperty("os.name");
- shutdownBroken = osName == null ? false : osName.matches("(?i).*windows.*");
+ shutdownBroken = SystemUtils.isWindows();
}
public IoReceiver(Socket socket, Receiver<ByteBuffer> receiver, int bufferSize, long timeout)
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java b/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
index 7362099070..f48103c650 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
@@ -129,7 +129,6 @@ public class FileUtils
StringBuffer inBuffer = new StringBuffer();
- String line;
int read;
while ((read = is.read(data)) != -1)
@@ -157,6 +156,7 @@ public class FileUtils
*
* @return An input stream for the file or resource, or null if one could not be opened.
*/
+ @SuppressWarnings("resource")
public static InputStream openFileOrDefaultResource(String filename, String defaultResource, ClassLoader cl)
{
InputStream is = null;
@@ -173,7 +173,6 @@ public class FileUtils
{
is = null;
}
-
if (is == null)
{
// failed on filesystem, so try on classpath
@@ -332,6 +331,8 @@ public class FileUtils
public static class UnableToCopyException extends Exception
{
+ private static final long serialVersionUID = 956249157141857044L;
+
UnableToCopyException(String msg)
{
super(msg);
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/util/SystemUtils.java b/qpid/java/common/src/main/java/org/apache/qpid/util/SystemUtils.java
new file mode 100644
index 0000000000..55c7ae9b96
--- /dev/null
+++ b/qpid/java/common/src/main/java/org/apache/qpid/util/SystemUtils.java
@@ -0,0 +1,81 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.util;
+
+/**
+ * SystemUtils provides some simple helper methods for working with the current
+ * Operating System.
+ *
+ * It follows the convention of wrapping all checked exceptions as runtimes, so
+ * code using these methods is free of try-catch blocks but does not expect to
+ * recover from errors.
+ */
+public class SystemUtils
+{
+
+ public static final String UNKNOWN_OS = "unknown";
+ public static final String UNKNOWN_VERSION = "na";
+ public static final String UNKNOWN_ARCH = "unknown";
+
+ private static final String _osName = System.getProperty("os.name", UNKNOWN_OS);
+ private static final String _osVersion = System.getProperty("os.version", UNKNOWN_VERSION);
+ private static final String _osArch = System.getProperty("os.arch", UNKNOWN_ARCH);
+
+ private static final boolean _isWindows = _osName.toLowerCase().contains("windows");
+
+ private SystemUtils()
+ {
+ }
+
+ public final static String getOSName()
+ {
+ return _osName;
+ }
+
+ public final static String getOSVersion()
+ {
+ return _osVersion;
+ }
+
+ public final static String getOSArch()
+ {
+ return _osArch;
+ }
+
+ public final static boolean isWindows()
+ {
+ return _isWindows;
+ }
+
+ public final static String getOSConfigSuffix()
+ {
+ if (_osName.contains(" "))
+ {
+ return _osName.substring(0, _osName.indexOf(' ')).toLowerCase();
+ }
+ return _osName;
+ }
+
+ public final static String getOSString()
+ {
+ return _osName + " " + _osVersion + " " + _osArch;
+ }
+}
diff --git a/qpid/java/jca/rar/pom.xml b/qpid/java/jca/rar/pom.xml
index 192f34255d..fca35dba14 100644
--- a/qpid/java/jca/rar/pom.xml
+++ b/qpid/java/jca/rar/pom.xml
@@ -24,7 +24,7 @@
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>qpid-rar</artifactId>
+ <artifactId>qpid-ra</artifactId>
<packaging>rar</packaging>
<dependencies>
diff --git a/qpid/java/perftests/pom.xml b/qpid/java/perftests/pom.xml
index 25d0cce626..566f92828e 100644
--- a/qpid/java/perftests/pom.xml
+++ b/qpid/java/perftests/pom.xml
@@ -26,10 +26,10 @@
<artifactId>qpid-perftests</artifactId>
<properties>
- <broker.home.dir>target/qpid-broker/${project.version}</broker.home.dir>
+ <broker.home.dir>target${file.separator}qpid-broker${file.separator}${project.version}</broker.home.dir>
<!-- test properties -->
- <qpid.home>${basedir}/${broker.home.dir}</qpid.home>
- <qpid.home.qbtc.output>${qpid.home}/qbtc-output</qpid.home.qbtc.output>
+ <qpid.home>${basedir}${file.separator}${broker.home.dir}</qpid.home>
+ <qpid.home.qbtc.output>${qpid.home}${file.separator}qbtc-output</qpid.home.qbtc.output>
</properties>
<dependencies>
diff --git a/qpid/java/pom.xml b/qpid/java/pom.xml
index 1b313b3514..a9f9a835eb 100644
--- a/qpid/java/pom.xml
+++ b/qpid/java/pom.xml
@@ -29,12 +29,10 @@
<packaging>pom</packaging>
<!-- ###### TODO ######
- - Fix the jca/rar pom module name, it should be qpid-ra not qpid-rar.
- Add the Excludes files, log4j config, etc test resources to a module (qpid-test-utils?) which can be
used (extracted?) by the others to prevent them having to reference outside their directly for the files.
- Fix what the systests/perftests do to copy the test-profiles dir to the necessary location.
- Fix the log4j configuration property to work with all the modules, resolve the currently generated log4j exceptions during test runs.
- - Add project details such as Website, Mailing List, SCM.
- Fix the version numbers in all the modules.
- Decide on a final name for this parent module, qpid-project isnt necessarily appropriate given it doesnt encompass the whole project.
- Test deploying the modules to a local Nexus instance (by overriding the repo properties locally).
@@ -59,6 +57,9 @@
- Remove the QBTC output file mechanics, rely on Surefire to do it?
- JUnit test profiles instead of Exludes files?
-->
+ <prerequisites>
+ <maven>3.0.0</maven>
+ </prerequisites>
<properties>
<!-- dependency version numbers -->
@@ -102,13 +103,12 @@
<java.target>1.6</java.target>
<!-- enforcer plugin config properties -->
- <supported-maven-version-range>[3.0.0,)</supported-maven-version-range>
<supported-test-profiles-regex>(java-mms.0-9-1|java-mms.0-10)</supported-test-profiles-regex>
<!-- test properties -->
<qpid.home>${basedir}</qpid.home> <!-- override for broker tests -->
- <qpid.home.qbtc.output>${qpid.home}/target/qbtc-output</qpid.home.qbtc.output> <!-- override for broker tests -->
- <qpid.work>${project.build.directory}/QPID_WORK</qpid.work>
+ <qpid.home.qbtc.output>${qpid.home}${file.separator}target${file.separator}qbtc-output</qpid.home.qbtc.output> <!-- override for broker tests -->
+ <qpid.work>${project.build.directory}${file.separator}QPID_WORK</qpid.work>
<profile.excludes.java-mms.0-10>JavaTransientExcludes Java010Excludes</profile.excludes.java-mms.0-10>
<broker.version.java-mms.0-10>v0_10</broker.version.java-mms.0-10>
@@ -450,7 +450,8 @@
<broker.version>${broker.version.java-mms.0-10}</broker.version>
<qpid.broker_default_amqp_protocol_excludes>${qpid.broker_default_amqp_protocol_excludes.java-mms.0-10}</qpid.broker_default_amqp_protocol_excludes>
<broker.stopped>Exception</broker.stopped>
- <broker.command>${qpid.home}/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE</broker.command>
+ <broker.command>${qpid.home}${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE</broker.command>
+ <broker.command.windows>${qpid.home}${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE</broker.command.windows>
<broker.ready>BRK-1004</broker.ready>
<profile>${profile}</profile>
@@ -474,9 +475,6 @@
</goals>
<configuration>
<rules>
- <requireMavenVersion>
- <version>${supported-maven-version-range}</version>
- </requireMavenVersion>
<requireProperty>
<property>profile</property>
<message>You must set a test profile!</message>
@@ -497,6 +495,49 @@
</plugins>
</build>
+ <description>
+ Apache Qpidâ„¢ makes messaging tools that speak AMQP and support many languages and platforms.
+ AMQP is an open internet protocol for reliably sending and receiving messages. It makes it possible for everyone to build a diverse, coherent messaging ecosystem.
+ </description>
+
+ <url>http://qpid.apache.org</url>
+
+ <mailingLists>
+ <mailingList>
+ <name>Apache Qpid Users</name>
+ <subscribe>users-subscribe@qpid.apache.org</subscribe>
+ <unsubscribe>users-unsubscribe@qpid.apache.org</unsubscribe>
+ <post>users@qpid.apache.org</post>
+ <archive>http://mail-archives.apache.org/mod_mbox/qpid-users/</archive>
+ </mailingList>
+ <mailingList>
+ <name>Apache Qpid Developers</name>
+ <subscribe>dev-subscribe@qpid.apache.org</subscribe>
+ <unsubscribe>dev-unsubscribe@qpid.apache.org</unsubscribe>
+ <post>dev@qpid.apache.org</post>
+ <archive>http://mail-archives.apache.org/mod_mbox/qpid-dev/</archive>
+ </mailingList>
+ </mailingLists>
+
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/qpid/trunk/qpid</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/qpid/trunk/qpid</developerConnection>
+ <url>http://svn.apache.org/viewvc/qpid/</url>
+ </scm>
+
+ <distributionManagement>
+ <repository>
+ <id>qpid.releases.https</id>
+ <name>Qpid Release Distribution Repository</name>
+ <url>https://repository.apache.org/content/repositories/releases/org/apache/qpid</url>
+ </repository>
+ <snapshotRepository>
+ <id>qpid.snapshots.https</id>
+ <name>Qpid Development Snapshot Repository</name>
+ <url>https://repository.apache.org/content/repositories/snapshots/org/apache/qpid</url>
+ </snapshotRepository>
+ </distributionManagement>
+
<reporting>
<plugins>
<plugin>
diff --git a/qpid/java/systests/pom.xml b/qpid/java/systests/pom.xml
index 62f1a89480..a732c9a00c 100644
--- a/qpid/java/systests/pom.xml
+++ b/qpid/java/systests/pom.xml
@@ -26,10 +26,10 @@
<artifactId>qpid-systests</artifactId>
<properties>
- <broker.home.dir>target/qpid-broker/${project.version}</broker.home.dir>
+ <broker.home.dir>target${file.separator}qpid-broker${file.separator}${project.version}</broker.home.dir>
<!-- test properties -->
- <qpid.home>${basedir}/${broker.home.dir}</qpid.home>
- <qpid.home.qbtc.output>${qpid.home}/qbtc-output</qpid.home.qbtc.output>
+ <qpid.home>${basedir}${file.separator}${broker.home.dir}</qpid.home>
+ <qpid.home.qbtc.output>${qpid.home}${file.separator}qbtc-output</qpid.home.qbtc.output>
</properties>
<dependencies>
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java
index 1158a1d220..e483660f4c 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java
@@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.qpid.test.utils.Piper;
import org.apache.qpid.test.utils.QpidTestCase;
+import org.apache.qpid.util.SystemUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,6 +36,10 @@ public class QpidPasswdTest extends QpidTestCase
public void testRunScript() throws Exception
{
+ if(SystemUtils.isWindows())
+ {
+ return;
+ }
Process process = null;
try
{
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java
index babe2d207d..9e2bd28c43 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java
@@ -29,6 +29,7 @@ import org.apache.qpid.AMQException;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.client.AMQConnectionURL;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
+import org.apache.qpid.util.SystemUtils;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
@@ -49,6 +50,12 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
*/
public void testFailoverRoundRobinDelay() throws Exception
{
+ if (SystemUtils.isWindows())
+ {
+ //TODO Test requires redevelopment - timings/behaviour on windows mean it fails
+ return;
+ }
+
//note: The first broker has no connect delay and the default 1 retry
// while the tcp:localhost broker has 3 retries with a 2s connect delay
String connectionString = "amqp://guest:guest@/test?brokerlist=" +
@@ -77,7 +84,7 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
long duration = (end - start);
//Failover should take more that 6 seconds.
- // 3 Retires
+ // 3 Retries
// so VM Broker NoDelay 0 (Connect) NoDelay 0
// then TCP NoDelay 0 Delay 1 Delay 2 Delay 3
// so 3 delays of 2s in total for connection
@@ -99,6 +106,12 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
public void testFailoverSingleDelay() throws Exception
{
+ if (SystemUtils.isWindows())
+ {
+ //TODO Test requires redevelopment - timings/behaviour on windows mean it fails
+ return;
+ }
+
String connectionString = "amqp://guest:guest@/test?brokerlist='tcp://localhost:" + getPort() + "?connectdelay='2000',retries='3''";
AMQConnectionURL url = new AMQConnectionURL(connectionString);
@@ -123,7 +136,7 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
long duration = (end - start);
//Failover should take more that 6 seconds.
- // 3 Retires
+ // 3 Retries
// so NoDelay 0 (Connect) NoDelay 0 Delay 1 Delay 2 Delay 3
// so 3 delays of 2s in total for connection
// so max time is 6 seconds of delay + 1 second of runtime. == 7 seconds
@@ -151,16 +164,9 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
*/
public void testNoFailover() throws Exception
{
- if (!isInternalBroker())
+ if (SystemUtils.isWindows())
{
- // QPID-3359
- // These tests always used to be inVM tests, then QPID-2815, with removal of ivVM,
- // converted the test to use QpidBrokerTestCase. However, since then we notice this
- // test fails on slower CI boxes. It turns out the test design is *extremely*
- // sensitive the length of time the broker takes to start up.
- //
- // Making the test a same-VM test to temporarily avoid the issue. In long term, test
- // needs redesigned to avoid the issue.
+ //TODO Test requires redevelopment - timings/behaviour on windows mean it fails
return;
}
@@ -185,7 +191,7 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
try
{
//Wait before starting broker
- // The wait should allow atleast 1 retries to fail before broker is ready
+ // The wait should allow at least 1 retries to fail before broker is ready
Thread.sleep(750);
startBroker();
}
@@ -198,15 +204,13 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
brokerStart.start();
long start = System.currentTimeMillis();
-
//Start the connection so it will use the retries
AMQConnection connection = new AMQConnection(url);
long end = System.currentTimeMillis();
-
long duration = (end - start);
- // Check that we actually had a delay had a delay in connection
+ // Check that we actually had a delay in connection
assertTrue("Initial connection should be longer than 1 delay : " + CONNECT_DELAY + " <:(" + duration + ")", duration > CONNECT_DELAY);
@@ -222,8 +226,7 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
stopBroker();
_failoverComplete.await(30, TimeUnit.SECONDS);
- assertEquals("failoverLatch was not decremented in given timeframe",
- 0, _failoverComplete.getCount());
+ assertEquals("failoverLatch was not decremented in given timeframe", 0, _failoverComplete.getCount());
end = System.currentTimeMillis();
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java
index b5d036c9e4..30a9ea2f21 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java
@@ -42,6 +42,7 @@ import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.store.MessageStoreCreator;
import org.apache.qpid.test.client.UnroutableMessageTestExceptionListener;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
+import org.apache.qpid.util.SystemUtils;
public class BrokerRestTest extends QpidRestTestCase
{
@@ -237,8 +238,7 @@ public class BrokerRestTest extends QpidRestTestCase
assertEquals("Unexpected value of attribute " + Broker.BUILD_VERSION, QpidProperties.getBuildVersion(),
brokerDetails.get(Broker.BUILD_VERSION));
- assertEquals("Unexpected value of attribute " + Broker.OPERATING_SYSTEM, OS_NAME + " "
- + System.getProperty("os.version") + " " + System.getProperty("os.arch"),
+ assertEquals("Unexpected value of attribute " + Broker.OPERATING_SYSTEM, SystemUtils.getOSString(),
brokerDetails.get(Broker.OPERATING_SYSTEM));
assertEquals(
"Unexpected value of attribute " + Broker.PLATFORM,
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 8248fc9de2..7ff1d09cb2 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
@@ -21,8 +21,6 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
-import java.net.URI;
-import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -31,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
+
import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.Destination;
@@ -48,6 +47,7 @@ import javax.jms.Topic;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
+
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.lang.StringUtils;
@@ -72,6 +72,7 @@ import org.apache.qpid.server.store.MessageStoreConstants;
import org.apache.qpid.server.store.MessageStoreCreator;
import org.apache.qpid.url.URLSyntaxException;
import org.apache.qpid.util.FileUtils;
+import org.apache.qpid.util.SystemUtils;
/**
* Qpid base class for system testing test cases.
@@ -131,6 +132,7 @@ public class QpidBrokerTestCase extends QpidTestCase
private static final String BROKER_LANGUAGE = "broker.language";
protected static final String BROKER_TYPE = "broker.type";
private static final String BROKER_COMMAND = "broker.command";
+ private static final String BROKER_COMMAND_PLATFORM = "broker.command." + SystemUtils.getOSConfigSuffix();
private static final String BROKER_CLEAN_BETWEEN_TESTS = "broker.clean.between.tests";
private static final String BROKER_VERSION = "broker.version";
protected static final String BROKER_READY = "broker.ready";
@@ -158,13 +160,13 @@ public class QpidBrokerTestCase extends QpidTestCase
public static final int FAILING_PORT = Integer.parseInt(System.getProperty("test.port.alt"));
public static final int DEFAULT_MANAGEMENT_PORT = Integer.getInteger("test.mport", DEFAULT_JMXPORT_REGISTRYSERVER);
public static final int DEFAULT_SSL_PORT = Integer.getInteger("test.port.ssl", DEFAULT_SSL_PORT_VALUE);
- public static final String OS_NAME = System.getProperty("os.name");
- public static final boolean IS_OS_WINDOWS = String.valueOf(OS_NAME).toLowerCase().contains("windows");
protected String _brokerLanguage = System.getProperty(BROKER_LANGUAGE, JAVA);
protected BrokerType _brokerType = BrokerType.valueOf(System.getProperty(BROKER_TYPE, "").toUpperCase());
- protected BrokerCommandHelper _brokerCommandHelper = new BrokerCommandHelper(System.getProperty(BROKER_COMMAND));
+ private static final String BROKER_COMMAND_TEMPLATE = System.getProperty(BROKER_COMMAND_PLATFORM, System.getProperty(BROKER_COMMAND));
+ protected BrokerCommandHelper _brokerCommandHelper = new BrokerCommandHelper(BROKER_COMMAND_TEMPLATE);
+
private Boolean _brokerCleanBetweenTests = Boolean.getBoolean(BROKER_CLEAN_BETWEEN_TESTS);
private final AmqpProtocolVersion _brokerVersion = AmqpProtocolVersion.valueOf(System.getProperty(BROKER_VERSION, ""));
protected String _output = System.getProperty(TEST_OUTPUT, System.getProperty("java.io.tmpdir"));
@@ -499,8 +501,21 @@ public class QpidBrokerTestCase extends QpidTestCase
String qpidHome = System.getProperty(QPID_HOME);
processEnv.put(QPID_HOME, qpidHome);
//Augment Path with bin directory in QPID_HOME.
- processEnv.put("PATH", processEnv.get("PATH").concat(File.pathSeparator + qpidHome + "/bin"));
+ boolean foundPath = false;
+ final String pathEntry = qpidHome + File.separator + "bin";
+ for(Map.Entry<String,String> entry : processEnv.entrySet())
+ {
+ if(entry.getKey().equalsIgnoreCase("path"))
+ {
+ entry.setValue(entry.getValue().concat(File.pathSeparator + pathEntry));
+ foundPath = true;
+ }
+ }
+ if(!foundPath)
+ {
+ processEnv.put("PATH", pathEntry);
+ }
//Add the test name to the broker run.
// DON'T change PNAME, qpid.stop needs this value.
processEnv.put("QPID_PNAME", "-DPNAME=QPBRKR -DTNAME=\"" + getTestName() + "\"");
@@ -565,8 +580,14 @@ public class QpidBrokerTestCase extends QpidTestCase
_interleaveBrokerLog ? _brokerLogPrefix : null);
p.start();
+ StringBuilder cmdLine = new StringBuilder(cmd[0]);
+ for(int i = 1; i< cmd.length; i++)
+ {
+ cmdLine.append(' ');
+ cmdLine.append(cmd[i]);
+ }
- SpawnedBrokerHolder holder = new SpawnedBrokerHolder(process, qpidWork, portsUsedByBroker);
+ SpawnedBrokerHolder holder = new SpawnedBrokerHolder(process, qpidWork, portsUsedByBroker, cmdLine.toString());
if (!p.await(30, TimeUnit.SECONDS))
{
_logger.info("broker failed to become ready (" + p.getReady() + "):" + p.getStopLine());
@@ -639,7 +660,16 @@ public class QpidBrokerTestCase extends QpidTestCase
private String relativeToQpidHome(String file)
{
- return file.replace(System.getProperty(QPID_HOME,"QPID_HOME") + File.separator,"");
+ _logger.debug("Converting path to be relative to QPID_HOME: " + file);
+
+ final String qpidHome = System.getProperty(QPID_HOME,"QPID_HOME");
+ _logger.debug("QPID_HOME is: " + qpidHome);
+
+ if(!file.startsWith(qpidHome)) {
+ throw new RuntimeException("Provided path is not a child of the QPID_HOME directory: " + qpidHome);
+ }
+
+ return file.replace(qpidHome + File.separator,"");
}
protected String getPathRelativeToWorkingDirectory(String file)
@@ -653,7 +683,7 @@ public class QpidBrokerTestCase extends QpidTestCase
{
String configPath = configLocation.getAbsolutePath();
String workingDirectoryPath = workingDirectory.getCanonicalPath();
- if (IS_OS_WINDOWS)
+ if (SystemUtils.isWindows())
{
configPath = configPath.toLowerCase();
workingDirectoryPath = workingDirectoryPath.toLowerCase();
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
index bce97a574a..4752aec352 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
@@ -20,24 +20,32 @@
*/
package org.apache.qpid.test.utils;
+import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
+import org.apache.qpid.util.SystemUtils;
public class SpawnedBrokerHolder implements BrokerHolder
{
private static final Logger LOGGER = Logger.getLogger(SpawnedBrokerHolder.class);
- private final boolean _isWindows = String.valueOf(System.getProperty("os.name")).toLowerCase().contains("windows");
private final Process _process;
private final Integer _pid;
private final String _workingDirectory;
private Set<Integer> _portsUsedByBroker;
+ private final String _brokerCommand;
- public SpawnedBrokerHolder(final Process process, final String workingDirectory, Set<Integer> portsUsedByBroker)
+ public SpawnedBrokerHolder(final Process process, final String workingDirectory, Set<Integer> portsUsedByBroker,
+ String brokerCmd)
{
if(process == null)
{
@@ -48,6 +56,7 @@ public class SpawnedBrokerHolder implements BrokerHolder
_pid = retrieveUnixPidIfPossible();
_workingDirectory = workingDirectory;
_portsUsedByBroker = portsUsedByBroker;
+ _brokerCommand = brokerCmd;
}
@Override
@@ -58,6 +67,11 @@ public class SpawnedBrokerHolder implements BrokerHolder
public void shutdown()
{
+ if(SystemUtils.isWindows())
+ {
+ doWindowsKill();
+ }
+
LOGGER.info("Destroying broker process");
_process.destroy();
@@ -66,12 +80,85 @@ public class SpawnedBrokerHolder implements BrokerHolder
waitUntilPortsAreFree();
}
+ private void doWindowsKill()
+ {
+ try
+ {
+ Process p = Runtime.getRuntime().exec(new String[] {"wmic", "process", "list"});
+ BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String line;
+ String headers = reader.readLine();
+ int processIdOffset = headers.indexOf(" ProcessId") + 1;
+ int parentProcessIdOffset = headers.indexOf(" ParentProcessId") + 1;
+ String parentProcess = null;
+ Map<String,List<String>> parentProcessMap = new HashMap<String, List<String>>();
+
+ while ((line = reader.readLine()) != null)
+ {
+ if(line.length() > processIdOffset)
+ {
+ String processIdStr = line.substring(processIdOffset);
+ processIdStr = processIdStr.substring(0, processIdStr.indexOf(' '));
+ processIdStr.trim();
+
+ String parentProcessIdStr = line.substring(parentProcessIdOffset);
+ parentProcessIdStr = parentProcessIdStr.substring(0, parentProcessIdStr.indexOf(' '));
+ parentProcessIdStr.trim();
+ if(parentProcessIdStr.length() > 0 && (parentProcess == null || parentProcess.equals(parentProcessIdStr)))
+ {
+ List<String> children = parentProcessMap.get(parentProcessIdStr);
+ if(children == null)
+ {
+ children = new ArrayList<String>();
+ parentProcessMap.put(parentProcessIdStr,children);
+ }
+ children.add(processIdStr);
+ }
+ if(line.substring(0,_brokerCommand.length()+7).toLowerCase().contains(_brokerCommand.toLowerCase()))
+ {
+ parentProcess = processIdStr;
+ }
+
+ }
+ if(parentProcess != null)
+ {
+ List<String> children = parentProcessMap.get(parentProcess);
+ if(children != null)
+ {
+ for(String child : children)
+ {
+ p = Runtime.getRuntime().exec(new String[] {"taskkill", "/PID", child, "/T", "/F"});
+ reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ while((line = reader.readLine()) != null)
+ {
+ }
+ }
+ }
+ p = Runtime.getRuntime().exec(new String[] {"taskkill", "/PID", parentProcess, "/T", "/F"});
+ reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ while((line = reader.readLine()) != null)
+ {
+ }
+ }
+
+ }
+ }
+ catch (IOException e)
+ {
+ LOGGER.error("Error whilst killing process " + _brokerCommand, e);
+ }
+ }
+
@Override
public void kill()
{
if (_pid == null)
{
- LOGGER.info("Destroying broker process");
+ if(SystemUtils.isWindows())
+ {
+ doWindowsKill();
+ }
+ LOGGER.info("Destroying broker process (no PID)");
_process.destroy();
}
else
@@ -113,7 +200,7 @@ public class SpawnedBrokerHolder implements BrokerHolder
private Integer retrieveUnixPidIfPossible()
{
- if(!_isWindows)
+ if(!SystemUtils.isWindows())
{
try
{
diff --git a/qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile b/qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile
index 78ab05a179..4230888a21 100644
--- a/qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile
+++ b/qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile b/qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile
index 7f6efcbc3d..054eb9c1b6 100644
--- a/qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile
+++ b/qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile b/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile
index 28668b94f7..65d86d9310 100644
--- a/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile b/qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile
index aa8e6830d4..4818cfff28 100644
--- a/qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile
+++ b/qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-bdb.0-10.testprofile b/qpid/java/test-profiles/java-bdb.0-10.testprofile
index 8c4b145e0b..cf5f608957 100644
--- a/qpid/java/test-profiles/java-bdb.0-10.testprofile
+++ b/qpid/java/test-profiles/java-bdb.0-10.testprofile
@@ -20,7 +20,8 @@
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-bdb.0-8.testprofile b/qpid/java/test-profiles/java-bdb.0-8.testprofile
index acf031040e..09270f89b0 100644
--- a/qpid/java/test-profiles/java-bdb.0-8.testprofile
+++ b/qpid/java/test-profiles/java-bdb.0-8.testprofile
@@ -20,7 +20,8 @@
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-bdb.0-9-1.testprofile b/qpid/java/test-profiles/java-bdb.0-9-1.testprofile
index fa86720bbb..4248a55f1c 100644
--- a/qpid/java/test-profiles/java-bdb.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-bdb.0-9-1.testprofile
@@ -20,7 +20,8 @@
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-bdb.0-9.testprofile b/qpid/java/test-profiles/java-bdb.0-9.testprofile
index ed3d7b2170..cff55d7bde 100644
--- a/qpid/java/test-profiles/java-bdb.0-9.testprofile
+++ b/qpid/java/test-profiles/java-bdb.0-9.testprofile
@@ -20,7 +20,8 @@
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-dby-mem.0-10.testprofile b/qpid/java/test-profiles/java-dby-mem.0-10.testprofile
index bfe031b338..f968d58ec9 100644
--- a/qpid/java/test-profiles/java-dby-mem.0-10.testprofile
+++ b/qpid/java/test-profiles/java-dby-mem.0-10.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_10
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-dby-mem.0-8.testprofile b/qpid/java/test-profiles/java-dby-mem.0-8.testprofile
index 28bce8e434..b50e17b955 100644
--- a/qpid/java/test-profiles/java-dby-mem.0-8.testprofile
+++ b/qpid/java/test-profiles/java-dby-mem.0-8.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_8
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile b/qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile
index 0d2f82ebb5..d16d17d220 100644
--- a/qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_9_1
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-dby-mem.0-9.testprofile b/qpid/java/test-profiles/java-dby-mem.0-9.testprofile
index 4dd9fbb899..35f2d0aa8c 100644
--- a/qpid/java/test-profiles/java-dby-mem.0-9.testprofile
+++ b/qpid/java/test-profiles/java-dby-mem.0-9.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_9
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-dby-spawn.0-10.testprofile b/qpid/java/test-profiles/java-dby-spawn.0-10.testprofile
index 9795533b52..a3ea69a1ee 100644
--- a/qpid/java/test-profiles/java-dby-spawn.0-10.testprofile
+++ b/qpid/java/test-profiles/java-dby-spawn.0-10.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.version=v0_10
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-dby-spawn.0-8.testprofile b/qpid/java/test-profiles/java-dby-spawn.0-8.testprofile
index a980fd181d..8e737cec7c 100644
--- a/qpid/java/test-profiles/java-dby-spawn.0-8.testprofile
+++ b/qpid/java/test-profiles/java-dby-spawn.0-8.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_8
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile b/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile
index 04428b5021..9de7a4a490 100644
--- a/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_9_1
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-dby-spawn.0-9.testprofile b/qpid/java/test-profiles/java-dby-spawn.0-9.testprofile
index 4724eba660..97fff81068 100644
--- a/qpid/java/test-profiles/java-dby-spawn.0-9.testprofile
+++ b/qpid/java/test-profiles/java-dby-spawn.0-9.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_9
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-dby.0-10.testprofile b/qpid/java/test-profiles/java-dby.0-10.testprofile
index a2b1a41c31..07d75577d3 100644
--- a/qpid/java/test-profiles/java-dby.0-10.testprofile
+++ b/qpid/java/test-profiles/java-dby.0-10.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_10
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-dby.0-8.testprofile b/qpid/java/test-profiles/java-dby.0-8.testprofile
index 509796331f..b24dc8381d 100644
--- a/qpid/java/test-profiles/java-dby.0-8.testprofile
+++ b/qpid/java/test-profiles/java-dby.0-8.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_8
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-dby.0-9-1.testprofile b/qpid/java/test-profiles/java-dby.0-9-1.testprofile
index be087a6344..ec08913626 100644
--- a/qpid/java/test-profiles/java-dby.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-dby.0-9-1.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_9_1
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-dby.0-9.testprofile b/qpid/java/test-profiles/java-dby.0-9.testprofile
index 3b5e586ba4..73b1161f6b 100644
--- a/qpid/java/test-profiles/java-dby.0-9.testprofile
+++ b/qpid/java/test-profiles/java-dby.0-9.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_9
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile b/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile
index 71aaf48562..c2f2976d5f 100644
--- a/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile
+++ b/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_10
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-mms-spawn.0-8.testprofile b/qpid/java/test-profiles/java-mms-spawn.0-8.testprofile
index 6365fa20f0..74da76edc4 100644
--- a/qpid/java/test-profiles/java-mms-spawn.0-8.testprofile
+++ b/qpid/java/test-profiles/java-mms-spawn.0-8.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_8
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile b/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile
index 1eb4b00a1d..4438a4293f 100644
--- a/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_9_1
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-mms-spawn.0-9.testprofile b/qpid/java/test-profiles/java-mms-spawn.0-9.testprofile
index 4ebce66c05..828ad3fedf 100644
--- a/qpid/java/test-profiles/java-mms-spawn.0-9.testprofile
+++ b/qpid/java/test-profiles/java-mms-spawn.0-9.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_9
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-mms.0-10.testprofile b/qpid/java/test-profiles/java-mms.0-10.testprofile
index 0de5ffea09..33e90b940a 100644
--- a/qpid/java/test-profiles/java-mms.0-10.testprofile
+++ b/qpid/java/test-profiles/java-mms.0-10.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_10
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-mms.0-8.testprofile b/qpid/java/test-profiles/java-mms.0-8.testprofile
index dddad95157..93365e2e5c 100644
--- a/qpid/java/test-profiles/java-mms.0-8.testprofile
+++ b/qpid/java/test-profiles/java-mms.0-8.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_8
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-mms.0-9-1.testprofile b/qpid/java/test-profiles/java-mms.0-9-1.testprofile
index 3c2f68a2c9..78a4629c9b 100644
--- a/qpid/java/test-profiles/java-mms.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-mms.0-9-1.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_9_1
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-mms.0-9.testprofile b/qpid/java/test-profiles/java-mms.0-9.testprofile
index 992168b044..c5edf32bee 100644
--- a/qpid/java/test-profiles/java-mms.0-9.testprofile
+++ b/qpid/java/test-profiles/java-mms.0-9.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_9
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1