From 7b7e39d71914dbe5c88d4ccf1bbc0dbef277cb33 Mon Sep 17 00:00:00 2001 From: Alexander Reelsen Date: Tue, 28 Jun 2022 23:29:22 +0200 Subject: [PATCH 1/3] Elasticsearch: Fix startup check for 8.3 and above --- .../elasticsearch/ElasticsearchContainer.java | 3 ++- .../ElasticsearchContainerTest.java | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/ElasticsearchContainer.java b/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/ElasticsearchContainer.java index 5a64a5e67a2..f8b9f779519 100644 --- a/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/ElasticsearchContainer.java +++ b/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/ElasticsearchContainer.java @@ -102,10 +102,11 @@ public ElasticsearchContainer(final DockerImageName dockerImageName) { this.isAtLeastMajorVersion8 = new ComparableVersion(dockerImageName.getVersionPart()).isGreaterThanOrEqualTo("8.0.0"); // regex that + // matches 8.3 JSON logging with started message and some follow up content within the message field // matches 8.0 JSON logging with no whitespace between message field and content // matches 7.x JSON logging with whitespace between message field and content // matches 6.x text logging with node name in brackets and just a 'started' message till the end of the line - String regex = ".*(\"message\":\\s?\"started\".*|] started\n$)"; + String regex = ".*(\"message\":\\s?\"started[\\s?|\"].*|] started\n$)"; setWaitStrategy(new LogMessageWaitStrategy().withRegEx(regex)); if (isAtLeastMajorVersion8) { withPassword(ELASTICSEARCH_DEFAULT_PASSWORD); diff --git a/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java b/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java index 4427163ca56..dbf29a7da81 100644 --- a/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java +++ b/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java @@ -150,6 +150,18 @@ public void elasticsearchVersion() throws IOException { } } + @Test + public void elasticsearchVersion83() throws IOException { + try (ElasticsearchContainer container = new ElasticsearchContainer( + "docker.elastic.co/elasticsearch/elasticsearch:8.3.0" + )) { + container.start(); + Response response = getClient(container).performRequest(new Request("GET", "/")); + assertThat(response.getStatusLine().getStatusCode(), is(200)); + assertThat(EntityUtils.toString(response.getEntity()), containsString("8.3.0")); + } + } + @Test public void elasticsearchOssImage() throws IOException { try ( @@ -408,8 +420,12 @@ private RestClient getClient(ElasticsearchContainer container) { client = RestClient - .builder(HttpHost.create(container.getHttpHostAddress())) + .builder(HttpHost.create(container.caCertAsBytes().isEmpty() ? "http://" : "https://" + + container.getHttpHostAddress())) .setHttpClientConfigCallback(httpClientBuilder -> { + if (container.caCertAsBytes().isPresent()) { + httpClientBuilder.setSSLContext(container.createSslContextFromCa()); + } return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); }) .build(); From 4dda0c0d4ea1dc113b7c6a1e164fd5442b4541a0 Mon Sep 17 00:00:00 2001 From: Alexander Reelsen Date: Tue, 28 Jun 2022 23:47:47 +0200 Subject: [PATCH 2/3] Ensure older java versions work --- .../elasticsearch/ElasticsearchContainerTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java b/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java index dbf29a7da81..38dda4c8e2c 100644 --- a/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java +++ b/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java @@ -25,9 +25,8 @@ import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; -import java.io.IOException; - import javax.net.ssl.SSLHandshakeException; +import java.io.IOException; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; @@ -418,10 +417,11 @@ private RestClient getClient(ElasticsearchContainer container) { new UsernamePasswordCredentials(ELASTICSEARCH_USERNAME, ELASTICSEARCH_PASSWORD) ); + String protocol = container.caCertAsBytes().isPresent() ? "https://" : "http://"; + client = RestClient - .builder(HttpHost.create(container.caCertAsBytes().isEmpty() ? "http://" : "https://" + - container.getHttpHostAddress())) + .builder(HttpHost.create(protocol + container.getHttpHostAddress())) .setHttpClientConfigCallback(httpClientBuilder -> { if (container.caCertAsBytes().isPresent()) { httpClientBuilder.setSSLContext(container.createSslContextFromCa()); From 0cb10174bb8e904a72024b1d47ee73e18ac0a97f Mon Sep 17 00:00:00 2001 From: Alexander Reelsen Date: Tue, 28 Jun 2022 23:54:29 +0200 Subject: [PATCH 3/3] running spotless --- .../elasticsearch/ElasticsearchContainerTest.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java b/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java index 38dda4c8e2c..9fcfc45af76 100644 --- a/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java +++ b/modules/elasticsearch/src/test/java/org/testcontainers/elasticsearch/ElasticsearchContainerTest.java @@ -25,9 +25,10 @@ import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; -import javax.net.ssl.SSLHandshakeException; import java.io.IOException; +import javax.net.ssl.SSLHandshakeException; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; @@ -151,9 +152,11 @@ public void elasticsearchVersion() throws IOException { @Test public void elasticsearchVersion83() throws IOException { - try (ElasticsearchContainer container = new ElasticsearchContainer( - "docker.elastic.co/elasticsearch/elasticsearch:8.3.0" - )) { + try ( + ElasticsearchContainer container = new ElasticsearchContainer( + "docker.elastic.co/elasticsearch/elasticsearch:8.3.0" + ) + ) { container.start(); Response response = getClient(container).performRequest(new Request("GET", "/")); assertThat(response.getStatusLine().getStatusCode(), is(200));