From 618a80472ec9c10702b79d88fc13ca14d7376e27 Mon Sep 17 00:00:00 2001 From: Oleg Kuznetsov Date: Wed, 18 May 2022 18:20:54 +0300 Subject: [PATCH 1/2] Added clientBuilder to TarantoolContainer constructor --- .../containers/TarantoolContainer.java | 64 +++++++++++++++++++ .../TarantoolContainerClientHelper.java | 11 +++- 2 files changed, 74 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/testcontainers/containers/TarantoolContainer.java b/src/main/java/org/testcontainers/containers/TarantoolContainer.java index 214f4ed..59a980b 100644 --- a/src/main/java/org/testcontainers/containers/TarantoolContainer.java +++ b/src/main/java/org/testcontainers/containers/TarantoolContainer.java @@ -1,6 +1,7 @@ package org.testcontainers.containers; import com.github.dockerjava.api.command.InspectContainerResponse; +import io.tarantool.driver.api.TarantoolClientBuilder; import org.testcontainers.containers.wait.strategy.Wait; import java.net.URL; @@ -47,25 +48,88 @@ public class TarantoolContainer extends GenericContainer private final TarantoolContainerClientHelper clientHelper; + /** + * Constructor for {@link TarantoolContainer} + */ public TarantoolContainer() { this(String.format("%s:%s", TARANTOOL_IMAGE, DEFAULT_IMAGE_VERSION)); } + /** + * Constructor for {@link TarantoolContainer} + * + * @param clientBuilder client builder with custom client settings for setting up container + */ + public TarantoolContainer(TarantoolClientBuilder clientBuilder) { + this(String.format("%s:%s", TARANTOOL_IMAGE, DEFAULT_IMAGE_VERSION), clientBuilder); + } + + /** + * Constructor for {@link TarantoolContainer} + * + * @param dockerImageName docker image name for container creating + */ public TarantoolContainer(String dockerImageName) { super(dockerImageName); clientHelper = new TarantoolContainerClientHelper(this); } + /** + * Constructor for {@link TarantoolContainer} + * + * @param dockerImageName docker image name for container creating + * @param clientBuilder client builder with custom client settings for setting up container + */ + public TarantoolContainer(String dockerImageName, + TarantoolClientBuilder clientBuilder) { + super(dockerImageName); + clientHelper = new TarantoolContainerClientHelper(this, clientBuilder); + } + + /** + * Constructor for {@link TarantoolContainer} + * + * @param tarantoolImageParams params for cached image creating + */ public TarantoolContainer(TarantoolImageParams tarantoolImageParams) { super(TarantoolContainerImageHelper.getImage(tarantoolImageParams)); clientHelper = new TarantoolContainerClientHelper(this); } + /** + * Constructor for {@link TarantoolContainer} + * + * @param tarantoolImageParams params for cached image creating + * @param clientBuilder client builder with custom client settings for setting up container + */ + public TarantoolContainer(TarantoolImageParams tarantoolImageParams, + TarantoolClientBuilder clientBuilder) { + super(TarantoolContainerImageHelper.getImage(tarantoolImageParams)); + clientHelper = new TarantoolContainerClientHelper(this, clientBuilder); + } + + /** + * Constructor for {@link TarantoolContainer} + * + * @param image future with image name + */ public TarantoolContainer(Future image) { super(image); clientHelper = new TarantoolContainerClientHelper(this); } + /** + * Constructor for {@link TarantoolContainer} + * + * @param image future with image name + * @param clientBuilder client builder with custom client settings for setting up container + */ + public TarantoolContainer(Future image, + TarantoolClientBuilder clientBuilder) { + super(image); + clientHelper = new TarantoolContainerClientHelper(this, clientBuilder); + } + /** * Use fixed ports binding. * Defaults to false. diff --git a/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java b/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java index bd4f12b..b91c61f 100644 --- a/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java +++ b/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java @@ -1,6 +1,7 @@ package org.testcontainers.containers; import io.tarantool.driver.api.TarantoolClient; +import io.tarantool.driver.api.TarantoolClientBuilder; import io.tarantool.driver.api.TarantoolClientFactory; import io.tarantool.driver.api.TarantoolResult; import io.tarantool.driver.api.retry.TarantoolRequestRetryPolicies; @@ -27,13 +28,21 @@ public final class TarantoolContainerClientHelper { private final TarantoolContainerOperations> container; private final AtomicReference>> clientHolder = new AtomicReference<>(); + private final TarantoolClientBuilder clientBuilder; TarantoolContainerClientHelper(TarantoolContainerOperations> container) { this.container = container; + this.clientBuilder = TarantoolClientFactory.createClient(); + } + + TarantoolContainerClientHelper(TarantoolContainerOperations> container, + TarantoolClientBuilder clientBuilder) { + this.container = container; + this.clientBuilder = clientBuilder; } private TarantoolClient> createClient() { - return TarantoolClientFactory.createClient() + return clientBuilder .withCredentials(container.getUsername(), container.getPassword()) .withAddress(container.getHost(), container.getPort()) .withRequestTimeout(5000) From 518a880fde0aa3753ac2630a39a5dce71d10cf26 Mon Sep 17 00:00:00 2001 From: Oleg Kuznetsov Date: Wed, 18 May 2022 18:44:16 +0300 Subject: [PATCH 2/2] Fix settings overriding --- .../containers/TarantoolContainerClientHelper.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java b/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java index b91c61f..7446504 100644 --- a/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java +++ b/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java @@ -32,7 +32,11 @@ public final class TarantoolContainerClientHelper { TarantoolContainerClientHelper(TarantoolContainerOperations> container) { this.container = container; - this.clientBuilder = TarantoolClientFactory.createClient(); + this.clientBuilder = TarantoolClientFactory.createClient() + .withRequestTimeout(5000) + .withRetryingByNumberOfAttempts(15, + TarantoolRequestRetryPolicies.retryNetworkErrors(), + b -> b.withDelay(100)); } TarantoolContainerClientHelper(TarantoolContainerOperations> container, @@ -45,10 +49,6 @@ private TarantoolClient> createC return clientBuilder .withCredentials(container.getUsername(), container.getPassword()) .withAddress(container.getHost(), container.getPort()) - .withRequestTimeout(5000) - .withRetryingByNumberOfAttempts(15, - TarantoolRequestRetryPolicies.retryNetworkErrors(), - b -> b.withDelay(100)) .build(); }