From 47f20f1fd0e613a054fe0ab040c9137b6b82a51a Mon Sep 17 00:00:00 2001 From: Oleg Kuznetsov Date: Fri, 4 Mar 2022 05:59:59 +0300 Subject: [PATCH 1/4] Bump driver, added instances file environment argument --- pom.xml | 12 ++++--- .../TarantoolCartridgeContainer.java | 26 ++++++++++++--- .../TarantoolContainerClientHelper.java | 32 ++++++++----------- src/main/resources/Dockerfile | 4 ++- 4 files changed, 46 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 7a6effb..cdd4ab3 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 io.tarantool @@ -42,11 +43,11 @@ scm:git:git@github.com:tarantool/cartridge-java-testcontainers.git scm:git:git@github.com:tarantool/cartridge-java-testcontainers.git http://github.com/tarantool/cartridge-java-testcontainers/tree/master - v0.4.6 - + v0.4.6 + - 0.6.0 + 0.7.0 1.16.2 1.26 UTF-8 @@ -192,7 +193,8 @@ 2 ${project.name} - ${project.groupId}.${project.artifactId}.source + ${project.groupId}.${project.artifactId}.source + ${project.organization.name} diff --git a/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java b/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java index bf7fb2a..6136ede 100644 --- a/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java +++ b/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java @@ -101,6 +101,7 @@ public class TarantoolCartridgeContainer extends GenericContainer buildArgs) { + this(DOCKERFILE, "", instancesFile, topologyConfigurationFile, buildArgs); + } + /** * Create a container with default image and specified instances file from the classpath resources * @@ -163,11 +178,11 @@ public TarantoolCartridgeContainer(String dockerFile, String buildImageName, * @param instancesFile URL resource path to instances.yml relative in the classpath * @param topologyConfigurationFile URL resource path to a topology bootstrap script in the classpath * @param buildArgs a map of arguments that will be passed to docker ARG commands on image build. - * This values can be overriden by environment. + * This values can be overridden by environment. */ public TarantoolCartridgeContainer(String dockerFile, String buildImageName, String instancesFile, String topologyConfigurationFile, final Map buildArgs) { - this(withArguments(buildImage(dockerFile, buildImageName), buildArgs), + this(withArguments(buildImage(dockerFile, buildImageName), instancesFile, buildArgs), instancesFile, topologyConfigurationFile); } @@ -181,10 +196,12 @@ private TarantoolCartridgeContainer(Future image, String instancesFile, this.clientHelper = new TarantoolContainerClientHelper(this); } - private static Future withArguments(ImageFromDockerfile image, final Map buildArgs) { + private static Future withArguments(ImageFromDockerfile image, String instancesFile, + final Map buildArgs) { if (!buildArgs.isEmpty()) { image.withBuildArgs(buildArgs); } + for (String envVariable : Arrays.asList( ENV_TARANTOOL_VERSION, ENV_TARANTOOL_SERVER_USER, @@ -193,7 +210,8 @@ private static Future withArguments(ImageFromDockerfile image, final Map ENV_TARANTOOL_SERVER_GID, ENV_TARANTOOL_WORKDIR, ENV_TARANTOOL_RUNDIR, - ENV_TARANTOOL_DATADIR + ENV_TARANTOOL_DATADIR, + ENV_INSTANCES_FILE )) { String variableValue = System.getenv(envVariable); if (variableValue != null) { diff --git a/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java b/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java index 85a7be5..6cf1272 100644 --- a/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java +++ b/src/main/java/org/testcontainers/containers/TarantoolContainerClientHelper.java @@ -1,13 +1,10 @@ package org.testcontainers.containers; import io.tarantool.driver.api.TarantoolClient; -import io.tarantool.driver.api.TarantoolClientConfig; +import io.tarantool.driver.api.TarantoolClientFactory; import io.tarantool.driver.api.TarantoolResult; -import io.tarantool.driver.api.TarantoolServerAddress; +import io.tarantool.driver.api.retry.TarantoolRequestRetryPolicies; import io.tarantool.driver.api.tuple.TarantoolTuple; -import io.tarantool.driver.auth.SimpleTarantoolCredentials; -import io.tarantool.driver.auth.TarantoolCredentials; -import io.tarantool.driver.core.ClusterTarantoolTupleClient; import org.testcontainers.utility.MountableFile; import java.nio.file.Paths; @@ -35,25 +32,28 @@ public final class TarantoolContainerClientHelper { this.container = container; } - private TarantoolClient> - createClient(TarantoolClientConfig config, TarantoolServerAddress address) { - return new ClusterTarantoolTupleClient(config, address); + private TarantoolClient> createClient() { + return TarantoolClientFactory.createClient() + .withCredentials(container.getUsername(), container.getPassword()) + .withAddress(container.getHost(), container.getPort()) + .withRequestTimeout(5000) + .withRetryingByNumberOfAttempts(10, + TarantoolRequestRetryPolicies.retryNetworkErrors() + .or(TarantoolRequestRetryPolicies.retryNetworkErrors()), b -> b.withDelay(100)) + .build(); } /** * Configure or return an already configured client connected to a Cartridge router * - * @param config router instance client config - * @param address router host address * @return a configured client */ - public TarantoolClient> - getClient(TarantoolClientConfig config, TarantoolServerAddress address) { + public TarantoolClient> getClient() { if (!container.isRunning()) { throw new IllegalStateException("Cannot connect to Tarantool instance in a stopped container"); } if (clientHolder.get() == null) { - clientHolder.compareAndSet(null, createClient(config, address)); + clientHolder.compareAndSet(null, createClient()); } return clientHolder.get(); } @@ -74,10 +74,6 @@ public CompletableFuture> executeCommand(String command, Object... argum throw new IllegalStateException("Cannot execute commands in stopped container"); } - TarantoolCredentials credentials = new SimpleTarantoolCredentials( - container.getUsername(), container.getPassword()); - TarantoolServerAddress address = new TarantoolServerAddress(container.getHost(), container.getPort()); - TarantoolClientConfig config = TarantoolClientConfig.builder().withCredentials(credentials).build(); - return getClient(config, address).eval(command, Arrays.asList(arguments)); + return getClient().eval(command, Arrays.asList(arguments)); } } diff --git a/src/main/resources/Dockerfile b/src/main/resources/Dockerfile index 59f4b37..aa44f21 100644 --- a/src/main/resources/Dockerfile +++ b/src/main/resources/Dockerfile @@ -7,9 +7,11 @@ ARG TARANTOOL_SERVER_GID=1000 ARG TARANTOOL_WORKDIR="/app" ARG TARANTOOL_RUNDIR="/tmp/run" ARG TARANTOOL_DATADIR="/tmp/data" +ARG INSTANCES_FILE="./instances.yml" ENV TARANTOOL_WORKDIR=$TARANTOOL_WORKDIR ENV TARANTOOL_RUNDIR=$TARANTOOL_RUNDIR ENV TARANTOOL_DATADIR=$TARANTOOL_DATADIR +ENV INSTANCES_FILE=$INSTANCES_FILE RUN curl -L https://tarantool.io/installer.sh | VER=$TARANTOOL_VERSION /bin/bash -s -- --repo-only && \ yum -y install cmake make gcc gcc-c++ git unzip tarantool tarantool-devel cartridge-cli && \ yum clean all @@ -21,4 +23,4 @@ RUN cartridge version FROM tarantool-base AS cartridge-base WORKDIR $TARANTOOL_WORKDIR -CMD cartridge build && cartridge start --run-dir=$TARANTOOL_RUNDIR --data-dir=$TARANTOOL_DATADIR +CMD cartridge build && cartridge start --run-dir=$TARANTOOL_RUNDIR --data-dir=$TARANTOOL_DATADIR --cfg=$INSTANCES_FILE From d4e7108410b1cee2d974ee33ae4f72615a154043 Mon Sep 17 00:00:00 2001 From: Oleg Kuznetsov Date: Wed, 9 Mar 2022 13:30:36 +0300 Subject: [PATCH 2/4] Change instances file argument const name --- .../containers/TarantoolCartridgeContainer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java b/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java index 6136ede..01bdddd 100644 --- a/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java +++ b/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java @@ -101,7 +101,7 @@ public class TarantoolCartridgeContainer extends GenericContainer withArguments(ImageFromDockerfile image, String in ENV_TARANTOOL_WORKDIR, ENV_TARANTOOL_RUNDIR, ENV_TARANTOOL_DATADIR, - ENV_INSTANCES_FILE + ENV_TARANTOOL_INSTANCES_FILE )) { String variableValue = System.getenv(envVariable); if (variableValue != null) { From 90a38b0b1a6350de0b16233bd72e2a544433e64c Mon Sep 17 00:00:00 2001 From: Oleg Kuznetsov Date: Wed, 9 Mar 2022 14:22:41 +0300 Subject: [PATCH 3/4] Fixed Dockerfile --- src/main/resources/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/Dockerfile b/src/main/resources/Dockerfile index aa44f21..7e33c16 100644 --- a/src/main/resources/Dockerfile +++ b/src/main/resources/Dockerfile @@ -7,11 +7,11 @@ ARG TARANTOOL_SERVER_GID=1000 ARG TARANTOOL_WORKDIR="/app" ARG TARANTOOL_RUNDIR="/tmp/run" ARG TARANTOOL_DATADIR="/tmp/data" -ARG INSTANCES_FILE="./instances.yml" +ARG TARANTOOL_INSTANCES_FILE="./instances.yml" ENV TARANTOOL_WORKDIR=$TARANTOOL_WORKDIR ENV TARANTOOL_RUNDIR=$TARANTOOL_RUNDIR ENV TARANTOOL_DATADIR=$TARANTOOL_DATADIR -ENV INSTANCES_FILE=$INSTANCES_FILE +ENV TARANTOOL_INSTANCES_FILE=$TARANTOOL_INSTANCES_FILE RUN curl -L https://tarantool.io/installer.sh | VER=$TARANTOOL_VERSION /bin/bash -s -- --repo-only && \ yum -y install cmake make gcc gcc-c++ git unzip tarantool tarantool-devel cartridge-cli && \ yum clean all @@ -23,4 +23,4 @@ RUN cartridge version FROM tarantool-base AS cartridge-base WORKDIR $TARANTOOL_WORKDIR -CMD cartridge build && cartridge start --run-dir=$TARANTOOL_RUNDIR --data-dir=$TARANTOOL_DATADIR --cfg=$INSTANCES_FILE +CMD cartridge build && cartridge start --run-dir=$TARANTOOL_RUNDIR --data-dir=$TARANTOOL_DATADIR --cfg=$TARANTOOL_INSTANCES_FILE From 7be81186f01981f2302d0dd3a5f393bb48460ddb Mon Sep 17 00:00:00 2001 From: Oleg Kuznetsov Date: Wed, 9 Mar 2022 14:23:58 +0300 Subject: [PATCH 4/4] Fixed TarantoolCartridgeContainer --- .../testcontainers/containers/TarantoolCartridgeContainer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java b/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java index 01bdddd..c2c82f6 100644 --- a/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java +++ b/src/main/java/org/testcontainers/containers/TarantoolCartridgeContainer.java @@ -101,7 +101,7 @@ public class TarantoolCartridgeContainer extends GenericContainer