[BAEL-44334] Enhance the process test to shutdown ExecutorService
This commit is contained in:
parent
679df8513e
commit
5c59f43bc9
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue