Move Docker-based Elasticsearch test into separate class
Closes gh-27904
This commit is contained in:
		
							parent
							
								
									47163af9b6
								
							
						
					
					
						commit
						1f2035ae64
					
				|  | @ -0,0 +1,71 @@ | |||
| /* | ||||
|  * 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.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.client.RequestOptions; | ||||
| import org.elasticsearch.client.RestHighLevelClient; | ||||
| 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 static org.assertj.core.api.Assertions.assertThat; | ||||
| 
 | ||||
| /** | ||||
|  * Integration tests for {@link ElasticsearchRestClientAutoConfiguration}. | ||||
|  * | ||||
|  * @author Brian Clozel | ||||
|  * @author Vedran Pavic | ||||
|  * @author Evgeniy Cheban | ||||
|  */ | ||||
| @Testcontainers(disabledWithoutDocker = true) | ||||
| class ElasticsearchRestClientAutoConfigurationIntegrationTests { | ||||
| 
 | ||||
| 	@Container | ||||
| 	static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) | ||||
| 			.withStartupAttempts(5).withStartupTimeout(Duration.ofMinutes(10)); | ||||
| 
 | ||||
| 	private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() | ||||
| 			.withConfiguration(AutoConfigurations.of(ElasticsearchRestClientAutoConfiguration.class)); | ||||
| 
 | ||||
| 	@Test | ||||
| 	void restClientCanQueryElasticsearchNode() { | ||||
| 		this.contextRunner | ||||
| 				.withPropertyValues("spring.elasticsearch.rest.uris=http://" + elasticsearch.getHttpHostAddress()) | ||||
| 				.run((context) -> { | ||||
| 					RestHighLevelClient client = context.getBean(RestHighLevelClient.class); | ||||
| 					Map<String, String> source = new HashMap<>(); | ||||
| 					source.put("a", "alpha"); | ||||
| 					source.put("b", "bravo"); | ||||
| 					IndexRequest index = new IndexRequest("test").id("1").source(source); | ||||
| 					client.index(index, RequestOptions.DEFAULT); | ||||
| 					GetRequest getRequest = new GetRequest("test").id("1"); | ||||
| 					assertThat(client.get(getRequest, RequestOptions.DEFAULT).isExists()).isTrue(); | ||||
| 				}); | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
|  * Copyright 2012-2020 the original author or authors. | ||||
|  * 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. | ||||
|  | @ -17,7 +17,6 @@ | |||
| package org.springframework.boot.autoconfigure.elasticsearch; | ||||
| 
 | ||||
| import java.time.Duration; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import org.apache.http.HttpHost; | ||||
|  | @ -27,21 +26,14 @@ import org.apache.http.client.CredentialsProvider; | |||
| import org.apache.http.client.config.RequestConfig; | ||||
| import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; | ||||
| import org.assertj.core.api.InstanceOfAssertFactories; | ||||
| import org.elasticsearch.action.get.GetRequest; | ||||
| import org.elasticsearch.action.index.IndexRequest; | ||||
| import org.elasticsearch.client.Node; | ||||
| import org.elasticsearch.client.RequestOptions; | ||||
| import org.elasticsearch.client.RestClient; | ||||
| import org.elasticsearch.client.RestClientBuilder; | ||||
| import org.elasticsearch.client.RestHighLevelClient; | ||||
| 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; | ||||
| 
 | ||||
|  | @ -55,13 +47,8 @@ import static org.mockito.Mockito.mock; | |||
|  * @author Vedran Pavic | ||||
|  * @author Evgeniy Cheban | ||||
|  */ | ||||
| @Testcontainers(disabledWithoutDocker = true) | ||||
| class ElasticsearchRestClientAutoConfigurationTests { | ||||
| 
 | ||||
| 	@Container | ||||
| 	static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) | ||||
| 			.withStartupAttempts(5).withStartupTimeout(Duration.ofMinutes(10)); | ||||
| 
 | ||||
| 	private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() | ||||
| 			.withConfiguration(AutoConfigurations.of(ElasticsearchRestClientAutoConfiguration.class)); | ||||
| 
 | ||||
|  | @ -141,22 +128,6 @@ class ElasticsearchRestClientAutoConfigurationTests { | |||
| 				.isEqualTo(Math.toIntExact(connectTimeout.toMillis())); | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	void restClientCanQueryElasticsearchNode() { | ||||
| 		this.contextRunner | ||||
| 				.withPropertyValues("spring.elasticsearch.rest.uris=http://" + elasticsearch.getHttpHostAddress()) | ||||
| 				.run((context) -> { | ||||
| 					RestHighLevelClient client = context.getBean(RestHighLevelClient.class); | ||||
| 					Map<String, String> source = new HashMap<>(); | ||||
| 					source.put("a", "alpha"); | ||||
| 					source.put("b", "bravo"); | ||||
| 					IndexRequest index = new IndexRequest("test").id("1").source(source); | ||||
| 					client.index(index, RequestOptions.DEFAULT); | ||||
| 					GetRequest getRequest = new GetRequest("test").id("1"); | ||||
| 					assertThat(client.get(getRequest, RequestOptions.DEFAULT).isExists()).isTrue(); | ||||
| 				}); | ||||
| 	} | ||||
| 
 | ||||
| 	@Test | ||||
| 	void configureUriWithUsernameOnly() { | ||||
| 		this.contextRunner.withPropertyValues("spring.elasticsearch.rest.uris=http://user@localhost:9200") | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue