summaryrefslogtreecommitdiff
path: root/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java')
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java98
1 files changed, 55 insertions, 43 deletions
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 507c994076..4b747e869c 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
@@ -85,62 +85,61 @@ public class SpawnedBrokerHolder implements BrokerHolder
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)
+ try(BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())))
{
- if(line.length() > processIdOffset)
- {
- String processIdStr = line.substring(processIdOffset);
- processIdStr = processIdStr.substring(0, processIdStr.indexOf(' '));
- processIdStr = processIdStr.trim();
+ 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>>();
- String parentProcessIdStr = line.substring(parentProcessIdOffset);
- parentProcessIdStr = parentProcessIdStr.substring(0, parentProcessIdStr.indexOf(' '));
- parentProcessIdStr = parentProcessIdStr.trim();
- if(parentProcessIdStr.length() > 0 && (parentProcess == null || parentProcess.equals(parentProcessIdStr)))
+ while ((line = reader.readLine()) != null)
+ {
+ if (line.length() > processIdOffset)
{
- List<String> children = parentProcessMap.get(parentProcessIdStr);
- if(children == null)
+ String processIdStr = line.substring(processIdOffset);
+ processIdStr = processIdStr.substring(0, processIdStr.indexOf(' '));
+ processIdStr = processIdStr.trim();
+
+ String parentProcessIdStr = line.substring(parentProcessIdOffset);
+ parentProcessIdStr = parentProcessIdStr.substring(0, parentProcessIdStr.indexOf(' '));
+ parentProcessIdStr = parentProcessIdStr.trim();
+ if (parentProcessIdStr.length() > 0 && (parentProcess == null || parentProcess.equals(
+ parentProcessIdStr)))
{
- children = new ArrayList<String>();
- parentProcessMap.put(parentProcessIdStr,children);
+ 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;
}
- 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)
+ }
+ if (parentProcess != null)
{
- for(String child : children)
+ List<String> children = parentProcessMap.get(parentProcess);
+ if (children != null)
{
- p = Runtime.getRuntime().exec(new String[] {"taskkill", "/PID", child, "/T", "/F"});
- reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
- while((line = reader.readLine()) != null)
+ for (String child : children)
{
+ 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);
}
- 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)
@@ -149,6 +148,19 @@ public class SpawnedBrokerHolder implements BrokerHolder
}
}
+ private static void consumeAllOutput(Process p) throws IOException
+ {
+ try(InputStreamReader inputStreamReader = new InputStreamReader(p.getInputStream()))
+ {
+ try (BufferedReader reader = new BufferedReader(inputStreamReader))
+ {
+ while (reader.readLine() != null)
+ {
+ }
+ }
+ }
+ }
+
@Override
public void kill()
{