diff options
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.java | 98 |
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() { |