Use Elasticsearch 8.7.0 container in tests.

This commit is contained in:
P.J. Meisch
2023-04-27 20:13:56 +02:00
committed by Jens Schauder
parent f051de145e
commit 21830b3138
3 changed files with 65 additions and 40 deletions

View File

@@ -21,17 +21,17 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
import org.springframework.data.elasticsearch.core.query.Criteria;
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
import org.springframework.test.context.DynamicPropertyRegistry;
import org.springframework.test.context.DynamicPropertySource;
import org.springframework.util.Assert;
import org.testcontainers.elasticsearch.ElasticsearchContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@@ -44,24 +44,31 @@ import org.testcontainers.utility.DockerImageName;
* @author Oliver Gierke
* @author Christoph Strobl
* @author Prakhar Gupta
* @author Peter-Josef Meisch
*/
@SpringBootTest(classes = ApplicationConfiguration.class)
@SpringBootTest(classes = { ApplicationConfiguration.class, ElasticsearchOperationsTest.TestConfiguration.class })
@Testcontainers
class ElasticsearchOperationsTest {
private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
@Container //
private static ElasticsearchContainer container = new ElasticsearchContainer(
DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:7.17.2")) //
.withPassword("foobar") //
.withReuse(true);
DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:8.7.0")) //
.withPassword("foobar") //
.withReuse(true);
@DynamicPropertySource
static void setProperties(DynamicPropertyRegistry registry) {
registry.add("spring.elasticsearch.uris", () -> "http://" + container.getHttpHostAddress());
registry.add("spring.elasticsearch.username", () -> "elastic");
registry.add("spring.elasticsearch.password", () -> "foobar");
@Configuration
static class TestConfiguration extends ElasticsearchConfiguration {
@Override
public ClientConfiguration clientConfiguration() {
Assert.notNull(container, "TestContainer is not initialized!");
return ClientConfiguration.builder() //
.connectedTo(container.getHttpHostAddress()).usingSsl(container.createSslContextFromCa()) //
.withBasicAuth("elastic", "foobar") //
.build();
}
}
@Autowired ElasticsearchOperations operations;

View File

@@ -23,16 +23,16 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchConfiguration;
import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.query.Criteria;
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
import org.springframework.test.context.DynamicPropertyRegistry;
import org.springframework.test.context.DynamicPropertySource;
import org.springframework.util.Assert;
import org.testcontainers.elasticsearch.ElasticsearchContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@@ -43,8 +43,10 @@ import org.testcontainers.utility.DockerImageName;
*
* @author Christoph Strobl
* @author Prakhar Gupta
* @author Peter-Josef Meisch
*/
@SpringBootTest(classes = ApplicationConfiguration.class)
@SpringBootTest(
classes = { ApplicationConfiguration.class, ReactiveElasticsearchOperationsTest.TestConfiguration.class })
@Testcontainers
class ReactiveElasticsearchOperationsTest {
@@ -52,15 +54,22 @@ class ReactiveElasticsearchOperationsTest {
@Container //
private static ElasticsearchContainer container = new ElasticsearchContainer(
DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:7.17.2")) //
.withPassword("foobar") //
.withReuse(true);
DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:8.7.0")) //
.withPassword("foobar") //
.withReuse(true);
@DynamicPropertySource
static void setProperties(DynamicPropertyRegistry registry) {
registry.add("spring.elasticsearch.uris", () -> "http://" + container.getHttpHostAddress());
registry.add("spring.elasticsearch.username", () -> "elastic");
registry.add("spring.elasticsearch.password", () -> "foobar");
@Configuration
static class TestConfiguration extends ReactiveElasticsearchConfiguration {
@Override
public ClientConfiguration clientConfiguration() {
Assert.notNull(container, "TestContainer is not initialized!");
return ClientConfiguration.builder() //
.connectedTo(container.getHttpHostAddress()).usingSsl(container.createSslContextFromCa()) //
.withBasicAuth("elastic", "foobar") //
.build();
}
}
@Autowired ReactiveElasticsearchOperations operations;

View File

@@ -23,12 +23,12 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.DynamicPropertyRegistry;
import org.springframework.test.context.DynamicPropertySource;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchConfiguration;
import org.springframework.util.Assert;
import org.testcontainers.elasticsearch.ElasticsearchContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@@ -39,8 +39,10 @@ import org.testcontainers.utility.DockerImageName;
*
* @author Christoph Strobl
* @author Prakhar Gupta
* @author Peter-Josef Meisch
*/
@SpringBootTest(classes = ApplicationConfiguration.class)
@SpringBootTest(
classes = { ApplicationConfiguration.class, ReactiveElasticsearchRepositoryTest.TestConfiguration.class })
@Testcontainers
class ReactiveElasticsearchRepositoryTest {
@@ -48,15 +50,22 @@ class ReactiveElasticsearchRepositoryTest {
@Container //
private static ElasticsearchContainer container = new ElasticsearchContainer(
DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:7.17.2")) //
.withPassword("foobar") //
.withReuse(true);
DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:8.7.0")) //
.withPassword("foobar") //
.withReuse(true);
@DynamicPropertySource
static void setProperties(DynamicPropertyRegistry registry) {
registry.add("spring.elasticsearch.uris", () -> "http://" + container.getHttpHostAddress());
registry.add("spring.elasticsearch.username", () -> "elastic");
registry.add("spring.elasticsearch.password", () -> "foobar");
@Configuration
static class TestConfiguration extends ReactiveElasticsearchConfiguration {
@Override
public ClientConfiguration clientConfiguration() {
Assert.notNull(container, "TestContainer is not initialized!");
return ClientConfiguration.builder() //
.connectedTo(container.getHttpHostAddress()).usingSsl(container.createSslContextFromCa()) //
.withBasicAuth("elastic", "foobar") //
.build();
}
}
@Autowired ConferenceRepository repository;