Skip to content

Commit 8e032bb

Browse files
committed
feat(testcontainers): edit vshard
1 parent 81234ce commit 8e032bb

File tree

9 files changed

+103
-43
lines changed

9 files changed

+103
-43
lines changed

tarantool-client/src/test/java/io/tarantool/client/integration/TarantoolCrudClientTest.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@
4545
import org.msgpack.value.ValueFactory;
4646
import org.slf4j.LoggerFactory;
4747
import org.testcontainers.containers.ClusterContainer;
48+
import org.testcontainers.containers.Network;
4849
import org.testcontainers.containers.TarantoolCartridgeContainer;
4950
import org.testcontainers.containers.VshardClusterContainer;
5051
import org.testcontainers.containers.output.Slf4jLogConsumer;
52+
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
5153
import org.testcontainers.junit.jupiter.Testcontainers;
5254

5355
import static io.tarantool.client.crud.ConditionOperator.EQ;
@@ -102,6 +104,7 @@ public class TarantoolCrudClientTest extends BaseTest {
102104
private static TarantoolCartridgeContainer cartridgeContainer;
103105
private static VshardClusterContainer vshardClusterContainer;
104106
private static ClusterContainer clusterContainer;
107+
private static final Network NETWORK = Network.newNetwork();
105108
public static final String ROUTER_1 = "ROUTER_1";
106109
public static final String ROUTER_2 = "ROUTER_2";
107110
private static TarantoolCrudClient client;
@@ -131,16 +134,19 @@ public static void setUp() throws Exception {
131134
if (!isCartridgeAvailable()) {
132135
vshardClusterContainer =
133136
new VshardClusterContainer(
134-
"vshard_cluster/Dockerfile",
135-
dockerRegistry + "vshard-cluster-java",
136-
"vshard_cluster/instances.yaml",
137-
"vshard_cluster/config.yaml",
138-
"tarantool/tarantool");
137+
"vshard_cluster/Dockerfile",
138+
dockerRegistry + "vshard-cluster-java",
139+
"vshard_cluster/instances.yaml",
140+
"vshard_cluster/config.yaml",
141+
"tarantool/tarantool")
142+
.withNetwork(NETWORK)
143+
.withWaitingStrategy(new HostPortWaitStrategy().forPorts(3301));
139144

140145
if (!vshardClusterContainer.isRunning()) {
141146
vshardClusterContainer
142147
.withCreateContainerCmdModifier(cmd -> cmd.withUser("root"))
143-
.withPrivilegedMode(true);
148+
.withPrivilegedMode(true)
149+
.withStartupTimeout(Duration.ofMinutes(5));
144150
vshardClusterContainer.start();
145151
}
146152
clusterContainer = vshardClusterContainer;

tarantool-shared-resources/vshard_cluster/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ COPY "cluster" "$TARANTOOL_WORKDIR"
1010

1111
# install dependencies
1212
RUN apt-get -y update && \
13-
apt-get -y install build-essential cmake make gcc git unzip cartridge-cli && \
13+
apt-get -y install build-essential cmake make gcc git unzip && \
1414
apt-get -y clean
1515

1616
CMD tt init && tt build && tt start && sleep infinity

tarantool-spring-data/tarantool-spring-data-27/src/test/java/io/tarantool/spring/data27/integration/BaseIntegrationTest.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import org.junit.jupiter.api.Timeout;
1515
import org.slf4j.LoggerFactory;
1616
import org.testcontainers.containers.ClusterContainer;
17+
import org.testcontainers.containers.Network;
1718
import org.testcontainers.containers.TarantoolCartridgeContainer;
1819
import org.testcontainers.containers.VshardClusterContainer;
1920
import org.testcontainers.containers.output.Slf4jLogConsumer;
21+
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
2022

2123
import static io.tarantool.spring.data.utils.Constants.DEFAULT_PROPERTY_FILE_NAME;
2224
import static io.tarantool.spring.data27.utils.TarantoolTestSupport.DEFAULT_TEST_PROPERTY_DIR;
@@ -28,6 +30,8 @@ public abstract class BaseIntegrationTest {
2830

2931
protected static ClusterContainer clusterContainer;
3032

33+
private static final Network NETWORK = Network.newNetwork();
34+
3135
private static final String dockerRegistry =
3236
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "");
3337

@@ -41,14 +45,18 @@ private static void configureContainer() {
4145
if (!isCartridgeAvailable()) {
4246
VshardClusterContainer vshardClusterContainer =
4347
new VshardClusterContainer(
44-
"vshard_cluster/Dockerfile",
45-
dockerRegistry + "vshard-cluster-java",
46-
"vshard_cluster/instances.yaml",
47-
"vshard_cluster/config.yaml",
48-
"tarantool/tarantool");
48+
"vshard_cluster/Dockerfile",
49+
dockerRegistry + "vshard-cluster-java",
50+
"vshard_cluster/instances.yaml",
51+
"vshard_cluster/config.yaml",
52+
"tarantool/tarantool")
53+
.withNetwork(NETWORK)
54+
.withWaitingStrategy(new HostPortWaitStrategy().forPorts(3301));
4955

5056
if (!vshardClusterContainer.isRunning()) {
51-
vshardClusterContainer.withPrivilegedMode(true);
57+
vshardClusterContainer
58+
.withPrivilegedMode(true)
59+
.withStartupTimeout(Duration.ofMinutes(5));
5260
vshardClusterContainer.start();
5361
}
5462
clusterContainer = vshardClusterContainer;

tarantool-spring-data/tarantool-spring-data-31/src/test/java/io/tarantool/spring/data31/integration/BaseIntegrationTest.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import org.junit.jupiter.api.Timeout;
1515
import org.slf4j.LoggerFactory;
1616
import org.testcontainers.containers.ClusterContainer;
17+
import org.testcontainers.containers.Network;
1718
import org.testcontainers.containers.TarantoolCartridgeContainer;
1819
import org.testcontainers.containers.VshardClusterContainer;
1920
import org.testcontainers.containers.output.Slf4jLogConsumer;
21+
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
2022

2123
import static io.tarantool.spring.data.utils.Constants.DEFAULT_PROPERTY_FILE_NAME;
2224
import static io.tarantool.spring.data31.utils.TarantoolTestSupport.DEFAULT_TEST_PROPERTY_DIR;
@@ -28,6 +30,8 @@ public abstract class BaseIntegrationTest {
2830

2931
protected static ClusterContainer clusterContainer;
3032

33+
private static final Network NETWORK = Network.newNetwork();
34+
3135
private static final String dockerRegistry =
3236
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "");
3337

@@ -41,14 +45,18 @@ private static void configureContainer() {
4145
if (!isCartridgeAvailable()) {
4246
VshardClusterContainer vshardClusterContainer =
4347
new VshardClusterContainer(
44-
"vshard_cluster/Dockerfile",
45-
dockerRegistry + "vshard-cluster-java",
46-
"vshard_cluster/instances.yaml",
47-
"vshard_cluster/config.yaml",
48-
"tarantool/tarantool");
48+
"vshard_cluster/Dockerfile",
49+
dockerRegistry + "vshard-cluster-java",
50+
"vshard_cluster/instances.yaml",
51+
"vshard_cluster/config.yaml",
52+
"tarantool/tarantool")
53+
.withNetwork(NETWORK)
54+
.withWaitingStrategy(new HostPortWaitStrategy().forPorts(3301));
4955

5056
if (!vshardClusterContainer.isRunning()) {
51-
vshardClusterContainer.withPrivilegedMode(true);
57+
vshardClusterContainer
58+
.withPrivilegedMode(true)
59+
.withStartupTimeout(Duration.ofMinutes(5));
5260
vshardClusterContainer.start();
5361
}
5462
clusterContainer = vshardClusterContainer;

tarantool-spring-data/tarantool-spring-data-32/src/test/java/io/tarantool/spring/data32/integration/BaseIntegrationTest.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import org.junit.jupiter.api.Timeout;
1515
import org.slf4j.LoggerFactory;
1616
import org.testcontainers.containers.ClusterContainer;
17+
import org.testcontainers.containers.Network;
1718
import org.testcontainers.containers.TarantoolCartridgeContainer;
1819
import org.testcontainers.containers.VshardClusterContainer;
1920
import org.testcontainers.containers.output.Slf4jLogConsumer;
21+
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
2022

2123
import static io.tarantool.spring.data.utils.Constants.DEFAULT_PROPERTY_FILE_NAME;
2224
import static io.tarantool.spring.data32.utils.TarantoolTestSupport.DEFAULT_TEST_PROPERTY_DIR;
@@ -28,6 +30,8 @@ public abstract class BaseIntegrationTest {
2830

2931
protected static ClusterContainer clusterContainer;
3032

33+
private static final Network NETWORK = Network.newNetwork();
34+
3135
private static final String dockerRegistry =
3236
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "");
3337

@@ -41,14 +45,18 @@ private static void configureContainer() {
4145
if (!isCartridgeAvailable()) {
4246
VshardClusterContainer vshardClusterContainer =
4347
new VshardClusterContainer(
44-
"vshard_cluster/Dockerfile",
45-
dockerRegistry + "vshard-cluster-java",
46-
"vshard_cluster/instances.yaml",
47-
"vshard_cluster/config.yaml",
48-
"tarantool/tarantool");
48+
"vshard_cluster/Dockerfile",
49+
dockerRegistry + "vshard-cluster-java",
50+
"vshard_cluster/instances.yaml",
51+
"vshard_cluster/config.yaml",
52+
"tarantool/tarantool")
53+
.withNetwork(NETWORK)
54+
.withWaitingStrategy(new HostPortWaitStrategy().forPorts(3301));
4955

5056
if (!vshardClusterContainer.isRunning()) {
51-
vshardClusterContainer.withPrivilegedMode(true);
57+
vshardClusterContainer
58+
.withPrivilegedMode(true)
59+
.withStartupTimeout(Duration.ofMinutes(5));
5260
vshardClusterContainer.start();
5361
}
5462
clusterContainer = vshardClusterContainer;

tarantool-spring-data/tarantool-spring-data-33/src/test/java/io/tarantool/spring/data33/integration/BaseIntegrationTest.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import org.junit.jupiter.api.Timeout;
1515
import org.slf4j.LoggerFactory;
1616
import org.testcontainers.containers.ClusterContainer;
17+
import org.testcontainers.containers.Network;
1718
import org.testcontainers.containers.TarantoolCartridgeContainer;
1819
import org.testcontainers.containers.VshardClusterContainer;
1920
import org.testcontainers.containers.output.Slf4jLogConsumer;
21+
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
2022

2123
import static io.tarantool.spring.data.utils.Constants.DEFAULT_PROPERTY_FILE_NAME;
2224
import static io.tarantool.spring.data33.utils.TarantoolTestSupport.DEFAULT_TEST_PROPERTY_DIR;
@@ -28,6 +30,8 @@ public abstract class BaseIntegrationTest {
2830

2931
protected static ClusterContainer clusterContainer;
3032

33+
private static final Network NETWORK = Network.newNetwork();
34+
3135
private static final String dockerRegistry =
3236
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "");
3337

@@ -41,14 +45,18 @@ private static void configureContainer() {
4145
if (!isCartridgeAvailable()) {
4246
VshardClusterContainer vshardClusterContainer =
4347
new VshardClusterContainer(
44-
"vshard_cluster/Dockerfile",
45-
dockerRegistry + "vshard-cluster-java",
46-
"vshard_cluster/instances.yaml",
47-
"vshard_cluster/config.yaml",
48-
"tarantool/tarantool");
48+
"vshard_cluster/Dockerfile",
49+
dockerRegistry + "vshard-cluster-java",
50+
"vshard_cluster/instances.yaml",
51+
"vshard_cluster/config.yaml",
52+
"tarantool/tarantool")
53+
.withNetwork(NETWORK)
54+
.withWaitingStrategy(new HostPortWaitStrategy().forPorts(3301));
4955

5056
if (!vshardClusterContainer.isRunning()) {
51-
vshardClusterContainer.withPrivilegedMode(true);
57+
vshardClusterContainer
58+
.withPrivilegedMode(true)
59+
.withStartupTimeout(Duration.ofMinutes(5));
5260
vshardClusterContainer.start();
5361
}
5462
clusterContainer = vshardClusterContainer;

tarantool-spring-data/tarantool-spring-data-34/src/test/java/io/tarantool/spring/data34/integration/BaseIntegrationTest.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import org.junit.jupiter.api.Timeout;
1515
import org.slf4j.LoggerFactory;
1616
import org.testcontainers.containers.ClusterContainer;
17+
import org.testcontainers.containers.Network;
1718
import org.testcontainers.containers.TarantoolCartridgeContainer;
1819
import org.testcontainers.containers.VshardClusterContainer;
1920
import org.testcontainers.containers.output.Slf4jLogConsumer;
21+
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
2022

2123
import static io.tarantool.spring.data.utils.Constants.DEFAULT_PROPERTY_FILE_NAME;
2224
import static io.tarantool.spring.data34.utils.TarantoolTestSupport.DEFAULT_TEST_PROPERTY_DIR;
@@ -28,6 +30,8 @@ public abstract class BaseIntegrationTest {
2830

2931
protected static ClusterContainer clusterContainer;
3032

33+
private static final Network NETWORK = Network.newNetwork();
34+
3135
private static final String dockerRegistry =
3236
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "");
3337

@@ -41,14 +45,18 @@ private static void configureContainer() {
4145
if (!isCartridgeAvailable()) {
4246
VshardClusterContainer vshardClusterContainer =
4347
new VshardClusterContainer(
44-
"vshard_cluster/Dockerfile",
45-
dockerRegistry + "vshard-cluster-java",
46-
"vshard_cluster/instances.yaml",
47-
"vshard_cluster/config.yaml",
48-
"tarantool/tarantool");
48+
"vshard_cluster/Dockerfile",
49+
dockerRegistry + "vshard-cluster-java",
50+
"vshard_cluster/instances.yaml",
51+
"vshard_cluster/config.yaml",
52+
"tarantool/tarantool")
53+
.withNetwork(NETWORK)
54+
.withWaitingStrategy(new HostPortWaitStrategy().forPorts(3301));
4955

5056
if (!vshardClusterContainer.isRunning()) {
51-
vshardClusterContainer.withPrivilegedMode(true);
57+
vshardClusterContainer
58+
.withPrivilegedMode(true)
59+
.withStartupTimeout(Duration.ofMinutes(5));
5260
vshardClusterContainer.start();
5361
}
5462
clusterContainer = vshardClusterContainer;

tarantool-spring-data/tarantool-spring-data-35/src/test/java/io/tarantool/spring/data35/integration/BaseIntegrationTest.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import org.junit.jupiter.api.Timeout;
1515
import org.slf4j.LoggerFactory;
1616
import org.testcontainers.containers.ClusterContainer;
17+
import org.testcontainers.containers.Network;
1718
import org.testcontainers.containers.TarantoolCartridgeContainer;
1819
import org.testcontainers.containers.VshardClusterContainer;
1920
import org.testcontainers.containers.output.Slf4jLogConsumer;
21+
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
2022

2123
import static io.tarantool.spring.data.utils.Constants.DEFAULT_PROPERTY_FILE_NAME;
2224
import static io.tarantool.spring.data35.utils.TarantoolTestSupport.DEFAULT_TEST_PROPERTY_DIR;
@@ -28,6 +30,8 @@ public abstract class BaseIntegrationTest {
2830

2931
protected static ClusterContainer clusterContainer;
3032

33+
private static final Network NETWORK = Network.newNetwork();
34+
3135
private static final String dockerRegistry =
3236
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "");
3337

@@ -41,14 +45,18 @@ private static void configureContainer() {
4145
if (!isCartridgeAvailable()) {
4246
VshardClusterContainer vshardClusterContainer =
4347
new VshardClusterContainer(
44-
"vshard_cluster/Dockerfile",
45-
dockerRegistry + "vshard-cluster-java",
46-
"vshard_cluster/instances.yaml",
47-
"vshard_cluster/config.yaml",
48-
"tarantool/tarantool");
48+
"vshard_cluster/Dockerfile",
49+
dockerRegistry + "vshard-cluster-java",
50+
"vshard_cluster/instances.yaml",
51+
"vshard_cluster/config.yaml",
52+
"tarantool/tarantool")
53+
.withNetwork(NETWORK)
54+
.withWaitingStrategy(new HostPortWaitStrategy().forPorts(3301));
4955

5056
if (!vshardClusterContainer.isRunning()) {
51-
vshardClusterContainer.withPrivilegedMode(true);
57+
vshardClusterContainer
58+
.withPrivilegedMode(true)
59+
.withStartupTimeout(Duration.ofMinutes(5));
5260
vshardClusterContainer.start();
5361
}
5462
clusterContainer = vshardClusterContainer;

testcontainers/src/main/java/org/testcontainers/containers/VshardClusterContainer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.github.dockerjava.api.command.InspectContainerResponse;
2020
import lombok.Getter;
2121
import org.apache.commons.lang3.ArrayUtils;
22+
import org.testcontainers.containers.wait.strategy.WaitStrategy;
2223
import org.testcontainers.images.builder.ImageFromDockerfile;
2324
import org.testcontainers.utility.MountableFile;
2425

@@ -148,6 +149,11 @@ public VshardClusterContainer withExposedPort(Integer port) {
148149
return this;
149150
}
150151

152+
public VshardClusterContainer withWaitingStrategy(WaitStrategy waitStrategy) {
153+
waitingFor(waitStrategy);
154+
return this;
155+
}
156+
151157
protected static Map<String, String> mergeBuildArguments(Map<String, String> buildArgs) {
152158
Map<String, String> args = new HashMap<>(buildArgs);
153159

0 commit comments

Comments
 (0)