From 11c79ac650a3fd4700a6fea6e1b5a78d77bbf184 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 9 Sep 2021 14:39:52 +0100 Subject: [PATCH] Move Docker-based reactive Elasticsearch test into separate class Closes gh-27907 --- ...ientAutoConfigurationIntegrationTests.java | 72 +++++++++++++++++++ ...earchRestClientAutoConfigurationTests.java | 35 --------- 2 files changed, 72 insertions(+), 35 deletions(-) create mode 100644 spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestClientAutoConfigurationIntegrationTests.java diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestClientAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestClientAutoConfigurationIntegrationTests.java new file mode 100644 index 0000000000..55a09707a4 --- /dev/null +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestClientAutoConfigurationIntegrationTests.java @@ -0,0 +1,72 @@ +/* + * Copyright 2012-2021 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.autoconfigure.data.elasticsearch; + +import java.time.Duration; +import java.util.HashMap; +import java.util.Map; + +import org.elasticsearch.action.get.GetRequest; +import org.elasticsearch.action.index.IndexRequest; +import org.elasticsearch.index.get.GetResult; +import org.junit.jupiter.api.Test; +import org.testcontainers.elasticsearch.ElasticsearchContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Integration tests for {@link ReactiveElasticsearchRestClientAutoConfiguration}. + * + * @author Brian Clozel + */ +@Testcontainers(disabledWithoutDocker = true) +class ReactiveElasticsearchRestClientAutoConfigurationIntegrationTests { + + @Container + static ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) + .withStartupAttempts(5).withStartupTimeout(Duration.ofMinutes(10)); + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(ReactiveElasticsearchRestClientAutoConfiguration.class)); + + @Test + void restClientCanQueryElasticsearchNode() { + this.contextRunner.withPropertyValues( + "spring.data.elasticsearch.client.reactive.endpoints=" + elasticsearch.getHost() + ":" + + elasticsearch.getFirstMappedPort(), + "spring.data.elasticsearch.client.reactive.connection-timeout=120s", + "spring.data.elasticsearch.client.reactive.socket-timeout=120s").run((context) -> { + ReactiveElasticsearchClient client = context.getBean(ReactiveElasticsearchClient.class); + Map source = new HashMap<>(); + source.put("a", "alpha"); + source.put("b", "bravo"); + IndexRequest indexRequest = new IndexRequest("foo").id("1").source(source); + GetRequest getRequest = new GetRequest("foo").id("1"); + GetResult getResult = client.index(indexRequest).then(client.get(getRequest)).block(); + assertThat(getResult).isNotNull(); + assertThat(getResult.isExists()).isTrue(); + }); + } + +} diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestClientAutoConfigurationTests.java index c1b7746bf3..d46fa13dc4 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRestClientAutoConfigurationTests.java @@ -16,21 +16,10 @@ package org.springframework.boot.autoconfigure.data.elasticsearch; -import java.time.Duration; -import java.util.HashMap; -import java.util.Map; - -import org.elasticsearch.action.get.GetRequest; -import org.elasticsearch.action.index.IndexRequest; -import org.elasticsearch.index.get.GetResult; import org.junit.jupiter.api.Test; -import org.testcontainers.elasticsearch.ElasticsearchContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; @@ -44,13 +33,8 @@ import static org.mockito.Mockito.mock; * * @author Brian Clozel */ -@Testcontainers(disabledWithoutDocker = true) class ReactiveElasticsearchRestClientAutoConfigurationTests { - @Container - static ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withStartupAttempts(5).withStartupTimeout(Duration.ofMinutes(10)); - private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(ReactiveElasticsearchRestClientAutoConfiguration.class)); @@ -73,25 +57,6 @@ class ReactiveElasticsearchRestClientAutoConfigurationTests { .hasSingleBean(ClientConfiguration.class).hasBean("customClientConfiguration")); } - @Test - void restClientCanQueryElasticsearchNode() { - this.contextRunner.withPropertyValues( - "spring.data.elasticsearch.client.reactive.endpoints=" + elasticsearch.getHost() + ":" - + elasticsearch.getFirstMappedPort(), - "spring.data.elasticsearch.client.reactive.connection-timeout=120s", - "spring.data.elasticsearch.client.reactive.socket-timeout=120s").run((context) -> { - ReactiveElasticsearchClient client = context.getBean(ReactiveElasticsearchClient.class); - Map source = new HashMap<>(); - source.put("a", "alpha"); - source.put("b", "bravo"); - IndexRequest indexRequest = new IndexRequest("foo").id("1").source(source); - GetRequest getRequest = new GetRequest("foo").id("1"); - GetResult getResult = client.index(indexRequest).then(client.get(getRequest)).block(); - assertThat(getResult).isNotNull(); - assertThat(getResult.isExists()).isTrue(); - }); - } - @Configuration(proxyBeanMethods = false) static class CustomClientConfiguration {