77
88import io .tarantool .autogen .Tarantool3Configuration ;
99import 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 ;
1012import io .tarantool .autogen .credentials .users .Users ;
1113import io .tarantool .autogen .credentials .users .usersProperty .UsersProperty ;
12- import io .tarantool .autogen .credentials .users .usersProperty .privilege .Privilege ;
1314import io .tarantool .autogen .groups .Groups ;
1415import io .tarantool .autogen .groups .groupsProperty .GroupsProperty ;
1516import io .tarantool .autogen .groups .groupsProperty .replicasets .Replicasets ;
1617import io .tarantool .autogen .groups .groupsProperty .replicasets .replicasetsProperty .ReplicasetsProperty ;
1718import io .tarantool .autogen .groups .groupsProperty .replicasets .replicasetsProperty .instances .Instances ;
1819import io .tarantool .autogen .groups .groupsProperty .replicasets .replicasetsProperty .instances .instancesProperty .InstancesProperty ;
1920import 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 ;
2022import 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 ;
2124import lombok .SneakyThrows ;
2225import org .testcontainers .containers .Container ;
2326import org .testcontainers .containers .Network ;
3841import java .util .ArrayList ;
3942import java .util .Collections ;
4043import java .util .HashMap ;
44+ import java .util .LinkedHashSet ;
4145import java .util .List ;
4246import java .util .Map ;
4347import 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