From 4a8e07f8fd8ad4bf03429b49f823f3e5f765c5c8 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Thu, 31 Oct 2019 14:22:01 -0600 Subject: [PATCH] DATACOUCH-479 - Fix issue with testcontainers usage. After updating the POM to not have a fixed testcontainers version, we discovered the tests were failing with later versions of testcontainers. It seems that they updated how they did WaitStrategy, deprecating the old way, so our WaitStrategy was not being called. That means no setup was done to the cluster (passwords, buckets, etc...). Simple fix was to move to the new interface. --- .../data/couchbase/CouchbaseWaitStrategy.java | 11 ++++++----- .../data/couchbase/TestContainerResource.java | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/springframework/data/couchbase/CouchbaseWaitStrategy.java b/src/test/java/org/springframework/data/couchbase/CouchbaseWaitStrategy.java index 12f0c37d..f82fb7ea 100644 --- a/src/test/java/org/springframework/data/couchbase/CouchbaseWaitStrategy.java +++ b/src/test/java/org/springframework/data/couchbase/CouchbaseWaitStrategy.java @@ -7,11 +7,11 @@ import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import com.couchbase.client.java.util.features.Version; -import org.rnorth.ducttape.ratelimits.RateLimiterBuilder; import org.rnorth.ducttape.unreliables.Unreliables; import org.testcontainers.containers.Container; import org.testcontainers.containers.GenericContainer; -import org.testcontainers.containers.wait.WaitStrategy; +import org.testcontainers.containers.wait.strategy.WaitStrategy; +import org.testcontainers.containers.wait.strategy.WaitStrategyTarget; /** * WaitStrategy for Couchbase containers which makes the Server node is @@ -21,8 +21,10 @@ public class CouchbaseWaitStrategy implements WaitStrategy { private Duration startupTimeout = Duration.of(60, SECONDS); private final Boolean rbacEnabled; + private final Container container; - public CouchbaseWaitStrategy(String serverVersion) { + public CouchbaseWaitStrategy(String serverVersion, GenericContainer container) { + this.container = container; Version version = Version.parseVersion(serverVersion); rbacEnabled = version.major() >= 5; } @@ -40,11 +42,10 @@ public class CouchbaseWaitStrategy implements WaitStrategy { } @Override - public void waitUntilReady(GenericContainer container) { + public void waitUntilReady(WaitStrategyTarget target) { try { checkService(8091, "/pools"); Container.ExecResult result; - if (rbacEnabled) { result = container.execInContainer("/opt/couchbase/bin/couchbase-cli", "cluster-init", diff --git a/src/test/java/org/springframework/data/couchbase/TestContainerResource.java b/src/test/java/org/springframework/data/couchbase/TestContainerResource.java index 72be7338..f589c285 100644 --- a/src/test/java/org/springframework/data/couchbase/TestContainerResource.java +++ b/src/test/java/org/springframework/data/couchbase/TestContainerResource.java @@ -44,7 +44,7 @@ public class TestContainerResource extends ExternalResource { .withFixedExposedPort(11210, 11210) .withFixedExposedPort(11211, 11211) .withFixedExposedPort(11207, 11207); - couchbaseContainer.waitingFor(new CouchbaseWaitStrategy(serverVersion)); + couchbaseContainer.waitingFor(new CouchbaseWaitStrategy(serverVersion, couchbaseContainer)); couchbaseContainer.start(); }