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..7446504 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,19 +28,27 @@ 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() + .withRequestTimeout(5000) + .withRetryingByNumberOfAttempts(15, + TarantoolRequestRetryPolicies.retryNetworkErrors(), + b -> b.withDelay(100)); + } + + 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) - .withRetryingByNumberOfAttempts(15, - TarantoolRequestRetryPolicies.retryNetworkErrors(), - b -> b.withDelay(100)) .build(); }