close output stream to process before destroying it without the close, testSink() fails on Window seemingly because the "catStdInOut" command isn't given a chance to write its results and validation fails
Project: http://git-wip-us.apache.org/repos/asf/incubator-edgent/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-edgent/commit/98167a6c Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent/tree/98167a6c Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent/diff/98167a6c Branch: refs/heads/master Commit: 98167a6cbeb3492a403e76e95ecd80631538eb06 Parents: 89502e8 Author: Dale LaBossiere <[email protected]> Authored: Thu Dec 29 12:35:47 2016 -0500 Committer: Dale LaBossiere <[email protected]> Committed: Thu Dec 29 12:35:47 2016 -0500 ---------------------------------------------------------------------- .../edgent/connectors/command/runtime/CommandConnector.java | 8 ++++++++ .../edgent/test/connectors/command/CommandStreamsTest.java | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/98167a6c/connectors/command/src/main/java/org/apache/edgent/connectors/command/runtime/CommandConnector.java ---------------------------------------------------------------------- diff --git a/connectors/command/src/main/java/org/apache/edgent/connectors/command/runtime/CommandConnector.java b/connectors/command/src/main/java/org/apache/edgent/connectors/command/runtime/CommandConnector.java index fca3d4c..97bcb01 100644 --- a/connectors/command/src/main/java/org/apache/edgent/connectors/command/runtime/CommandConnector.java +++ b/connectors/command/src/main/java/org/apache/edgent/connectors/command/runtime/CommandConnector.java @@ -86,6 +86,14 @@ abstract class CommandConnector implements AutoCloseable { protected void closeProcess() { if (currentProcess != null) { + if (currentProcess.getOutputStream() != null) { + try { + currentProcess.getOutputStream().close(); + } + catch (IOException e) { + logger.error("Unable to close OutputStream to cmd {}", toCmdForMsg(), e); + } + } currentProcess.destroy(); currentProcess = null; } http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/98167a6c/connectors/command/src/test/java/org/apache/edgent/test/connectors/command/CommandStreamsTest.java ---------------------------------------------------------------------- diff --git a/connectors/command/src/test/java/org/apache/edgent/test/connectors/command/CommandStreamsTest.java b/connectors/command/src/test/java/org/apache/edgent/test/connectors/command/CommandStreamsTest.java index 6d68904..bf4bb65 100644 --- a/connectors/command/src/test/java/org/apache/edgent/test/connectors/command/CommandStreamsTest.java +++ b/connectors/command/src/test/java/org/apache/edgent/test/connectors/command/CommandStreamsTest.java @@ -67,7 +67,7 @@ public class CommandStreamsTest extends TopologyAbstractTest implements DirectTe private String[] mkCatStdInOutCmd() { if (isWindows()) { - return new String[] {"cmd", "/c", "findstr", "^"}; + return new String[] {"cmd", "/c", "findstr", ".*"}; } else { return new String[] {"cat"};
