-
Notifications
You must be signed in to change notification settings - Fork 54k
BAEL-9123: Added unit tests for elasticsearch wildcard service #18879
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||
|---|---|---|---|---|
| @@ -0,0 +1,212 @@ | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
| <modelVersion>4.0.0</modelVersion> | ||||
| <artifactId>spring-data-elasticsearch</artifactId> | ||||
| <name>spring-data-elasticsearch</name> | ||||
| <packaging>jar</packaging> | ||||
|
|
||||
| <parent> | ||||
| <groupId>com.baeldung</groupId> | ||||
| <artifactId>parent-boot-3</artifactId> | ||||
| <version>0.0.1-SNAPSHOT</version> | ||||
| <relativePath>../../parent-boot-3</relativePath> | ||||
| </parent> | ||||
|
|
||||
| <dependencies> | ||||
| <dependency> | ||||
| <groupId>org.springframework.data</groupId> | ||||
| <artifactId>spring-data-elasticsearch</artifactId> | ||||
| <version>${spring-data-elasticsearch.version}</version> | ||||
| </dependency> | ||||
| <!--These two dependencies are inherited from spring-data-elasticsearch. Overriding to the newer version | ||||
| will break tests. --> | ||||
| <!-- <dependency>--> | ||||
| <!-- <groupId>co.elastic.clients</groupId>--> | ||||
| <!-- <artifactId>elasticsearch-java</artifactId>--> | ||||
| <!-- <version>${elasticsearch.version}</version>--> | ||||
| <!-- </dependency>--> | ||||
| <!-- <dependency>--> | ||||
| <!-- <groupId>com.fasterxml.jackson.core</groupId>--> | ||||
| <!-- <artifactId>jackson-databind</artifactId>--> | ||||
| <!-- <version>${jackson.version}</version>--> | ||||
| <!-- </dependency>--> | ||||
| <!-- Here for backward compatibility--> | ||||
| <dependency> | ||||
| <groupId>org.elasticsearch.client</groupId> | ||||
| <artifactId>elasticsearch-rest-high-level-client</artifactId> | ||||
| <version>7.17.11</version> | ||||
| </dependency> | ||||
| <dependency> | ||||
| <groupId>org.projectlombok</groupId> | ||||
| <artifactId>lombok</artifactId> | ||||
| <version>${lombok.version}</version> | ||||
| </dependency> | ||||
| <dependency> | ||||
| <groupId>org.springframework.boot</groupId> | ||||
| <artifactId>spring-boot-autoconfigure</artifactId> | ||||
| </dependency> | ||||
| <dependency> | ||||
| <groupId>org.apache.commons</groupId> | ||||
| <artifactId>commons-csv</artifactId> | ||||
| <version>${commons-csv.version}</version> | ||||
| </dependency> | ||||
| <dependency> | ||||
| <groupId>org.springframework.boot</groupId> | ||||
| <artifactId>spring-boot-starter-batch</artifactId> | ||||
| <version>${spring-boot.version}</version> | ||||
| </dependency> | ||||
|
|
||||
| <!-- https://mvnrepository.com/artifact/org.testcontainers/elasticsearch --> | ||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||
| <dependency> | ||||
| <groupId>org.testcontainers</groupId> | ||||
| <artifactId>elasticsearch</artifactId> | ||||
| <version>1.21.3</version> | ||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We have a guideline to extract properties for version numbers |
||||
| <scope>test</scope> | ||||
| </dependency> | ||||
|
|
||||
| <!-- MockWebServer for testing REST endpoints --> | ||||
| <dependency> | ||||
| <groupId>com.squareup.okhttp3</groupId> | ||||
| <artifactId>mockwebserver</artifactId> | ||||
| <scope>test</scope> | ||||
| </dependency> | ||||
|
|
||||
| <!-- Elasticsearch Core --> | ||||
| <dependency> | ||||
| <groupId>org.elasticsearch</groupId> | ||||
| <artifactId>elasticsearch</artifactId> | ||||
| <version>${elasticsearch.version}</version> | ||||
| </dependency> | ||||
|
|
||||
| <!-- Elasticsearch REST Client --> | ||||
| <dependency> | ||||
| <groupId>org.elasticsearch.client</groupId> | ||||
| <artifactId>elasticsearch-rest-client</artifactId> | ||||
| <version>${elasticsearch.version}</version> | ||||
| </dependency> | ||||
|
|
||||
| <!-- Jackson for JSON processing --> | ||||
| <dependency> | ||||
| <groupId>com.fasterxml.jackson.core</groupId> | ||||
| <artifactId>jackson-core</artifactId> | ||||
| </dependency> | ||||
|
|
||||
| <dependency> | ||||
| <groupId>com.fasterxml.jackson.core</groupId> | ||||
| <artifactId>jackson-databind</artifactId> | ||||
| </dependency> | ||||
|
|
||||
| <!-- Logging --> | ||||
| <dependency> | ||||
| <groupId>org.springframework.boot</groupId> | ||||
| <artifactId>spring-boot-starter-logging</artifactId> | ||||
| </dependency> | ||||
|
|
||||
| <!-- Configuration Processor --> | ||||
| <dependency> | ||||
| <groupId>org.springframework.boot</groupId> | ||||
| <artifactId>spring-boot-configuration-processor</artifactId> | ||||
| <optional>true</optional> | ||||
| </dependency> | ||||
|
|
||||
| <!-- ===== TEST DEPENDENCIES ===== --> | ||||
|
|
||||
| <!-- Spring Boot Test Starter --> | ||||
| <dependency> | ||||
| <groupId>org.springframework.boot</groupId> | ||||
| <artifactId>spring-boot-starter-test</artifactId> | ||||
| <scope>test</scope> | ||||
| </dependency> | ||||
|
|
||||
| <!-- Spring Boot Testcontainers Support --> | ||||
| <dependency> | ||||
| <groupId>org.springframework.boot</groupId> | ||||
| <artifactId>spring-boot-testcontainers</artifactId> | ||||
| <scope>test</scope> | ||||
| </dependency> | ||||
|
|
||||
| <!-- Testcontainers JUnit 5 Integration --> | ||||
| <dependency> | ||||
| <groupId>org.testcontainers</groupId> | ||||
| <artifactId>junit-jupiter</artifactId> | ||||
| <version>${testcontainers.version}</version> | ||||
| <scope>test</scope> | ||||
| </dependency> | ||||
|
|
||||
| <!-- Testcontainers Elasticsearch --> | ||||
| <dependency> | ||||
| <groupId>org.testcontainers</groupId> | ||||
| <artifactId>elasticsearch</artifactId> | ||||
| <version>${testcontainers.version}</version> | ||||
| <scope>test</scope> | ||||
| </dependency> | ||||
|
|
||||
| <!-- Testcontainers Core --> | ||||
| <dependency> | ||||
| <groupId>org.testcontainers</groupId> | ||||
| <artifactId>testcontainers</artifactId> | ||||
| <version>${testcontainers.version}</version> | ||||
| <scope>test</scope> | ||||
| </dependency> | ||||
|
|
||||
| <!-- MockWebServer for testing REST endpoints --> | ||||
| <dependency> | ||||
| <groupId>com.squareup.okhttp3</groupId> | ||||
| <artifactId>mockwebserver</artifactId> | ||||
| <scope>test</scope> | ||||
| </dependency> | ||||
|
|
||||
| <!-- AssertJ for better assertions (optional but recommended) --> | ||||
| <dependency> | ||||
| <groupId>org.assertj</groupId> | ||||
| <artifactId>assertj-core</artifactId> | ||||
| <scope>test</scope> | ||||
| </dependency> | ||||
|
|
||||
|
|
||||
| </dependencies> | ||||
|
|
||||
| <dependencyManagement> | ||||
| <dependencies> | ||||
| <!-- Testcontainers BOM to manage versions --> | ||||
| <dependency> | ||||
| <groupId>org.testcontainers</groupId> | ||||
| <artifactId>testcontainers-bom</artifactId> | ||||
| <version>${testcontainers.version}</version> | ||||
| <type>pom</type> | ||||
| <scope>import</scope> | ||||
| </dependency> | ||||
| </dependencies> | ||||
| </dependencyManagement> | ||||
|
|
||||
| <build> | ||||
| <plugins> | ||||
| <plugin> | ||||
| <groupId>org.springframework.boot</groupId> | ||||
| <artifactId>spring-boot-maven-plugin</artifactId> | ||||
| </plugin> | ||||
| <plugin> | ||||
| <groupId>org.apache.maven.plugins</groupId> | ||||
| <artifactId>maven-compiler-plugin</artifactId> | ||||
| <configuration> | ||||
| <source>17</source> | ||||
| <target>17</target> | ||||
| </configuration> | ||||
| </plugin> | ||||
| </plugins> | ||||
| </build> | ||||
|
|
||||
| <properties> | ||||
| <spring-data-elasticsearch.version>5.1.2</spring-data-elasticsearch.version> | ||||
| <elasticsearch.version>8.9.0</elasticsearch.version> | ||||
| <commons-csv.version>1.12.0</commons-csv.version> | ||||
| <java.version>11</java.version> | ||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Intentional to have 11 here but 17 in compiler plugin? Also check if the parent already has maven-compiler-plugin and spring-boot-maven-plugin defined |
||||
| <maven.compiler.source>11</maven.compiler.source> | ||||
| <maven.compiler.target>11</maven.compiler.target> | ||||
| <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||
| <elasticsearch.version>8.11.1</elasticsearch.version> | ||||
| <testcontainers.version>1.19.3</testcontainers.version> | ||||
| </properties> | ||||
|
|
||||
| </project> | ||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| package com.baeldung; | ||
|
|
||
| import org.springframework.boot.SpringApplication; | ||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
| import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; | ||
|
|
||
|
|
||
| // Exclude DataSource auto-configuration since we're only using Elasticsearch | ||
| @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) | ||
| public class Application { | ||
|
|
||
| public static void main(String[] args) { | ||
| SpringApplication.run(Application.class, args); | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| package com.baeldung.wildcardsearch; | ||
|
|
||
|
|
||
| import co.elastic.clients.elasticsearch.ElasticsearchClient; | ||
| import co.elastic.clients.json.jackson.JacksonJsonpMapper; | ||
| import co.elastic.clients.transport.rest_client.RestClientTransport; | ||
| import org.apache.http.HttpHost; | ||
| import org.elasticsearch.client.RestClient; | ||
| import org.springframework.beans.factory.annotation.Value; | ||
| import org.springframework.context.annotation.Bean; | ||
| import org.springframework.context.annotation.Configuration; | ||
|
|
||
| @Configuration | ||
| public class ElasticsearchConfig { | ||
|
|
||
| @Value("${elasticsearch.host:localhost}") | ||
| private String host; | ||
|
|
||
| @Value("${elasticsearch.port:9200}") | ||
| private int port; | ||
|
|
||
| @Bean | ||
| public RestClient restClient() { | ||
| return RestClient.builder(new HttpHost(host, port, "http")).setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(5000).setSocketTimeout(60000)).setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setMaxConnTotal(100).setMaxConnPerRoute(100)).build(); | ||
| } | ||
|
|
||
| @Bean | ||
| public ElasticsearchClient elasticsearchClient(RestClient restClient) { | ||
| RestClientTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper()); | ||
| return new ElasticsearchClient(transport); | ||
| } | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What breaks here exactly?