From 6fa368c52d3b1bf1b220c69a954b685cc0459094 Mon Sep 17 00:00:00 2001 From: dsolomakha Date: Thu, 30 Apr 2020 16:01:29 -0400 Subject: [PATCH 1/2] pubsub emulator rule moved to a separate project --- pom.xml | 1 + spring-cloud-gcp-dependencies/pom.xml | 6 ++++ spring-cloud-gcp-pubsub-stream-binder/pom.xml | 6 ++++ ...bSubMessageChannelBinderEmulatorTests.java | 1 + spring-cloud-gcp-test-support/pom.xml | 29 +++++++++++++++++++ .../cloud/gcp/test}/PubSubEmulator.java | 15 +++++----- 6 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 spring-cloud-gcp-test-support/pom.xml rename {spring-cloud-gcp-pubsub-stream-binder/src/test/java/org/springframework/cloud/gcp/stream/binder/pubsub => spring-cloud-gcp-test-support/src/main/java/org/springframework/cloud/gcp/test}/PubSubEmulator.java (95%) diff --git a/pom.xml b/pom.xml index 68b7d02cde..78fd5fb14f 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-support diff --git a/spring-cloud-gcp-dependencies/pom.xml b/spring-cloud-gcp-dependencies/pom.xml index 062964db1c..ddcea2c774 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-support + ${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..d035b41d3c 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-support + ${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-support/pom.xml b/spring-cloud-gcp-test-support/pom.xml new file mode 100644 index 0000000000..877ff6ee7e --- /dev/null +++ b/spring-cloud-gcp-test-support/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + spring-cloud-gcp + org.springframework.cloud + 1.2.3.BUILD-SNAPSHOT + + + + spring-cloud-gcp-test-support + 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-support/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java similarity index 95% 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-support/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java index db7a39026c..676928f2e9 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-support/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) { @@ -219,7 +218,7 @@ private void createConfig() throws InterruptedException { 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?"); } } @@ -247,7 +246,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"); } /** From 10cdf4c3bc2b2626151acb28c636c88f683ab87c Mon Sep 17 00:00:00 2001 From: dsolomakha Date: Mon, 4 May 2020 19:01:01 -0400 Subject: [PATCH 2/2] PR comments --- pom.xml | 2 +- spring-cloud-gcp-dependencies/pom.xml | 2 +- spring-cloud-gcp-pubsub-stream-binder/pom.xml | 2 +- .../pom.xml | 2 +- .../org/springframework/cloud/gcp/test/PubSubEmulator.java | 5 ++--- 5 files changed, 6 insertions(+), 7 deletions(-) rename {spring-cloud-gcp-test-support => spring-cloud-gcp-test}/pom.xml (93%) rename {spring-cloud-gcp-test-support => spring-cloud-gcp-test}/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java (99%) diff --git a/pom.xml b/pom.xml index 78fd5fb14f..68b4de0954 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ spring-cloud-gcp-bigquery spring-cloud-gcp-security-firebase spring-cloud-gcp-secretmanager - spring-cloud-gcp-test-support + spring-cloud-gcp-test diff --git a/spring-cloud-gcp-dependencies/pom.xml b/spring-cloud-gcp-dependencies/pom.xml index ddcea2c774..0293fb28e0 100644 --- a/spring-cloud-gcp-dependencies/pom.xml +++ b/spring-cloud-gcp-dependencies/pom.xml @@ -193,7 +193,7 @@ org.springframework.cloud - spring-cloud-gcp-test-support + spring-cloud-gcp-test ${project.version} diff --git a/spring-cloud-gcp-pubsub-stream-binder/pom.xml b/spring-cloud-gcp-pubsub-stream-binder/pom.xml index d035b41d3c..8ad627426a 100644 --- a/spring-cloud-gcp-pubsub-stream-binder/pom.xml +++ b/spring-cloud-gcp-pubsub-stream-binder/pom.xml @@ -44,7 +44,7 @@ org.springframework.cloud - spring-cloud-gcp-test-support + spring-cloud-gcp-test ${project.version} test diff --git a/spring-cloud-gcp-test-support/pom.xml b/spring-cloud-gcp-test/pom.xml similarity index 93% rename from spring-cloud-gcp-test-support/pom.xml rename to spring-cloud-gcp-test/pom.xml index 877ff6ee7e..07859972f9 100644 --- a/spring-cloud-gcp-test-support/pom.xml +++ b/spring-cloud-gcp-test/pom.xml @@ -10,7 +10,7 @@ - spring-cloud-gcp-test-support + spring-cloud-gcp-test Spring Cloud GCP Test Support Provides tools for testing Spring Cloud GCP projects diff --git a/spring-cloud-gcp-test-support/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java b/spring-cloud-gcp-test/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java similarity index 99% rename from spring-cloud-gcp-test-support/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java rename to spring-cloud-gcp-test/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java index 676928f2e9..b92c7b85a5 100644 --- a/spring-cloud-gcp-test-support/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java +++ b/spring-cloud-gcp-test/src/main/java/org/springframework/cloud/gcp/test/PubSubEmulator.java @@ -187,7 +187,6 @@ private void startEmulator() throws IOException, InterruptedException { else { createConfig(); } - } /** @@ -213,7 +212,7 @@ 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); } @@ -233,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()