Skip to content

Commit 9ab80f9

Browse files
committed
test: update tt3 config
1 parent 449e48c commit 9ab80f9

File tree

3 files changed

+65
-38
lines changed

3 files changed

+65
-38
lines changed

tarantool-shared-resources/tarantool3/init.lua

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -65,34 +65,7 @@ box.once('schema', function()
6565
box.session.push(old)
6666
end)
6767

68-
box.schema.user.create('user_a', {
69-
password = 'secret_a',
70-
if_not_exists = true
71-
})
72-
box.schema.user.create('user_b', {
73-
password = 'secret_b',
74-
if_not_exists = true
75-
})
76-
box.schema.user.create('user_c', {
77-
password = 'secret_c',
78-
if_not_exists = true
79-
})
80-
box.schema.user.create('user_d', {
81-
password = 'secret_d',
82-
if_not_exists = true
83-
})
84-
box.schema.user.create('replicator', {
85-
password = 'password'
86-
})
87-
88-
box.schema.user.grant('user_a', 'read,write', 'space', 'space_a')
89-
box.schema.user.grant('user_a', 'execute', 'universe')
90-
box.schema.user.grant('user_b', 'read,write', 'space', 'space_b')
91-
box.schema.user.grant('user_b', 'read', 'space', 'space_a')
9268
box.schema.user.revoke('user_c', 'session', 'universe')
93-
box.schema.user.revoke('user_d', 'usage', 'universe')
94-
box.schema.user.grant('user_d', 'execute', 'universe')
95-
box.schema.user.grant('replicator', 'replication')
9669

9770
log.info('schema created on master')
9871
end)

testcontainers/src/main/java/org/testcontainers/containers/tarantool/Tarantool3Container.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,16 +231,18 @@ protected void configure() {
231231
withCreateContainerCmdModifier(
232232
cmd -> {
233233
cmd.withName(this.node).withUser("root");
234-
String originalEntrypoint = "tarantool";
235-
if (cmd.getEntrypoint() != null && cmd.getEntrypoint().length > 0) {
236-
originalEntrypoint = String.join(" ", cmd.getEntrypoint());
237-
}
234+
String[] originalEntrypoint =
235+
cmd.getEntrypoint() != null && cmd.getEntrypoint().length > 0
236+
? cmd.getEntrypoint()
237+
: new String[] {"tarantool"};
238+
String dataDir = TarantoolContainer.DEFAULT_DATA_DIR.toAbsolutePath().toString();
239+
String entrypointStr = String.join(" ", originalEntrypoint);
238240
cmd.withEntrypoint(
239241
"sh",
240242
"-c",
241243
String.format(
242-
"chmod -R 777 %s 2>/dev/null || true && exec %s",
243-
TarantoolContainer.DEFAULT_DATA_DIR.toAbsolutePath(), originalEntrypoint));
244+
"chmod -R 777 %s 2>/dev/null || true; exec %s \"$@\"",
245+
dataDir, entrypointStr));
244246
});
245247
this.configured = true;
246248
} catch (Exception e) {

testcontainers/src/main/java/org/testcontainers/containers/utils/TarantoolContainerClientHelper.java

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,20 @@
77

88
import io.tarantool.autogen.Tarantool3Configuration;
99
import io.tarantool.autogen.credentials.Credentials;
10+
import io.tarantool.autogen.credentials.roles.rolesProperty.privilege.Permission;
11+
import io.tarantool.autogen.credentials.roles.rolesProperty.privilege.Privilege;
1012
import io.tarantool.autogen.credentials.users.Users;
1113
import io.tarantool.autogen.credentials.users.usersProperty.UsersProperty;
12-
import io.tarantool.autogen.credentials.users.usersProperty.privilege.Privilege;
1314
import io.tarantool.autogen.groups.Groups;
1415
import io.tarantool.autogen.groups.groupsProperty.GroupsProperty;
1516
import io.tarantool.autogen.groups.groupsProperty.replicasets.Replicasets;
1617
import io.tarantool.autogen.groups.groupsProperty.replicasets.replicasetsProperty.ReplicasetsProperty;
1718
import io.tarantool.autogen.groups.groupsProperty.replicasets.replicasetsProperty.instances.Instances;
1819
import io.tarantool.autogen.groups.groupsProperty.replicasets.replicasetsProperty.instances.instancesProperty.InstancesProperty;
1920
import io.tarantool.autogen.groups.groupsProperty.replicasets.replicasetsProperty.instances.instancesProperty.iproto.Iproto;
21+
import io.tarantool.autogen.groups.groupsProperty.replicasets.replicasetsProperty.instances.instancesProperty.iproto.advertise.Advertise;
2022
import io.tarantool.autogen.groups.groupsProperty.replicasets.replicasetsProperty.instances.instancesProperty.iproto.listen.Listen;
23+
import io.tarantool.autogen.groups.groupsProperty.replicasets.replicasetsProperty.instances.instancesProperty.iproto.advertise.peer.Peer;
2124
import lombok.SneakyThrows;
2225
import org.testcontainers.containers.Container;
2326
import org.testcontainers.containers.Network;
@@ -38,6 +41,7 @@
3841
import java.util.ArrayList;
3942
import java.util.Collections;
4043
import java.util.HashMap;
44+
import java.util.LinkedHashSet;
4145
import java.util.List;
4246
import java.util.Map;
4347
import java.util.Objects;
@@ -227,7 +231,7 @@ public static TarantoolContainer<?> createTarantoolContainer(Integer... exposedP
227231
String.format("Unsupported Tarantool version, %s", TARANTOOL_VERSION));
228232
};
229233

230-
return container.withExposedPorts(3301).withExposedPorts(exposedPorts);
234+
return container.withExposedPorts(exposedPorts);
231235
}
232236

233237
@SneakyThrows
@@ -245,6 +249,47 @@ private static Path createConfig(Integer... exposedPorts) {
245249
.withRoles(Collections.singletonList("super"))
246250
.withPassword(CREDS.get(API_USER))
247251
.build())
252+
.withAdditionalProperty(
253+
"user_a",
254+
UsersProperty.builder()
255+
.withPassword("secret_a")
256+
.withPrivileges(
257+
List.of(
258+
Privilege.builder()
259+
.withPermissions(new LinkedHashSet<>(List.of(Permission.READ, Permission.WRITE, Permission.EXECUTE)))
260+
.build()))
261+
.build())
262+
.withAdditionalProperty(
263+
"user_b",
264+
UsersProperty.builder()
265+
.withPassword("secret_b")
266+
.withPrivileges(
267+
List.of(
268+
Privilege.builder()
269+
.withPermissions(new LinkedHashSet<>(List.of(Permission.READ, Permission.WRITE, Permission.EXECUTE)))
270+
.build()))
271+
.build())
272+
.withAdditionalProperty(
273+
"user_c",
274+
UsersProperty.builder()
275+
.withPassword("secret_c")
276+
.build())
277+
.withAdditionalProperty(
278+
"user_d",
279+
UsersProperty.builder()
280+
.withPassword("secret_d")
281+
.withPrivileges(
282+
Collections.singletonList(
283+
Privilege.builder()
284+
.withPermissions(new LinkedHashSet<>(Collections.singletonList(Permission.EXECUTE)))
285+
.build()))
286+
.build())
287+
.withAdditionalProperty(
288+
"replicator",
289+
UsersProperty.builder()
290+
.withPassword("password")
291+
.withRoles(Collections.singletonList("replication"))
292+
.build())
248293
.build())
249294
.build();
250295

@@ -260,7 +305,14 @@ private static Path createConfig(Integer... exposedPorts) {
260305
listens.add(Listen.builder().withUri(String.format("0.0.0.0:%d", port)).build());
261306
}
262307

263-
iprotoBuilder.withListen(listens);
308+
iprotoBuilder.withListen(listens)
309+
.withAdvertise(
310+
Advertise.builder()
311+
.withPeer(
312+
Peer.builder()
313+
.withLogin("replicator")
314+
.build())
315+
.build());
264316

265317
final InstancesProperty instance =
266318
InstancesProperty.builder().withIproto(iprotoBuilder.build()).build();
@@ -287,9 +339,9 @@ private static Path createConfig(Integer... exposedPorts) {
287339
return pathToConfigFile;
288340
}
289341

290-
public static void execInitScript(TarantoolContainer<?> container) {
342+
public static Container.ExecResult execInitScript(TarantoolContainer<?> container) {
291343
try {
292-
executeScript(container, "tarantool3/init.lua");
344+
return executeScript(container, "tarantool3/init.lua");
293345
} catch (IOException | InterruptedException e) {
294346
throw new RuntimeException(e);
295347
}

0 commit comments

Comments
 (0)