diff --git a/test-framework/arquillian/src/main/java/io/quarkus/arquillian/QuarkusDeployableContainer.java b/test-framework/arquillian/src/main/java/io/quarkus/arquillian/QuarkusDeployableContainer.java index 34720926f1f50..f52ff547af4ea 100644 --- a/test-framework/arquillian/src/main/java/io/quarkus/arquillian/QuarkusDeployableContainer.java +++ b/test-framework/arquillian/src/main/java/io/quarkus/arquillian/QuarkusDeployableContainer.java @@ -198,7 +198,10 @@ public void execute(BuildContext context) { } ProtocolMetaData metadata = new ProtocolMetaData(); - URI uri = URI.create(TestHTTPResourceManager.getUri()); + + String testUri = TestHTTPResourceManager.getUri(); + System.setProperty("test.url", testUri); + URI uri = URI.create(testUri); HTTPContext httpContext = new HTTPContext(uri.getHost(), uri.getPort()); // This is to work around https://github.com/arquillian/arquillian-core/issues/216 httpContext.add(new Servlet("dummy", "/")); diff --git a/test-framework/common/src/main/java/io/quarkus/test/common/NativeImageLauncher.java b/test-framework/common/src/main/java/io/quarkus/test/common/NativeImageLauncher.java index 925cdbc97d152..e76dc51b913c9 100644 --- a/test-framework/common/src/main/java/io/quarkus/test/common/NativeImageLauncher.java +++ b/test-framework/common/src/main/java/io/quarkus/test/common/NativeImageLauncher.java @@ -51,6 +51,8 @@ public NativeImageLauncher(Class testClass, int port, long imageWaitTime) { public void start() throws IOException { + System.setProperty("test.url", TestHTTPResourceManager.getUri()); + String path = System.getProperty("native.image.path"); if (path == null) { path = guessPath(testClass); diff --git a/test-framework/common/src/main/java/io/quarkus/test/common/http/TestHTTPResourceManager.java b/test-framework/common/src/main/java/io/quarkus/test/common/http/TestHTTPResourceManager.java index fd202f77137e7..6d80e24f349d9 100644 --- a/test-framework/common/src/main/java/io/quarkus/test/common/http/TestHTTPResourceManager.java +++ b/test-framework/common/src/main/java/io/quarkus/test/common/http/TestHTTPResourceManager.java @@ -17,9 +17,7 @@ public static String getUri() { String host = config.getOptionalValue("quarkus.http.host", String.class).orElse("localhost"); String port = config.getOptionalValue("quarkus.http.test-port", String.class).orElse("8081"); String contextPath = config.getOptionalValue("quarkus.servlet.context-path", String.class).orElse(""); - String testUrl = "http://" + host + ":" + port + contextPath; - System.setProperty("test.url", testUrl); - return testUrl; + return "http://" + host + ":" + port + contextPath; } public static void inject(Object testCase) { diff --git a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusDevModeTest.java b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusDevModeTest.java index 21db0d2c22ea2..84b59d8219b6a 100644 --- a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusDevModeTest.java +++ b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusDevModeTest.java @@ -339,15 +339,18 @@ void modifyFile(String name, Function mutator, Path path) { } public void sleepForFileChanges(Path path) { - long currentTime = System.currentTimeMillis(); try { + //we want to make sure the last modified time is larger than both the current time + //and the current last modified time. Some file systems only resolve file + //time to the nearest second, so this is necessary for dev mode to pick up the changes + long timeToBeat = Math.max(System.currentTimeMillis(), Files.getLastModifiedTime(path).toMillis()); for (;;) { Files.setLastModifiedTime(path, FileTime.fromMillis(System.currentTimeMillis())); long fm = Files.getLastModifiedTime(path).toMillis(); - if (fm > currentTime) { + Thread.sleep(10); + if (fm > timeToBeat) { return; } - Thread.sleep(50); } } catch (Exception e) { throw new RuntimeException(e); diff --git a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java index ca9157eebf9d2..f530f2b9bb333 100644 --- a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java +++ b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java @@ -273,6 +273,7 @@ public void execute(BuildContext context) { fail("The build was expected to fail"); } started = true; + System.setProperty("test.url", TestHTTPResourceManager.getUri()); Instance factory; try { factory = CDI.current() diff --git a/test-framework/junit5/src/main/java/io/quarkus/test/junit/QuarkusTestExtension.java b/test-framework/junit5/src/main/java/io/quarkus/test/junit/QuarkusTestExtension.java index 96220186cafb1..82570e5ffb0ad 100644 --- a/test-framework/junit5/src/main/java/io/quarkus/test/junit/QuarkusTestExtension.java +++ b/test-framework/junit5/src/main/java/io/quarkus/test/junit/QuarkusTestExtension.java @@ -228,6 +228,8 @@ public void execute(BuildContext context) { .build(); runtimeRunner.run(); + System.setProperty("test.url", TestHTTPResourceManager.getUri()); + Closeable shutdownTask = new Closeable() { @Override public void close() throws IOException {