Skip to content

Commit

Permalink
HSEARCH-4190 Remove the need for explicitly specifying that the Elast…
Browse files Browse the repository at this point in the history
…icsearch server is provided when running tests

If test.elasticsearch.host.url is set, the server is provided. If it's
not, then it's not provided.

Signed-off-by: Yoann Rodière <yoann@hibernate.org>
  • Loading branch information
yrodiere committed Mar 17, 2021
1 parent 87b1c71 commit 5d781b6
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 18 deletions.
1 change: 0 additions & 1 deletion Jenkinsfile
Expand Up @@ -480,7 +480,6 @@ stage('Non-default environments') {
mavenNonDefaultBuild buildEnv, """ \
clean install -pl org.hibernate:hibernate-search-integrationtest-elasticsearch \
${toElasticsearchVersionArgs(buildEnv.mavenProfile, buildEnv.version)} \
-Dtest.elasticsearch.host.provided=true \
-Dtest.elasticsearch.host.url=$buildEnv.endpointUrl \
-Dtest.elasticsearch.host.aws.signing.enabled=true \
-Dtest.elasticsearch.host.aws.access_key=$AWS_ACCESS_KEY_ID \
Expand Down
10 changes: 5 additions & 5 deletions README.md
Expand Up @@ -83,24 +83,24 @@ A list of available versions for `test.elasticsearch.host.version` can be found

Alternatively, you can prevent the build from launching an Elasticsearch server automatically
and run Elasticsearch-related tests against your own server using the
`test.elasticsearch.host.provided` and `test.elasticsearch.host.url` properties:
`test.elasticsearch.host.url` property:

> mvn clean install -Dtest.elasticsearch.host.provided=true -Dtest.elasticsearch.host.url=http://localhost:9200
> mvn clean install -Dtest.elasticsearch.host.url=http://localhost:9200

If you want to run tests against an older Elasticsearch version (2.x for instance),
you will still have to select a profile among those listed above, and disable the default profile:

> mvn clean install -P!elasticsearch-5.2,elasticsearch-2.2 -Dtest.elasticsearch.host.provided=true -Dtest.elasticsearch.host.url=http://localhost:9200
> mvn clean install -P!elasticsearch-5.2,elasticsearch-2.2 -Dtest.elasticsearch.host.url=http://localhost:9200

You may also use authentication:

> mvn clean install -Dtest.elasticsearch.host.provided=true -Dtest.elasticsearch.host.url=https://localhost:9200 -Dtest.elasticsearch.host.username=ironman -Dtest.elasticsearch.host.password=j@rV1s
> mvn clean install -Dtest.elasticsearch.host.url=https://localhost:9200 -Dtest.elasticsearch.host.username=ironman -Dtest.elasticsearch.host.password=j@rV1s

Also, the elasticsearch module (and only this one) can execute its integration tests
against an Elasticsearch service on AWS.
You will need to execute something along the lines of:

> mvn integration-test -pl elasticsearch -Dtest.elasticsearch.host.provided=true -Dtest.elasticsearch.host.url=<The full URL of your Elasticsearch endpoint> -Dtest.elasticsearch.host.aws.access_key=<Your access key> -Dtest.elasticsearch.host.aws.secret_key=<Your secret key> -Dtest.elasticsearch.host.aws.region=<Your AWS region ID>
> mvn integration-test -pl elasticsearch -Dtest.elasticsearch.host.url=<The full URL of your Elasticsearch endpoint> -Dtest.elasticsearch.host.aws.access_key=<Your access key> -Dtest.elasticsearch.host.aws.secret_key=<Your secret key> -Dtest.elasticsearch.host.aws.region=<Your AWS region ID>

When building Hibernate Search with new JDKs, you may want to run Elasticsearch with a different JDK than the one used by Maven.
This can be done by setting a property
Expand Down
2 changes: 1 addition & 1 deletion integrationtest/wildfly/pom.xml
Expand Up @@ -475,7 +475,7 @@
<test.module-slot.org.hibernate.search>main</test.module-slot.org.hibernate.search>
<test.module-slot.org.hibernate>main</test.module-slot.org.hibernate>
<!-- WildFly doesn't package Hibernate Search ElasticSearch integration, no need to launch an instance -->
<test.elasticsearch.host.provided>true</test.elasticsearch.host.provided>
<test.elasticsearch.run.skip>true</test.elasticsearch.run.skip>
</properties>
<build>
<plugins>
Expand Down
2 changes: 1 addition & 1 deletion jenkins/performance-elasticsearch.groovy
Expand Up @@ -6,7 +6,7 @@ node ('Performance') {
stage ('Build') {
sh "mvn clean install" +
" -U -am -pl :hibernate-search-performance-engine-elasticsearch" +
" -DskipTests -Dtest.elasticsearch.host.provided=true"
" -DskipTests -Dtest.elasticsearch.run.skip=true"
}

stage ('Performance test') {
Expand Down
2 changes: 1 addition & 1 deletion jenkins/performance-orm.groovy
Expand Up @@ -6,7 +6,7 @@ node ('Performance') {
stage ('Build') {
sh "mvn clean install" +
" -U -am -pl :hibernate-search-performance-orm" +
" -DskipTests -Dtest.elasticsearch.host.provided=true"
" -DskipTests -Dtest.elasticsearch.run.skip=true"
}

def scenarios
Expand Down
47 changes: 38 additions & 9 deletions pom.xml
Expand Up @@ -284,7 +284,7 @@
<!-- Elasticsearch tests properties -->

<test.elasticsearch.java_home>${java.home}</test.elasticsearch.java_home>
<test.elasticsearch.host.url>http://localhost:9200</test.elasticsearch.host.url>
<test.elasticsearch.host.url></test.elasticsearch.host.url><!-- The default is set in profiles -->
<test.elasticsearch.host.username></test.elasticsearch.host.username>
<test.elasticsearch.host.password></test.elasticsearch.host.password>

Expand Down Expand Up @@ -1798,6 +1798,7 @@
<artifactId>elasticsearch-maven-plugin</artifactId>
<version>${version.elasticsearch.plugin}</version>
<configuration>
<skip>${test.elasticsearch.run.skip}</skip>
<clusterName>hsearchEsTestCluster</clusterName>
<httpPort>9200</httpPort>
</configuration>
Expand Down Expand Up @@ -1919,7 +1920,7 @@
</activation>
<properties>
<!-- This is to avoid starting an Elasticsearch node for each module needing integration test -->
<test.elasticsearch.host.provided>true</test.elasticsearch.host.provided>
<test.elasticsearch.run.skip>true</test.elasticsearch.run.skip>
<!-- And this to avoid unzipping any WildFly server, included modules, configurations and JDBC drivers -->
<skipWildFlyPreparation>true</skipWildFlyPreparation>
</properties>
Expand All @@ -1933,7 +1934,7 @@
</activation>
<properties>
<!-- This is to avoid starting an Elasticsearch node for each module needing integration test -->
<test.elasticsearch.host.provided>true</test.elasticsearch.host.provided>
<test.elasticsearch.run.skip>true</test.elasticsearch.run.skip>
<!-- And this to avoid unzipping any WildFly server, included modules, configurations and JDBC drivers -->
<skipWildFlyPreparation>true</skipWildFlyPreparation>
</properties>
Expand Down Expand Up @@ -2298,6 +2299,34 @@
mvn clean test -Pelasticsearch-2.0 -Dtest.elasticsearch.version=2.1.0
-->

<!-- Profile enabled when an Elasticsearch instance must be run by Maven -->
<profile>
<id>elasticsearch-run</id>
<activation>
<!-- Activate by default, i.e. if test.elasticsearch.host.url has not been defined explicitly -->
<property>
<name>!test.elasticsearch.host.url</name>
</property>
</activation>
<properties>
<test.elasticsearch.host.url>http://localhost:9200</test.elasticsearch.host.url>
<test.elasticsearch.run.skip>false</test.elasticsearch.run.skip>
</properties>
</profile>
<!-- Profile enabled when an Elasticsearch instance must NOT be run by Maven -->
<profile>
<id>elasticsearch-do-not-run</id>
<activation>
<!-- Activate if test.elasticsearch.host.url has been defined explicitly -->
<property>
<name>test.elasticsearch.host.url</name>
</property>
</activation>
<properties>
<test.elasticsearch.run.skip>true</test.elasticsearch.run.skip>
</properties>
</profile>

<!-- Elasticsearch [2.0,2.2) test environment -->
<profile>
<id>elasticsearch-2.0</id>
Expand All @@ -2318,7 +2347,7 @@
<goal>unpack</goal>
</goals>
<configuration>
<skip>${test.elasticsearch.host.provided}</skip>
<skip>${test.elasticsearch.run.skip}</skip>
<artifactItems>
<!-- Delete-by-query is a plugin in Elasticsearch 2.x -->
<artifactItem>
Expand All @@ -2339,7 +2368,7 @@
<artifactId>elasticsearch-maven-plugin</artifactId>
<version>${version.elasticsearch.plugin}</version>
<configuration>
<skip>${test.elasticsearch.host.provided}</skip>
<skip>${test.elasticsearch.run.skip}</skip>
<tcpPort>9300</tcpPort>
<pluginsPath>${project.build.directory}/_ES_PLUGINS_</pluginsPath>
<outputDirectory>${project.build.directory}/elastisearch0</outputDirectory>
Expand Down Expand Up @@ -2405,7 +2434,7 @@
<goal>unpack</goal>
</goals>
<configuration>
<skip>${test.elasticsearch.host.provided}</skip>
<skip>${test.elasticsearch.run.skip}</skip>
<artifactItems>
<!-- Delete-by-query is a plugin in Elasticsearch 2.x -->
<artifactItem>
Expand Down Expand Up @@ -2435,7 +2464,7 @@
<artifactId>elasticsearch-maven-plugin</artifactId>
<version>${version.elasticsearch.plugin}</version>
<configuration>
<skip>${test.elasticsearch.host.provided}</skip>
<skip>${test.elasticsearch.run.skip}</skip>
<tcpPort>9300</tcpPort>
<pluginsPath>${project.build.directory}/_ES_PLUGINS_</pluginsPath>
<outputDirectory>${project.build.directory}/elastisearch0</outputDirectory>
Expand Down Expand Up @@ -2485,7 +2514,7 @@
<artifactId>elasticsearch-maven-plugin</artifactId>
<version>${version.elasticsearch.plugin}</version>
<configuration>
<skip>${test.elasticsearch.host.provided}</skip>
<skip>${test.elasticsearch.run.skip}</skip>
<version>${test.elasticsearch.host.version}</version>
<timeout>90</timeout><!-- Make it work on our slow CI -->
<pathConf>${project.build.directory}/elasticsearch-maven-plugin/5.0/configuration/</pathConf>
Expand Down Expand Up @@ -2539,7 +2568,7 @@
<artifactId>elasticsearch-maven-plugin</artifactId>
<version>${version.elasticsearch.plugin}</version>
<configuration>
<skip>${test.elasticsearch.host.provided}</skip>
<skip>${test.elasticsearch.run.skip}</skip>
<version>${test.elasticsearch.host.version}</version>
<timeout>90</timeout><!-- Make it work on our slow CI -->
<pathConf>${project.build.directory}/elasticsearch-maven-plugin/5.0/configuration/</pathConf>
Expand Down

0 comments on commit 5d781b6

Please sign in to comment.