From 3eb5795cf24be2dfabd40c35683638833bfe762f Mon Sep 17 00:00:00 2001 From: Geert Bevin Date: Sat, 30 Sep 2023 19:07:53 -0400 Subject: [PATCH] Make sure previous executors are closed cleanly --- .../operations/TestCreateRife2Operation.java | 72 ++++++++++--------- .../bld/operations/TestUberJarOperation.java | 21 +++--- 2 files changed, 50 insertions(+), 43 deletions(-) diff --git a/src/test/java/rife/bld/operations/TestCreateRife2Operation.java b/src/test/java/rife/bld/operations/TestCreateRife2Operation.java index 6aad8cd..3b4e0af 100644 --- a/src/test/java/rife/bld/operations/TestCreateRife2Operation.java +++ b/src/test/java/rife/bld/operations/TestCreateRife2Operation.java @@ -283,17 +283,19 @@ public class TestCreateRife2Operation { /myapp/src/test/resources""").matcher(FileUtils.generateDirectoryListing(tmp)).matches()); var run_operation = new RunOperation().fromProject(create_operation.project()); - var executor = Executors.newSingleThreadScheduledExecutor(); - var checked_url = new URL("http://localhost:8080"); - var check_result = new StringBuilder(); - executor.schedule(() -> { - try { - check_result.append(FileUtils.readString(checked_url)); - } catch (FileUtilsErrorException e) { - throw new RuntimeException(e); - } - }, 1, TimeUnit.SECONDS); - executor.schedule(() -> run_operation.process().destroy(), 2, TimeUnit.SECONDS); + StringBuilder check_result; + try (var executor = Executors.newSingleThreadScheduledExecutor()) { + var checked_url = new URL("http://localhost:8080"); + check_result = new StringBuilder(); + executor.schedule(() -> { + try { + check_result.append(FileUtils.readString(checked_url)); + } catch (FileUtilsErrorException e) { + throw new RuntimeException(e); + } + }, 1, TimeUnit.SECONDS); + executor.schedule(() -> run_operation.process().destroy(), 2, TimeUnit.SECONDS); + } assertThrows(ExitStatusException.class, run_operation::execute); assertTrue(check_result.toString().contains("

Hello World Myapp

")); @@ -533,17 +535,19 @@ public class TestCreateRife2Operation { /myapp/src/test/resources""").matcher(FileUtils.generateDirectoryListing(tmp)).matches()); var run_operation = new RunOperation().fromProject(create_operation.project()); - var executor = Executors.newSingleThreadScheduledExecutor(); - var checked_url = new URL("http://localhost:8080"); - var check_result = new StringBuilder(); - executor.schedule(() -> { - try { - check_result.append(FileUtils.readString(checked_url)); - } catch (FileUtilsErrorException e) { - throw new RuntimeException(e); - } - }, 1, TimeUnit.SECONDS); - executor.schedule(() -> run_operation.process().destroy(), 2, TimeUnit.SECONDS); + StringBuilder check_result; + try (var executor = Executors.newSingleThreadScheduledExecutor()) { + var checked_url = new URL("http://localhost:8080"); + check_result = new StringBuilder(); + executor.schedule(() -> { + try { + check_result.append(FileUtils.readString(checked_url)); + } catch (FileUtilsErrorException e) { + throw new RuntimeException(e); + } + }, 1, TimeUnit.SECONDS); + executor.schedule(() -> run_operation.process().destroy(), 2, TimeUnit.SECONDS); + } assertThrows(ExitStatusException.class, run_operation::execute); assertTrue(check_result.toString().contains("

Hello World Myapp

"), check_result.toString()); @@ -699,17 +703,19 @@ public class TestCreateRife2Operation { /myapp/src/test/resources""").matcher(FileUtils.generateDirectoryListing(tmp)).matches()); var run_operation = new RunOperation().fromProject(create_operation.project()); - var executor = Executors.newSingleThreadScheduledExecutor(); - var checked_url = new URL("http://localhost:8080"); - var check_result = new StringBuilder(); - executor.schedule(() -> { - try { - check_result.append(FileUtils.readString(checked_url)); - } catch (FileUtilsErrorException e) { - throw new RuntimeException(e); - } - }, 1, TimeUnit.SECONDS); - executor.schedule(() -> run_operation.process().destroy(), 2, TimeUnit.SECONDS); + StringBuilder check_result; + try (var executor = Executors.newSingleThreadScheduledExecutor()) { + var checked_url = new URL("http://localhost:8080"); + check_result = new StringBuilder(); + executor.schedule(() -> { + try { + check_result.append(FileUtils.readString(checked_url)); + } catch (FileUtilsErrorException e) { + throw new RuntimeException(e); + } + }, 1, TimeUnit.SECONDS); + executor.schedule(() -> run_operation.process().destroy(), 2, TimeUnit.SECONDS); + } assertThrows(ExitStatusException.class, run_operation::execute); assertTrue(check_result.toString().contains("

Hello World Myapp

")); diff --git a/src/test/java/rife/bld/operations/TestUberJarOperation.java b/src/test/java/rife/bld/operations/TestUberJarOperation.java index 1a022a0..d2e087e 100644 --- a/src/test/java/rife/bld/operations/TestUberJarOperation.java +++ b/src/test/java/rife/bld/operations/TestUberJarOperation.java @@ -162,16 +162,17 @@ public class TestUberJarOperation { var run_operation = new RunOperation() .javaOptions(List.of("-jar")) .mainClass(uberjar_file.getAbsolutePath()); - var executor = Executors.newSingleThreadScheduledExecutor(); - var checked_url = new URL("http://localhost:8080"); - executor.schedule(() -> { - try { - check_result.append(FileUtils.readString(checked_url)); - } catch (FileUtilsErrorException e) { - throw new RuntimeException(e); - } - }, 1, TimeUnit.SECONDS); - executor.schedule(() -> run_operation.process().destroy(), 2, TimeUnit.SECONDS); + try (var executor = Executors.newSingleThreadScheduledExecutor()) { + var checked_url = new URL("http://localhost:8080"); + executor.schedule(() -> { + try { + check_result.append(FileUtils.readString(checked_url)); + } catch (FileUtilsErrorException e) { + throw new RuntimeException(e); + } + }, 1, TimeUnit.SECONDS); + executor.schedule(() -> run_operation.process().destroy(), 2, TimeUnit.SECONDS); + } assertThrows(ExitStatusException.class, run_operation::execute); assertTrue(check_result.toString().contains("

Hello World App

"));