Skip to content

Commit 5f592ea

Browse files
committed
feat(testcontainers): edit vshard and cartridge
1 parent bde6cbb commit 5f592ea

File tree

32 files changed

+497
-396
lines changed

32 files changed

+497
-396
lines changed

pom.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,9 +396,6 @@
396396
<include>**/integration/**/*Crud*Test.java</include>
397397
<include>**/crud/**/*Test.java</include>
398398
</includes>
399-
<excludes>
400-
<exclude>**/io/tarantool/spring/data*/integration/**/*Test.java</exclude>
401-
</excludes>
402399
<argLine>@{argLine} -Xmx1024m</argLine>
403400
</configuration>
404401
</plugin>

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

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package io.tarantool.client.integration;
77

8-
import java.io.Serializable;
98
import java.time.Duration;
109
import java.util.ArrayList;
1110
import java.util.Arrays;
@@ -35,7 +34,6 @@
3534
import com.fasterxml.jackson.core.type.TypeReference;
3635
import org.junit.jupiter.api.BeforeAll;
3736
import org.junit.jupiter.api.BeforeEach;
38-
import org.junit.jupiter.api.Disabled;
3937
import org.junit.jupiter.api.Test;
4038
import org.junit.jupiter.api.Timeout;
4139
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
@@ -46,8 +44,8 @@
4644
import org.junit.jupiter.params.provider.MethodSource;
4745
import org.msgpack.value.ValueFactory;
4846
import org.slf4j.LoggerFactory;
49-
import org.testcontainers.containers.TarantoolCartridgeContainer;
50-
import org.testcontainers.containers.TarantoolContainerOperations;
47+
import org.testcontainers.containers.CartridgeClusterContainer;
48+
import org.testcontainers.containers.ClusterContainer;
5149
import org.testcontainers.containers.VshardClusterContainer;
5250
import org.testcontainers.containers.output.Slf4jLogConsumer;
5351
import org.testcontainers.junit.jupiter.Testcontainers;
@@ -88,7 +86,6 @@
8886
import io.tarantool.pool.IProtoClientPool;
8987
import io.tarantool.pool.InstanceConnectionGroup;
9088

91-
@Disabled("Refactor TarantoolCartridgeContainer and VshardClusterContainer")
9289
@Timeout(value = 10)
9390
@Testcontainers
9491
public class TarantoolCrudClientTest extends BaseTest {
@@ -103,9 +100,9 @@ public class TarantoolCrudClientTest extends BaseTest {
103100
}
104101
};
105102
public static final Person STUB_PERSON = new Person(0, true, String.valueOf(0));
106-
private static TarantoolCartridgeContainer cartridgeContainer;
103+
private static CartridgeClusterContainer cartridgeContainer;
107104
private static VshardClusterContainer vshardClusterContainer;
108-
private static TarantoolContainerOperations clusterContainer;
105+
private static ClusterContainer<?> clusterContainer;
109106
public static final String ROUTER_1 = "ROUTER_1";
110107
public static final String ROUTER_2 = "ROUTER_2";
111108
private static TarantoolCrudClient client;
@@ -150,7 +147,7 @@ public static void setUp() throws Exception {
150147
clusterContainer = vshardClusterContainer;
151148
} else {
152149
cartridgeContainer =
153-
new TarantoolCartridgeContainer(
150+
new CartridgeClusterContainer(
154151
"cartridge/Dockerfile",
155152
dockerRegistry + "cartridge",
156153
"cartridge/instances.yml",
@@ -325,7 +322,10 @@ public void testSelectAndInsertGeneral() {
325322
assertEquals(expected.asList(), removeBucketId(insertResult));
326323

327324
List<Tuple<Person>> selectResult =
328-
person.select(baseOptions, listPersonTypeRef, PkEquals(0)).join().get();
325+
person
326+
.select(Collections.singletonList(ConditionPkEquals(0)), listPersonTypeRef)
327+
.join()
328+
.get();
329329
assertEquals(Collections.singletonList(expected), unpackT(selectResult));
330330
}
331331

@@ -356,17 +356,18 @@ public void testDMLTupleExtension() {
356356

357357
replaceResult =
358358
personWithoutTupleExt.replace(baseOptions, listTypeRef, expected, OPTIONS).join();
359-
assertTrue(replaceResult.getFormat().isEmpty());
360359
assertEquals(expected.asList(), removeBucketId(replaceResult.get()));
361360

362361
// select
363362
TarantoolResponse<List<Tuple<Person>>> selectResult =
364-
person.select(baseOptions, listPersonTypeRef, PkEquals(0)).join();
363+
person.select(Collections.singletonList(ConditionPkEquals(0)), listPersonTypeRef).join();
365364
assertFalse(selectResult.getFormats().isEmpty());
366365
assertEquals(Collections.singletonList(expected), unpackT(selectResult.get()));
367366

368-
selectResult = personWithoutTupleExt.select(baseOptions, listPersonTypeRef, PkEquals(0)).join();
369-
assertTrue(selectResult.getFormats().isEmpty());
367+
selectResult =
368+
personWithoutTupleExt
369+
.select(Collections.singletonList(ConditionPkEquals(0)), listPersonTypeRef)
370+
.join();
370371
assertEquals(Collections.singletonList(expected), unpackT(selectResult.get()));
371372
}
372373

@@ -415,10 +416,6 @@ public void testSelectAndInsertTypeReference() {
415416
assertEquals(Collections.singletonList(expected), unpackT(selectResult));
416417
}
417418

418-
private static List<List<? extends Serializable>> PkEquals(int id) {
419-
return Collections.singletonList(Arrays.asList("==", "pk", id));
420-
}
421-
422419
private static Condition ConditionPkEquals(int id) {
423420
return Condition.create("==", "pk", id);
424421
}

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@
2121
import org.junit.jupiter.api.AfterEach;
2222
import org.junit.jupiter.api.BeforeAll;
2323
import org.junit.jupiter.api.BeforeEach;
24-
import org.junit.jupiter.api.Disabled;
2524
import org.junit.jupiter.api.Test;
2625
import org.junit.jupiter.api.Timeout;
2726
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
2827
import org.slf4j.LoggerFactory;
29-
import org.testcontainers.containers.TarantoolCartridgeContainer;
28+
import org.testcontainers.containers.CartridgeClusterContainer;
3029
import org.testcontainers.containers.output.Slf4jLogConsumer;
3130
import org.testcontainers.junit.jupiter.Testcontainers;
3231

@@ -36,7 +35,6 @@
3635
import io.tarantool.core.exceptions.BoxError;
3736
import io.tarantool.mapping.Tuple;
3837

39-
@Disabled("Refactor TarantoolCartridgeContainer and VshardClusterContainer")
4038
@Timeout(value = 5)
4139
@Testcontainers
4240
public class TarantoolCrudClientWithRetryTest {
@@ -84,8 +82,8 @@ private void execute() {
8482
}
8583
}
8684

87-
private static final TarantoolCartridgeContainer tt =
88-
new TarantoolCartridgeContainer(
85+
private static final CartridgeClusterContainer tt =
86+
new CartridgeClusterContainer(
8987
"cartridge/Dockerfile",
9088
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "")
9189
+ "cartridge",

tarantool-jackson-mapping/src/main/java/io/tarantool/mapping/crud/CrudResponse.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ public List<Field> getMetadata() throws CrudException {
6969
if (error != null) {
7070
throw new CrudException(error);
7171
}
72+
if (response == null) {
73+
return null;
74+
}
7275
return response.getMetadata();
7376
}
7477

tarantool-shared-resources/cartridge/app/api/crud_aux.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@ local crud_methods_to_patch = {
1111
'update',
1212
'upsert',
1313
'insert_many',
14+
'insert_object_many',
1415
'replace_many',
16+
'replace_object_many',
1517
'upsert_many',
18+
'upsert_object_many',
1619
'truncate',
1720
'count',
1821
'len',
Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
11
ARG TARANTOOL_VERSION="3.5.0"
22
ARG IMAGE="tarantool/tarantool"
33
FROM --platform=linux/amd64 $IMAGE:$TARANTOOL_VERSION
4+
HEALTHCHECK NONE
45

56
ARG TARANTOOL_WORKDIR="/app"
67
ENV TARANTOOL_WORKDIR=$TARANTOOL_WORKDIR
8+
ARG APP_NAME="vshard-cluster"
79

810
WORKDIR $TARANTOOL_WORKDIR
9-
COPY "cluster" "$TARANTOOL_WORKDIR"
11+
COPY "cluster" "$TARANTOOL_WORKDIR/$APP_NAME"
12+
WORKDIR "$TARANTOOL_WORKDIR/$APP_NAME"
13+
RUN mkdir -p /etc/tarantool/instances.enabled && \
14+
ln -s "$TARANTOOL_WORKDIR/$APP_NAME" /etc/tarantool/instances.enabled/app
1015

1116
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirror.yandex.ru/ubuntu/|g; s|http://security.ubuntu.com/ubuntu/|http://mirror.yandex.ru/ubuntu/|g' /etc/apt/sources.list
1217

1318
# install dependencies
1419
RUN apt-get -y update && \
15-
apt-get -y install build-essential cmake make gcc git unzip cartridge-cli && \
20+
apt-get -y install build-essential cmake make gcc git unzip && \
1621
apt-get -y clean
1722

18-
CMD tt init && tt build && tt start && sleep infinity
23+
CMD rm -f tt.yaml && \
24+
TT_CONFIG=./config.yaml env -u TT_APP_NAME -u TT_INSTANCE_NAME tt init && \
25+
TT_CONFIG=./config.yaml env -u TT_APP_NAME -u TT_INSTANCE_NAME tt build && \
26+
TT_CONFIG=./config.yaml env -u TT_APP_NAME -u TT_INSTANCE_NAME tt start vshard-cluster && \
27+
sleep infinity

tarantool-shared-resources/vshard_cluster/config.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,22 @@ groups:
3535
storage-001-a:
3636
iproto:
3737
listen:
38-
- uri: "3303"
38+
- uri: "127.0.0.1:3303"
3939
storage-001-b:
4040
iproto:
4141
listen:
42-
- uri: "3304"
42+
- uri: "127.0.0.1:3304"
4343
storage-002:
4444
leader: storage-002-a
4545
instances:
4646
storage-002-a:
4747
iproto:
4848
listen:
49-
- uri: "3305"
49+
- uri: "127.0.0.1:3305"
5050
storage-002-b:
5151
iproto:
5252
listen:
53-
- uri: "3306"
53+
- uri: "127.0.0.1:3306"
5454
routers:
5555
app:
5656
module: router
@@ -62,10 +62,10 @@ groups:
6262
router-001-a:
6363
iproto:
6464
listen:
65-
- uri: "3301"
65+
- uri: "0.0.0.0:3301"
6666
router-002:
6767
instances:
6868
router-002-a:
6969
iproto:
7070
listen:
71-
- uri: "3302"
71+
- uri: "0.0.0.0:3302"

tarantool-shared-resources/vshard_cluster/crud_aux.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@ local crud_methods_to_patch = {
1111
'update',
1212
'upsert',
1313
'insert_many',
14+
'insert_object_many',
1415
'replace_many',
16+
'replace_object_many',
1517
'upsert_many',
18+
'upsert_object_many',
1619
'truncate',
1720
'count',
1821
'len',

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

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@
1111

1212
import org.junit.jupiter.api.AfterAll;
1313
import org.junit.jupiter.api.BeforeAll;
14-
import org.junit.jupiter.api.Disabled;
1514
import org.junit.jupiter.api.Timeout;
1615
import org.slf4j.LoggerFactory;
17-
import org.testcontainers.containers.TarantoolCartridgeContainer;
18-
import org.testcontainers.containers.TarantoolContainerOperations;
16+
import org.testcontainers.containers.CartridgeClusterContainer;
17+
import org.testcontainers.containers.ClusterContainer;
1918
import org.testcontainers.containers.VshardClusterContainer;
2019
import org.testcontainers.containers.output.Slf4jLogConsumer;
2120

@@ -24,11 +23,10 @@
2423
import static io.tarantool.spring.data27.utils.TarantoolTestSupport.writeTestPropertiesYaml;
2524
import io.tarantool.spring.data27.config.properties.TarantoolProperties;
2625

27-
@Disabled("Refactor TarantoolCartridgeContainer and VshardClusterContainer")
2826
@Timeout(60)
2927
public abstract class BaseIntegrationTest {
3028

31-
protected static TarantoolContainerOperations<?> clusterContainer;
29+
protected static ClusterContainer<?> clusterContainer;
3230

3331
private static final String dockerRegistry =
3432
System.getenv().getOrDefault("TESTCONTAINERS_HUB_IMAGE_NAME_PREFIX", "");
@@ -55,8 +53,8 @@ private static void configureContainer() {
5553
}
5654
clusterContainer = vshardClusterContainer;
5755
} else {
58-
TarantoolCartridgeContainer cartridgeContainer =
59-
new TarantoolCartridgeContainer(
56+
CartridgeClusterContainer cartridgeContainer =
57+
new CartridgeClusterContainer(
6058
"cartridge/Dockerfile",
6159
dockerRegistry + "cartridge",
6260
"cartridge/instances.yml",
@@ -77,6 +75,8 @@ private static void writeConfigurationFile() throws IOException {
7775
final TarantoolProperties properties = new TarantoolProperties();
7876
properties.setHost(clusterContainer.getHost());
7977
properties.setPort(clusterContainer.getPort());
78+
properties.setUserName(clusterContainer.getUsername());
79+
properties.setPassword(clusterContainer.getPassword());
8080

8181
writeTestPropertiesYaml(DEFAULT_PROPERTY_FILE_NAME, properties);
8282
}
@@ -94,6 +94,14 @@ protected static int getPort() {
9494
return clusterContainer.getPort();
9595
}
9696

97+
protected static String getUsername() {
98+
return clusterContainer.getUsername();
99+
}
100+
101+
protected static String getPassword() {
102+
return clusterContainer.getPassword();
103+
}
104+
97105
protected static boolean isCartridgeAvailable() {
98106
return System.getenv().getOrDefault("TARANTOOL_VERSION", "").matches("2.*");
99107
}

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,13 @@
1313
import static org.junit.jupiter.api.Assertions.assertEquals;
1414
import org.junit.jupiter.api.BeforeAll;
1515
import org.junit.jupiter.api.BeforeEach;
16-
import org.junit.jupiter.api.Disabled;
1716
import org.junit.jupiter.api.Test;
1817
import org.springframework.beans.factory.annotation.Autowired;
1918
import org.springframework.context.annotation.Bean;
2019
import org.springframework.context.annotation.Configuration;
2120
import org.springframework.test.context.TestPropertySource;
2221

2322
import static io.tarantool.client.TarantoolClient.DEFAULT_TAG;
24-
import static io.tarantool.client.crud.TarantoolCrudClient.DEFAULT_CRUD_PASSWORD;
25-
import static io.tarantool.client.crud.TarantoolCrudClient.DEFAULT_CRUD_USERNAME;
2623
import static io.tarantool.spring.data.utils.Constants.DEFAULT_PROPERTY_FILE_LOCATION_CLASSPATH;
2724
import static io.tarantool.spring.data27.utils.TarantoolTestSupport.COMPLEX_PERSON_SPACE;
2825
import static io.tarantool.spring.data27.utils.TarantoolTestSupport.PERSON_SPACE;
@@ -34,7 +31,6 @@
3431
import io.tarantool.spring.data27.integration.BaseIntegrationTest;
3532
import io.tarantool.spring.data27.repository.config.EnableTarantoolRepositories;
3633

37-
@Disabled("Refactor TarantoolCartridgeContainer and VshardClusterContainer")
3834
@TestPropertySource(properties = {DEFAULT_PROPERTY_FILE_LOCATION_CLASSPATH})
3935
abstract class CrudConfigurations extends BaseIntegrationTest {
4036

@@ -51,8 +47,8 @@ protected static void beforeAll() throws IOException {
5147
InstanceConnectionGroup.builder()
5248
.withHost(clusterContainer.getHost())
5349
.withPort(clusterContainer.getPort())
54-
.withUser(DEFAULT_CRUD_USERNAME)
55-
.withPassword(DEFAULT_CRUD_PASSWORD)
50+
.withUser(getUsername())
51+
.withPassword(getPassword())
5652
.withTag(DEFAULT_TAG)
5753
.withSize(4)
5854
.build();

0 commit comments

Comments
 (0)