diff --git a/spring-cloud-function-adapters/spring-cloud-function-grpc/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-grpc/pom.xml
index bec41efae..760e8ee29 100644
--- a/spring-cloud-function-adapters/spring-cloud-function-grpc/pom.xml
+++ b/spring-cloud-function-adapters/spring-cloud-function-grpc/pom.xml
@@ -55,6 +55,11 @@
spring-boot-starter-test
test
+
+ org.awaitility
+ awaitility
+ test
+
diff --git a/spring-cloud-function-adapters/spring-cloud-function-grpc/src/test/java/org/springframework/cloud/function/grpc/GrpcInteractionTests.java b/spring-cloud-function-adapters/spring-cloud-function-grpc/src/test/java/org/springframework/cloud/function/grpc/GrpcInteractionTests.java
index b97a5e529..ef0d66c7b 100644
--- a/spring-cloud-function-adapters/spring-cloud-function-grpc/src/test/java/org/springframework/cloud/function/grpc/GrpcInteractionTests.java
+++ b/spring-cloud-function-adapters/spring-cloud-function-grpc/src/test/java/org/springframework/cloud/function/grpc/GrpcInteractionTests.java
@@ -41,6 +41,7 @@ import org.springframework.messaging.support.MessageBuilder;
import org.springframework.util.MimeTypeUtils;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
import static org.junit.jupiter.api.Assertions.fail;
/**
@@ -306,14 +307,15 @@ public class GrpcInteractionTests {
}
private int patientlyGetPort(ConfigurableApplicationContext context) throws InterruptedException {
- Thread.sleep(500);
- String port = context.getEnvironment().getProperty("local.grpc.server.port");
- if (port == null) {
- Thread.sleep(500);
- port = context.getEnvironment().getProperty("local.grpc.server.port");
- assertThat(port).as("Unable to get 'local.grpc.server.port' - server may not have started up").isNotNull();
- }
- return Integer.valueOf(port);
+ await()
+ .pollDelay(Duration.ofMillis(500))
+ .pollInterval(Duration.ofMillis(500))
+ .atMost(Duration.ofSeconds(3))
+ .untilAsserted(() -> {
+ String port = context.getEnvironment().getProperty("local.grpc.server.port");
+ assertThat(port).as("Unable to get 'local.grpc.server.port' - server may not have started up").isNotEmpty();
+ });
+ return Integer.valueOf(context.getEnvironment().getProperty("local.grpc.server.port"));
}
@EnableAutoConfiguration
diff --git a/spring-cloud-function-web/pom.xml b/spring-cloud-function-web/pom.xml
index d22873fde..8d2866128 100644
--- a/spring-cloud-function-web/pom.xml
+++ b/spring-cloud-function-web/pom.xml
@@ -40,6 +40,11 @@
org.springframework.cloud
spring-cloud-function-context
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
commons-logging
commons-logging
@@ -57,9 +62,9 @@
test
- org.springframework.boot
- spring-boot-configuration-processor
- true
+ org.awaitility
+ awaitility
+ test
diff --git a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializerTests.java b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializerTests.java
index c140de244..ea24746e1 100644
--- a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializerTests.java
+++ b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializerTests.java
@@ -17,6 +17,7 @@
package org.springframework.cloud.function.web.function;
import java.net.URI;
+import java.time.Duration;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -37,6 +38,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
/**
*
@@ -106,14 +108,15 @@ public class FunctionEndpointInitializerTests {
private int startServerAndWaitForPort(Class> primaryAppConfig) throws InterruptedException {
ConfigurableApplicationContext context = FunctionalSpringApplication.run(primaryAppConfig, "--server.port=0");
- Thread.sleep(500);
- String port = context.getEnvironment().getProperty("local.server.port");
- if (port == null) {
- Thread.sleep(500);
- port = context.getEnvironment().getProperty("local.server.port");
- assertThat(port).as("Unable to get 'local.server.port' - server may not have started up").isNotNull();
- }
- return Integer.valueOf(port);
+ await()
+ .pollDelay(Duration.ofMillis(500))
+ .pollInterval(Duration.ofMillis(500))
+ .atMost(Duration.ofSeconds(3))
+ .untilAsserted(() -> {
+ String port = context.getEnvironment().getProperty("local.server.port");
+ assertThat(port).as("Unable to get 'local.server.port' - server may not have started up").isNotEmpty();
+ });
+ return Integer.valueOf(context.getEnvironment().getProperty("local.server.port"));
}
@SpringBootConfiguration