Author: rgodfrey
Date: Wed Apr 29 17:20:55 2015
New Revision: 1676802
URL: http://svn.apache.org/r1676802
Log:
QPID-6520 : [Java Tests] fix failing tests on windows
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/FileGroupDatabase.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseTest.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/util/FileUtils.java
qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupRestTest.java
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/FileGroupDatabase.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/FileGroupDatabase.java?rev=1676802&r1=1676801&r2=1676802&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/FileGroupDatabase.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/security/group/FileGroupDatabase.java
Wed Apr 29 17:20:55 2015
@@ -186,7 +186,7 @@ public class FileGroupDatabase implement
}
catch (IOException e)
{
- throw new ServerScopedRuntimeException("Unable to persist
change to file " + _groupFile);
+ throw new ServerScopedRuntimeException("Unable to persist
change to file " + _groupFile,e);
}
}
}
Modified:
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseTest.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseTest.java?rev=1676802&r1=1676801&r2=1676802&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseTest.java
(original)
+++
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseTest.java
Wed Apr 29 17:20:55 2015
@@ -427,7 +427,10 @@ public class FileGroupDatabaseTest exten
props.put(group, users);
}
- props.store(new FileOutputStream(_groupFile), "test group file");
+ try(FileOutputStream fileOutputStream = new
FileOutputStream(_groupFile))
+ {
+ props.store(fileOutputStream, "test group file");
+ }
}
private String createEmptyTestGroupFile() throws IOException
Modified:
qpid/java/trunk/common/src/main/java/org/apache/qpid/util/FileUtils.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/util/FileUtils.java?rev=1676802&r1=1676801&r2=1676802&view=diff
==============================================================================
--- qpid/java/trunk/common/src/main/java/org/apache/qpid/util/FileUtils.java
(original)
+++ qpid/java/trunk/common/src/main/java/org/apache/qpid/util/FileUtils.java
Wed Apr 29 17:20:55 2015
@@ -20,6 +20,9 @@
*/
package org.apache.qpid.util;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
@@ -41,6 +44,8 @@ import java.util.List;
*/
public class FileUtils
{
+ private static final Logger LOG = LoggerFactory.getLogger(FileUtils.class);
+
private FileUtils()
{
}
@@ -294,6 +299,7 @@ public class FileUtils
// This can occur if the file is deleted outside the JVM
if (files == null)
{
+ LOG.debug("Recursive delete failed as file was deleted
outside JVM");
return false;
}
@@ -302,13 +308,23 @@ public class FileUtils
success = delete(files[i], true) && success;
}
- return success && file.delete();
+ final boolean directoryDeleteSuccess = file.delete();
+ if(!directoryDeleteSuccess)
+ {
+ LOG.debug("Failed to delete " + file.getPath());
+ }
+ return success && directoryDeleteSuccess;
}
return false;
}
- return file.delete();
+ success = file.delete();
+ if(!success)
+ {
+ LOG.debug("Failed to delete " + file.getPath());
+ }
+ return success;
}
public static class UnableToCopyException extends Exception
Modified:
qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java?rev=1676802&r1=1676801&r2=1676802&view=diff
==============================================================================
---
qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
(original)
+++
qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
Wed Apr 29 17:20:55 2015
@@ -57,6 +57,7 @@ public class SpawnedBrokerHolder impleme
private Process _process;
private Integer _pid;
+ private List<String> _windowsPids;
private Set<Integer> _portsUsedByBroker;
private String _brokerCommand;
@@ -137,9 +138,10 @@ public class SpawnedBrokerHolder impleme
// Add all the specified system properties to QPID_OPTS
if (!_jvmOptions.isEmpty())
{
+ boolean isWindows = SystemUtils.isWindows();
for (String key : _jvmOptions.keySet())
{
- qpidOpts += " -D" + key + "=" + _jvmOptions.get(key);
+ qpidOpts += " -D" + key + "=" +(isWindows ?
doWindowsCommandEscaping(_jvmOptions.get(key)) : _jvmOptions.get(key));
}
}
@@ -188,6 +190,8 @@ public class SpawnedBrokerHolder impleme
+ standardOutputPiper.getStopLine());
}
+ _windowsPids = retrieveWindowsPidsIfPossible();
+
try
{
//test that the broker is still running and hasn't exited
unexpectedly
@@ -203,6 +207,19 @@ public class SpawnedBrokerHolder impleme
}
+ private String doWindowsCommandEscaping(String value)
+ {
+ if(value.contains("\"") && !value.startsWith("\""))
+ {
+ return "\"" + value.replaceAll("\"", "\"\"") + "\"";
+
+ }
+ else
+ {
+ return value;
+ }
+ }
+
protected void createBrokerWork(final String qpidWork)
{
if (qpidWork != null)
@@ -259,7 +276,7 @@ public class SpawnedBrokerHolder impleme
waitUntilPortsAreFree();
}
- private void doWindowsKill()
+ private List<String> retrieveWindowsPidsIfPossible()
{
try
{
@@ -295,36 +312,64 @@ public class SpawnedBrokerHolder impleme
}
children.add(processIdStr);
}
- if (line.substring(0, _brokerCommand.length() + 7)
- .toLowerCase()
+ if (line.toLowerCase()
.contains(_brokerCommand.toLowerCase()))
{
parentProcess = processIdStr;
}
}
- if (parentProcess != null)
+
+ }
+ LOGGER.debug("Parent process: " + parentProcess);
+ if (parentProcess != null)
+ {
+ List<String> returnVal = new ArrayList<>();
+ returnVal.add(parentProcess);
+ List<String> children =
parentProcessMap.get(parentProcess);
+ if (children != null)
{
- List<String> children =
parentProcessMap.get(parentProcess);
- if (children != null)
+ for (String child : children)
{
- for (String child : children)
- {
- p = Runtime.getRuntime().exec(new
String[]{"taskkill", "/PID", child, "/T", "/F"});
- consumeAllOutput(p);
- }
+ returnVal.add(child);
}
- p = Runtime.getRuntime().exec(new String[]{"taskkill",
"/PID", parentProcess, "/T", "/F"});
- consumeAllOutput(p);
}
-
+ return returnVal;
}
+
+
}
}
catch (IOException e)
{
LOGGER.error("Error whilst killing process " + _brokerCommand, e);
}
+ return null;
+ }
+
+ private void doWindowsKill()
+ {
+ if(_windowsPids != null && !_windowsPids.isEmpty())
+ {
+ String parentProcess = _windowsPids.remove(0);
+ try
+ {
+
+ Process p;
+ for (String child : _windowsPids)
+ {
+ p = Runtime.getRuntime().exec(new String[]{"taskkill",
"/PID", child, "/T", "/F"});
+ consumeAllOutput(p);
+ }
+ p = Runtime.getRuntime().exec(new String[]{"taskkill", "/PID",
parentProcess, "/T", "/F"});
+ consumeAllOutput(p);
+
+ }
+ catch (IOException e)
+ {
+ LOGGER.error("Error whilst killing process " + _brokerCommand,
e);
+ }
+ }
}
private static void consumeAllOutput(Process p) throws IOException
Modified:
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java?rev=1676802&r1=1676801&r2=1676802&view=diff
==============================================================================
---
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
(original)
+++
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
Wed Apr 29 17:20:55 2015
@@ -375,7 +375,10 @@ public class GroupProviderRestTest exten
Properties props = new Properties();
props.put("myGroup.users", "guest");
- props.store(new FileOutputStream(groupFile), "test group file");
+ try(final FileOutputStream out = new FileOutputStream(groupFile))
+ {
+ props.store(out, "test group file");
+ }
return groupFile;
}
Modified:
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupRestTest.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupRestTest.java?rev=1676802&r1=1676801&r2=1676802&view=diff
==============================================================================
---
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupRestTest.java
(original)
+++
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/GroupRestTest.java
Wed Apr 29 17:20:55 2015
@@ -137,7 +137,10 @@ public class GroupRestTest extends QpidR
Properties props = new Properties();
props.put(GROUP_NAME + ".users", EXISTING_MEMBER);
- props.store(new FileOutputStream(groupFile), "test group file");
+ try(final FileOutputStream out = new FileOutputStream(groupFile))
+ {
+ props.store(out, "test group file");
+ }
return groupFile;
}
Modified:
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java?rev=1676802&r1=1676801&r2=1676802&view=diff
==============================================================================
---
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java
(original)
+++
qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java
Wed Apr 29 17:20:55 2015
@@ -88,7 +88,10 @@ public class GroupRestACLTest extends Qp
props.put(DENIED_GROUP + ".users", DENIED_USER);
props.put(OTHER_GROUP + ".users", OTHER_USER);
- props.store(new FileOutputStream(groupFile), "test group file");
+ try(final FileOutputStream out = new FileOutputStream(groupFile))
+ {
+ props.store(out, "test group file");
+ }
return groupFile;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]