Skip to content

Commit 4c3c477

Browse files
authored
Merge branch 'main' into feature/issue-3066-mongodb-init-script
2 parents d868b95 + 326987f commit 4c3c477

42 files changed

Lines changed: 117 additions & 70 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/pull_request_template.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<!--
2-
Thanks for contributing to Testcontainers. Please review the following notes before
3-
submitting a pull request.
2+
Thanks for contributing to Testcontainers. Before submitting a pull request, please
3+
review our contributing guidelines at https://java.testcontainers.org/contributing/
4+
5+
Please also review the following notes before submitting a pull request.
46
57
New Modules:
68

core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -401,21 +401,34 @@ public static DockerClient getClientForConfig(TransportConfig transportConfig) {
401401
throw new IllegalArgumentException("Unknown transport type '" + transportType + "'");
402402
}
403403

404-
DefaultDockerClientConfig.Builder configBuilder = DefaultDockerClientConfig.createDefaultConfigBuilder();
404+
DefaultDockerClientConfig.Builder configBuilder = DefaultDockerClientConfig
405+
.createDefaultConfigBuilder()
406+
.withDockerHost(transportConfig.getDockerHost().toString());
405407

406-
if (configBuilder.build().getApiVersion() == RemoteApiVersion.UNKNOWN_VERSION) {
407-
configBuilder.withApiVersion(RemoteApiVersion.VERSION_1_44);
408-
}
409408
Map<String, String> headers = new HashMap<>();
410409
headers.put("x-tc-sid", DockerClientFactory.SESSION_ID);
411410
headers.put("User-Agent", String.format("tc-java/%s", DockerClientFactory.TESTCONTAINERS_VERSION));
412411

413-
return DockerClientImpl.getInstance(
414-
new AuthDelegatingDockerClientConfig(
415-
configBuilder.withDockerHost(transportConfig.getDockerHost().toString()).build()
416-
),
417-
new HeadersAddingDockerHttpClient(dockerHttpClient, headers)
418-
);
412+
try {
413+
if (configBuilder.build().getApiVersion() == RemoteApiVersion.UNKNOWN_VERSION) {
414+
configBuilder.withApiVersion(RemoteApiVersion.VERSION_1_44);
415+
}
416+
DockerClient client = DockerClientImpl.getInstance(
417+
new AuthDelegatingDockerClientConfig(configBuilder.build()),
418+
new HeadersAddingDockerHttpClient(dockerHttpClient, headers)
419+
);
420+
log.debug("Pinging Docker API version 1.44.");
421+
client.pingCmd().exec();
422+
return client;
423+
} catch (Exception ex) {
424+
log.debug("Fallback to Docker API version 1.32.");
425+
return DockerClientImpl.getInstance(
426+
new AuthDelegatingDockerClientConfig(
427+
configBuilder.withApiVersion(RemoteApiVersion.VERSION_1_32).build()
428+
),
429+
new HeadersAddingDockerHttpClient(dockerHttpClient, headers)
430+
);
431+
}
419432
}
420433

421434
public synchronized String getDockerHostIpAddress() {

core/src/main/java/org/testcontainers/utility/RyukContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
class RyukContainer extends GenericContainer<RyukContainer> {
1010

1111
RyukContainer() {
12-
super("testcontainers/ryuk:0.13.0");
12+
super("testcontainers/ryuk:0.14.0");
1313
withExposedPorts(8080);
1414
withCreateContainerCmdModifier(cmd -> {
1515
cmd.withName("testcontainers-ryuk-" + DockerClientFactory.SESSION_ID);

docs/modules/k6.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,23 @@ Testcontainers module for [k6](https://registry.hub.docker.com/r/grafana/k6).
1111

1212
## Basic script execution
1313

14-
Execute a simple k6 test script, `test.js`, with commandline options and injected script variable.
14+
You can start a K6 container instance from any Java application by using:
15+
16+
<!--codeinclude-->
17+
[Setup the container](../../modules/k6/src/test/java/org/testcontainers/k6/K6ContainerTests.java) inside_block:standard_k6
18+
<!--/codeinclude-->
19+
20+
The test above uses a simple k6 script, `test.js`, with command line options and an injected script variable.
21+
22+
Once the container is started, you can wait for the test results to be collected:
23+
24+
<!--codeinclude-->
25+
[Wait for test results](../../modules/k6/src/test/java/org/testcontainers/k6/K6ContainerTests.java) inside_block:wait
26+
<!--/codeinclude-->
1527

1628
Create a simple k6 test script to be executed as part of your tests:
1729

1830
<!--codeinclude-->
19-
[Setup the container](../../modules/k6/src/test/java/org/testcontainers/k6/K6ContainerTests.java) inside_block:standard_k6
2031
[Content of `scripts/test.js`](../../modules/k6/src/test/resources/scripts/test.js) inside_block:access_script_vars
2132
<!--/codeinclude-->
2233

modules/activemq/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ description = "Testcontainers :: ActiveMQ"
33
dependencies {
44
api project(':testcontainers')
55

6-
testImplementation "org.apache.activemq:activemq-client:6.1.7"
7-
testImplementation "org.apache.activemq:artemis-jakarta-client:2.42.0"
6+
testImplementation "org.apache.activemq:activemq-client:6.2.0"
7+
testImplementation "org.apache.activemq:artemis-jakarta-client:2.44.0"
88
}

modules/activemq/src/main/java/org/testcontainers/activemq/ActiveMQContainer.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@
2121
*/
2222
public class ActiveMQContainer extends GenericContainer<ActiveMQContainer> {
2323

24-
private static final DockerImageName DEFAULT_IMAGE = DockerImageName.parse("apache/activemq-classic");
24+
private static final DockerImageName APACHE_ACTIVEMQ_CLASSIC_IMAGE = DockerImageName.parse(
25+
"apache/activemq-classic"
26+
);
27+
28+
private static final DockerImageName DEFAULT_IMAGE = DockerImageName.parse("apache/activemq");
2529

2630
private static final int WEB_CONSOLE_PORT = 8161;
2731

@@ -45,7 +49,7 @@ public ActiveMQContainer(String image) {
4549

4650
public ActiveMQContainer(DockerImageName dockerImageName) {
4751
super(dockerImageName);
48-
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE);
52+
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE, APACHE_ACTIVEMQ_CLASSIC_IMAGE);
4953

5054
withExposedPorts(WEB_CONSOLE_PORT, TCP_PORT, AMQP_PORT, STOMP_PORT, MQTT_PORT, WS_PORT);
5155
waitingFor(Wait.forLogMessage(".*Apache ActiveMQ.*started.*", 1).withStartupTimeout(Duration.ofMinutes(1)));

modules/activemq/src/test/java/org/testcontainers/activemq/ActiveMQContainerTest.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import lombok.SneakyThrows;
1111
import org.apache.activemq.ActiveMQConnectionFactory;
1212
import org.junit.jupiter.api.Test;
13+
import org.junit.jupiter.params.ParameterizedTest;
14+
import org.junit.jupiter.params.provider.ValueSource;
1315

1416
import static org.assertj.core.api.Assertions.assertThat;
1517

@@ -18,7 +20,7 @@ class ActiveMQContainerTest {
1820
@Test
1921
void test() {
2022
try ( // container {
21-
ActiveMQContainer activemq = new ActiveMQContainer("apache/activemq-classic:5.18.3")
23+
ActiveMQContainer activemq = new ActiveMQContainer("apache/activemq:5.18.7")
2224
// }
2325
) {
2426
activemq.start();
@@ -29,11 +31,20 @@ void test() {
2931
}
3032
}
3133

34+
@ParameterizedTest
35+
@ValueSource(strings = { "apache/activemq-classic:5.18.7", "apache/activemq:5.18.7" })
36+
void compatibility(String image) {
37+
try (ActiveMQContainer activemq = new ActiveMQContainer(image)) {
38+
activemq.start();
39+
assertFunctionality(activemq, false);
40+
}
41+
}
42+
3243
@Test
3344
void customCredentials() {
3445
try (
3546
// settingCredentials {
36-
ActiveMQContainer activemq = new ActiveMQContainer("apache/activemq-classic:5.18.3")
47+
ActiveMQContainer activemq = new ActiveMQContainer("apache/activemq:5.18.7")
3748
.withUser("testcontainers")
3849
.withPassword("testcontainers")
3950
// }

modules/azure/build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ dependencies {
44
api project(':testcontainers')
55
api project(':testcontainers-mssqlserver')
66
// TODO use JDK's HTTP client and/or Apache HttpClient5
7-
shaded 'com.squareup.okhttp3:okhttp:5.1.0'
7+
shaded 'com.squareup.okhttp3:okhttp:5.3.2'
88

99
testImplementation platform("com.azure:azure-sdk-bom:1.2.32")
1010
testImplementation 'com.azure:azure-cosmos'
@@ -15,3 +15,7 @@ dependencies {
1515
testImplementation 'com.azure:azure-messaging-servicebus'
1616
testImplementation 'com.microsoft.sqlserver:mssql-jdbc:13.3.0.jre8-preview'
1717
}
18+
19+
tasks.japicmp {
20+
methodExcludes = ["org.testcontainers.azure.ServiceBusEmulatorContainer#withMsSqlServerContainer(org.testcontainers.containers.MSSQLServerContainer)"]
21+
}

modules/azure/src/main/java/org/testcontainers/azure/ServiceBusEmulatorContainer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.testcontainers.azure;
22

33
import org.testcontainers.containers.GenericContainer;
4-
import org.testcontainers.containers.MSSQLServerContainer;
54
import org.testcontainers.containers.wait.strategy.Wait;
65
import org.testcontainers.images.builder.Transferable;
6+
import org.testcontainers.mssqlserver.MSSQLServerContainer;
77
import org.testcontainers.utility.DockerImageName;
88
import org.testcontainers.utility.LicenseAcceptance;
99

@@ -25,7 +25,7 @@ public class ServiceBusEmulatorContainer extends GenericContainer<ServiceBusEmul
2525
"mcr.microsoft.com/azure-messaging/servicebus-emulator"
2626
);
2727

28-
private MSSQLServerContainer<?> msSqlServerContainer;
28+
private MSSQLServerContainer msSqlServerContainer;
2929

3030
/**
3131
* @param dockerImageName The specified docker image name to run
@@ -51,7 +51,7 @@ public ServiceBusEmulatorContainer(final DockerImageName dockerImageName) {
5151
* @param msSqlServerContainer The MS SQL Server container used by Service Bus as a dependency
5252
* @return this
5353
*/
54-
public ServiceBusEmulatorContainer withMsSqlServerContainer(final MSSQLServerContainer<?> msSqlServerContainer) {
54+
public ServiceBusEmulatorContainer withMsSqlServerContainer(final MSSQLServerContainer msSqlServerContainer) {
5555
dependsOn(msSqlServerContainer);
5656
this.msSqlServerContainer = msSqlServerContainer;
5757
return this;

modules/azure/src/test/java/org/testcontainers/azure/ServiceBusEmulatorContainerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import com.github.dockerjava.api.model.Capability;
1111
import org.assertj.core.api.Assertions;
1212
import org.junit.jupiter.api.Test;
13-
import org.testcontainers.containers.MSSQLServerContainer;
1413
import org.testcontainers.containers.Network;
14+
import org.testcontainers.mssqlserver.MSSQLServerContainer;
1515
import org.testcontainers.utility.MountableFile;
1616

1717
import java.util.List;
@@ -31,7 +31,7 @@ void testWithClient() {
3131
Network network = Network.newNetwork();
3232
// }
3333
// sqlContainer {
34-
MSSQLServerContainer<?> mssqlServerContainer = new MSSQLServerContainer<>(
34+
MSSQLServerContainer mssqlServerContainer = new MSSQLServerContainer(
3535
"mcr.microsoft.com/mssql/server:2022-CU14-ubuntu-22.04"
3636
)
3737
.acceptLicense()

0 commit comments

Comments
 (0)