Skip to content

Commit 2579264

Browse files
authored
Added clientBuilder to TarantoolContainer constructor (#49)
* Added clientBuilder to TarantoolContainer constructor
1 parent a9bc5b0 commit 2579264

File tree

2 files changed

+78
-5
lines changed

2 files changed

+78
-5
lines changed

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

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.testcontainers.containers;
22

33
import com.github.dockerjava.api.command.InspectContainerResponse;
4+
import io.tarantool.driver.api.TarantoolClientBuilder;
45
import org.testcontainers.containers.wait.strategy.Wait;
56

67
import java.net.URL;
@@ -47,25 +48,88 @@ public class TarantoolContainer extends GenericContainer<TarantoolContainer>
4748

4849
private final TarantoolContainerClientHelper clientHelper;
4950

51+
/**
52+
* Constructor for {@link TarantoolContainer}
53+
*/
5054
public TarantoolContainer() {
5155
this(String.format("%s:%s", TARANTOOL_IMAGE, DEFAULT_IMAGE_VERSION));
5256
}
5357

58+
/**
59+
* Constructor for {@link TarantoolContainer}
60+
*
61+
* @param clientBuilder client builder with custom client settings for setting up container
62+
*/
63+
public TarantoolContainer(TarantoolClientBuilder clientBuilder) {
64+
this(String.format("%s:%s", TARANTOOL_IMAGE, DEFAULT_IMAGE_VERSION), clientBuilder);
65+
}
66+
67+
/**
68+
* Constructor for {@link TarantoolContainer}
69+
*
70+
* @param dockerImageName docker image name for container creating
71+
*/
5472
public TarantoolContainer(String dockerImageName) {
5573
super(dockerImageName);
5674
clientHelper = new TarantoolContainerClientHelper(this);
5775
}
5876

77+
/**
78+
* Constructor for {@link TarantoolContainer}
79+
*
80+
* @param dockerImageName docker image name for container creating
81+
* @param clientBuilder client builder with custom client settings for setting up container
82+
*/
83+
public TarantoolContainer(String dockerImageName,
84+
TarantoolClientBuilder clientBuilder) {
85+
super(dockerImageName);
86+
clientHelper = new TarantoolContainerClientHelper(this, clientBuilder);
87+
}
88+
89+
/**
90+
* Constructor for {@link TarantoolContainer}
91+
*
92+
* @param tarantoolImageParams params for cached image creating
93+
*/
5994
public TarantoolContainer(TarantoolImageParams tarantoolImageParams) {
6095
super(TarantoolContainerImageHelper.getImage(tarantoolImageParams));
6196
clientHelper = new TarantoolContainerClientHelper(this);
6297
}
6398

99+
/**
100+
* Constructor for {@link TarantoolContainer}
101+
*
102+
* @param tarantoolImageParams params for cached image creating
103+
* @param clientBuilder client builder with custom client settings for setting up container
104+
*/
105+
public TarantoolContainer(TarantoolImageParams tarantoolImageParams,
106+
TarantoolClientBuilder clientBuilder) {
107+
super(TarantoolContainerImageHelper.getImage(tarantoolImageParams));
108+
clientHelper = new TarantoolContainerClientHelper(this, clientBuilder);
109+
}
110+
111+
/**
112+
* Constructor for {@link TarantoolContainer}
113+
*
114+
* @param image future with image name
115+
*/
64116
public TarantoolContainer(Future<String> image) {
65117
super(image);
66118
clientHelper = new TarantoolContainerClientHelper(this);
67119
}
68120

121+
/**
122+
* Constructor for {@link TarantoolContainer}
123+
*
124+
* @param image future with image name
125+
* @param clientBuilder client builder with custom client settings for setting up container
126+
*/
127+
public TarantoolContainer(Future<String> image,
128+
TarantoolClientBuilder clientBuilder) {
129+
super(image);
130+
clientHelper = new TarantoolContainerClientHelper(this, clientBuilder);
131+
}
132+
69133
/**
70134
* Use fixed ports binding.
71135
* Defaults to false.

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

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.testcontainers.containers;
22

33
import io.tarantool.driver.api.TarantoolClient;
4+
import io.tarantool.driver.api.TarantoolClientBuilder;
45
import io.tarantool.driver.api.TarantoolClientFactory;
56
import io.tarantool.driver.api.TarantoolResult;
67
import io.tarantool.driver.api.retry.TarantoolRequestRetryPolicies;
@@ -27,19 +28,27 @@ public final class TarantoolContainerClientHelper {
2728
private final TarantoolContainerOperations<? extends Container<?>> container;
2829
private final AtomicReference<TarantoolClient<TarantoolTuple, TarantoolResult<TarantoolTuple>>> clientHolder =
2930
new AtomicReference<>();
31+
private final TarantoolClientBuilder clientBuilder;
3032

3133
TarantoolContainerClientHelper(TarantoolContainerOperations<? extends Container<?>> container) {
3234
this.container = container;
35+
this.clientBuilder = TarantoolClientFactory.createClient()
36+
.withRequestTimeout(5000)
37+
.withRetryingByNumberOfAttempts(15,
38+
TarantoolRequestRetryPolicies.retryNetworkErrors(),
39+
b -> b.withDelay(100));
40+
}
41+
42+
TarantoolContainerClientHelper(TarantoolContainerOperations<? extends Container<?>> container,
43+
TarantoolClientBuilder clientBuilder) {
44+
this.container = container;
45+
this.clientBuilder = clientBuilder;
3346
}
3447

3548
private TarantoolClient<TarantoolTuple, TarantoolResult<TarantoolTuple>> createClient() {
36-
return TarantoolClientFactory.createClient()
49+
return clientBuilder
3750
.withCredentials(container.getUsername(), container.getPassword())
3851
.withAddress(container.getHost(), container.getPort())
39-
.withRequestTimeout(5000)
40-
.withRetryingByNumberOfAttempts(15,
41-
TarantoolRequestRetryPolicies.retryNetworkErrors(),
42-
b -> b.withDelay(100))
4352
.build();
4453
}
4554

0 commit comments

Comments
 (0)