From 5c59f43bc901a144a967ef4e5bcd0dd7f826c474 Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Wed, 24 Nov 2021 13:07:45 +0000 Subject: [PATCH] [BAEL-44334] Enhance the process test to shutdown ExecutorService --- .../shell/JavaProcessUnitIntegrationTest.java | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/core-java-modules/core-java-os/src/test/java/com/baeldung/shell/JavaProcessUnitIntegrationTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/shell/JavaProcessUnitIntegrationTest.java index 53e9364207..9d24dd1578 100644 --- a/core-java-modules/core-java-os/src/test/java/com/baeldung/shell/JavaProcessUnitIntegrationTest.java +++ b/core-java-modules/core-java-os/src/test/java/com/baeldung/shell/JavaProcessUnitIntegrationTest.java @@ -1,12 +1,23 @@ -package com.baeldung.java.shell; +package com.baeldung.shell; +import org.junit.After; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; import java.util.function.Consumer; +import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; + public class JavaProcessUnitIntegrationTest { private static final boolean IS_WINDOWS = System.getProperty("os.name").toLowerCase().startsWith("windows"); @@ -29,6 +40,18 @@ public class JavaProcessUnitIntegrationTest { private String homeDirectory = System.getProperty("user.home"); + private ExecutorService executorService; + + @Before + public void setUp() { + executorService = Executors.newSingleThreadExecutor(); + } + + @After + public void tearDown() { + executorService.shutdown(); + } + @Test public void givenProcess_whenCreatingViaRuntime_shouldSucceed() throws Exception { Process process; @@ -38,9 +61,13 @@ public class JavaProcessUnitIntegrationTest { process = Runtime.getRuntime().exec(String.format("sh -c ls %s", homeDirectory)); } StreamGobbler streamGobbler = new StreamGobbler(process.getInputStream(), consumer); - Executors.newSingleThreadExecutor().submit(streamGobbler); + + Future future = executorService.submit(streamGobbler); int exitCode = process.waitFor(); - Assert.assertEquals(0, exitCode); + + // verify the stream output from the process + assertDoesNotThrow(() -> future.get(10, TimeUnit.SECONDS)); + assertEquals(0, exitCode); } @Test @@ -54,8 +81,12 @@ public class JavaProcessUnitIntegrationTest { builder.directory(new File(homeDirectory)); Process process = builder.start(); StreamGobbler streamGobbler = new StreamGobbler(process.getInputStream(), consumer); - Executors.newSingleThreadExecutor().submit(streamGobbler); + + Future future = executorService.submit(streamGobbler); int exitCode = process.waitFor(); - Assert.assertEquals(0, exitCode); + + // verify the stream output from the process + assertDoesNotThrow(() -> future.get(10, TimeUnit.SECONDS)); + assertEquals(0, exitCode); } }