diff --git a/pom.xml b/pom.xml
index 68b7d02cde..68b4de0954 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,7 @@
spring-cloud-gcp-bigquery
spring-cloud-gcp-security-firebase
spring-cloud-gcp-secretmanager
+ spring-cloud-gcp-test
diff --git a/spring-cloud-gcp-dependencies/pom.xml b/spring-cloud-gcp-dependencies/pom.xml
index 062964db1c..0293fb28e0 100644
--- a/spring-cloud-gcp-dependencies/pom.xml
+++ b/spring-cloud-gcp-dependencies/pom.xml
@@ -191,6 +191,12 @@
${project.version}
+
+ org.springframework.cloud
+ spring-cloud-gcp-test
+ ${project.version}
+
+
com.google.cloud.sql
diff --git a/spring-cloud-gcp-pubsub-stream-binder/pom.xml b/spring-cloud-gcp-pubsub-stream-binder/pom.xml
index e6da5ba688..8ad627426a 100644
--- a/spring-cloud-gcp-pubsub-stream-binder/pom.xml
+++ b/spring-cloud-gcp-pubsub-stream-binder/pom.xml
@@ -42,5 +42,11 @@
3.1.0.BUILD-SNAPSHOT
test
+
+ org.springframework.cloud
+ spring-cloud-gcp-test
+ ${project.version}
+ test
+
diff --git a/spring-cloud-gcp-pubsub-stream-binder/src/test/java/org/springframework/cloud/gcp/stream/binder/pubsub/PubSubMessageChannelBinderEmulatorTests.java b/spring-cloud-gcp-pubsub-stream-binder/src/test/java/org/springframework/cloud/gcp/stream/binder/pubsub/PubSubMessageChannelBinderEmulatorTests.java
index c85a74bc95..cd0b2a156f 100644
--- a/spring-cloud-gcp-pubsub-stream-binder/src/test/java/org/springframework/cloud/gcp/stream/binder/pubsub/PubSubMessageChannelBinderEmulatorTests.java
+++ b/spring-cloud-gcp-pubsub-stream-binder/src/test/java/org/springframework/cloud/gcp/stream/binder/pubsub/PubSubMessageChannelBinderEmulatorTests.java
@@ -22,6 +22,7 @@
import org.springframework.cloud.gcp.stream.binder.pubsub.properties.PubSubConsumerProperties;
import org.springframework.cloud.gcp.stream.binder.pubsub.properties.PubSubProducerProperties;
+import org.springframework.cloud.gcp.test.PubSubEmulator;
import org.springframework.cloud.stream.binder.AbstractBinderTests;
import org.springframework.cloud.stream.binder.ExtendedConsumerProperties;
import org.springframework.cloud.stream.binder.ExtendedProducerProperties;
diff --git a/spring-cloud-gcp-test/pom.xml b/spring-cloud-gcp-test/pom.xml
new file mode 100644
index 0000000000..07859972f9
--- /dev/null
+++ b/spring-cloud-gcp-test/pom.xml
@@ -0,0 +1,29 @@
+
+
+ 4.0.0
+
+ spring-cloud-gcp
+ org.springframework.cloud
+ 1.2.3.BUILD-SNAPSHOT
+
+
+
+ spring-cloud-gcp-test
+ Spring Cloud GCP Test Support
+ Provides tools for testing Spring Cloud GCP projects
+
+
+ junit
+ junit
+
+
+
+ org.springframework
+ spring-jcl
+ compile
+
+
+
+
diff --git a/spring-cloud-gcp-pubsub-stream-binder/src/test/java/org/springframework/cloud/gcp/stream/binder/pubsub/PubSubEmulator.java b/spring-cloud-gcp-test/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java
similarity index 94%
rename from spring-cloud-gcp-pubsub-stream-binder/src/test/java/org/springframework/cloud/gcp/stream/binder/pubsub/PubSubEmulator.java
rename to spring-cloud-gcp-test/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java
index db7a39026c..b92c7b85a5 100644
--- a/spring-cloud-gcp-pubsub-stream-binder/src/test/java/org/springframework/cloud/gcp/stream/binder/pubsub/PubSubEmulator.java
+++ b/spring-cloud-gcp-test/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.cloud.gcp.stream.binder.pubsub;
+package org.springframework.cloud.gcp.test;
import java.io.BufferedReader;
import java.io.IOException;
@@ -33,11 +33,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Assume;
import org.junit.rules.ExternalResource;
-import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeTrue;
-
/**
* Rule for instantiating and tearing down a Pub/Sub emulator instance.
*
@@ -87,7 +86,7 @@ public PubSubEmulator() {
@Override
protected void before() throws IOException, InterruptedException {
- assumeTrue("PubSubEmulator rule disabled. Please enable with -Dit.pubsub-emulator.", this.enableTests);
+ Assume.assumeTrue("PubSubEmulator rule disabled. Please enable with -Dit.pubsub-emulator.", this.enableTests);
startEmulator();
determineHostPort();
@@ -178,7 +177,7 @@ private void startEmulator() throws IOException, InterruptedException {
.start();
}
catch (IOException ex) {
- fail("Gcloud not found; leaving host/port uninitialized.");
+ Assert.fail("Gcloud not found; leaving host/port uninitialized.");
}
if (configPresent) {
@@ -188,7 +187,6 @@ private void startEmulator() throws IOException, InterruptedException {
else {
createConfig();
}
-
}
/**
@@ -214,12 +212,12 @@ private void determineHostPort() throws IOException, InterruptedException {
* to fail the test.
*/
private void createConfig() throws InterruptedException {
- int attempts = 10;
+ int attempts = 100;
while (!Files.exists(EMULATOR_CONFIG_PATH) && --attempts >= 0) {
Thread.sleep(1000);
}
if (attempts < 0) {
- fail(
+ Assert.fail(
"Emulator could not be configured due to missing env.yaml. Are PubSub and beta tools installed?");
}
}
@@ -234,7 +232,7 @@ private void createConfig() throws InterruptedException {
private void updateConfig(WatchService watchService) throws InterruptedException {
int attempts = 10;
while (--attempts >= 0) {
- WatchKey key = watchService.poll(100, TimeUnit.MILLISECONDS);
+ WatchKey key = watchService.poll(1, TimeUnit.SECONDS);
if (key != null) {
Optional configFilePath = key.pollEvents().stream()
@@ -247,7 +245,7 @@ private void updateConfig(WatchService watchService) throws InterruptedException
}
}
- fail("Configuration file update could not be detected");
+ Assert.fail("Configuration file update could not be detected");
}
/**