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"); } /**