Skip to content

Commit

Permalink
HSEARCH-4867 Test the Amazon OpenSearch Serverless dialect against a …
Browse files Browse the repository at this point in the history
…simulated (local) OpenSearch instance on CI
  • Loading branch information
yrodiere committed Aug 31, 2023
1 parent 7e26c40 commit e68fa20
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 8 deletions.
7 changes: 5 additions & 2 deletions CONTRIBUTING.md
Expand Up @@ -312,14 +312,17 @@ You may redefine the distribution/version to use by specifying the properties
./mvnw clean install -Dtest.elasticsearch.distribution=elastic -Dtest.elasticsearch.version=6.0.0
```
The following distribution options are supported:
* `elastic` - for Elasticsearch distribution
* `opensearch` - for Opensearch distribution
* `elastic` for Elasticsearch distribution
* `opensearch` for OpenSearch (local or Amazon OpenSearch Service)
* `amazon-opensearch-serverless` for Amazon OpenSearch Serverless

For available versions of Elasticsearch distribution from Elastic see [DockerHub](https://hub.docker.com/r/elastic/elasticsearch/tags).
Please note that Elasticsearch [distributions starting with version 7.11 are not open-source](https://opensource.org/node/1099).

For available versions of [OpenSearch](https://www.opensearch.org/) distribution see [DockerHub](https://hub.docker.com/r/opensearchproject/opensearch/tags).

For Amazon OpenSearch Serverless, the version must be unset (set to an empty string).

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.connection.uris` property:
Expand Down
29 changes: 23 additions & 6 deletions Jenkinsfile
Expand Up @@ -255,16 +255,22 @@ stage('Configure') {
new LocalOpenSearchBuildEnvironment(version: '2.6.0', condition: TestCondition.ON_DEMAND),
new LocalOpenSearchBuildEnvironment(version: '2.7.0', condition: TestCondition.ON_DEMAND),
new LocalOpenSearchBuildEnvironment(version: '2.8.0', condition: TestCondition.ON_DEMAND),
new LocalOpenSearchBuildEnvironment(version: '2.9.0', condition: TestCondition.BEFORE_MERGE)
new LocalOpenSearchBuildEnvironment(version: '2.9.0', condition: TestCondition.BEFORE_MERGE),
// See https://opensearch.org/lines/2x.html for a list of all 2.x versions

// --------------------------------------------
// Amazon OpenSearch Serverless dialect running against a local OpenSearch instance
// WARNING: this does NOT actually run against Amazon OpenSearch Serverless (yet)
// See https://hibernate.atlassian.net/browse/HSEARCH-4919
new AmazonOpenSearchServerlessLocalBuildEnvironment(condition: TestCondition.AFTER_MERGE)
],
amazonElasticsearch: [
// --------------------------------------------
// AWS Elasticsearch service (OpenDistro)
// Amazon Elasticsearch Service (OpenDistro)
new AmazonElasticsearchServiceBuildEnvironment(version: '7.10', condition: TestCondition.AFTER_MERGE),

// --------------------------------------------
// AWS OpenSearch service
// Amazon OpenSearch Service
new AmazonOpenSearchServiceBuildEnvironment(version: '1.3', condition: TestCondition.AFTER_MERGE),
new AmazonOpenSearchServiceBuildEnvironment(version: '2.5', condition: TestCondition.AFTER_MERGE),
// Also test static credentials, but only for the latest version
Expand Down Expand Up @@ -748,7 +754,7 @@ class LocalElasticsearchBuildEnvironment extends BuildEnvironment {
String version
String getTagPrefix() { 'elasticsearch-local' }
@Override
String getTag() { "$tagPrefix-$version" }
String getTag() { tagPrefix + (version ? '-' + version : '') }
String getDistribution() { 'elastic' }
}

Expand All @@ -757,7 +763,18 @@ class LocalOpenSearchBuildEnvironment extends LocalElasticsearchBuildEnvironment
@Override
String getTagPrefix() { 'opensearch-local' }
@Override
String getDistribution() { "opensearch" }
String getDistribution() { 'opensearch' }
}

class AmazonOpenSearchServerlessLocalBuildEnvironment
extends LocalOpenSearchBuildEnvironment {
{
setVersion('')
}
@Override
String getTagPrefix() { 'amazon-opensearch-serverless' }
@Override
String getDistribution() { 'amazon-opensearch-serverless' }
}

class AmazonElasticsearchServiceBuildEnvironment extends LocalElasticsearchBuildEnvironment {
Expand All @@ -766,7 +783,7 @@ class AmazonElasticsearchServiceBuildEnvironment extends LocalElasticsearchBuild
String getTagPrefix() { 'amazon-elasticsearch-service' }
@Override
String getTag() {
"$tagPrefix-$version" + (staticCredentials ? '-credentials-static' : '')
tagPrefix + (version ? '-' + version : '') + (staticCredentials ? '-credentials-static' : '')
}
String getLockedResourcesPrefix() { 'es' }
String getLockedResourcesLabel() {
Expand Down
26 changes: 26 additions & 0 deletions build/parents/integrationtest/pom.xml
Expand Up @@ -518,6 +518,32 @@
</properties>
</profile>

<profile>
<id>amazon-opensearch-serverless</id>
<activation>
<property>
<name>test.elasticsearch.distribution</name>
<value>amazon-opensearch-serverless</value>
</property>
</activation>
<properties>
<!-- We'll simulate testing against Amazon OpenSearch Serverless by:
1. Using the Amazon OpenSearch Serverless in Hibernate Search
2. Connecting to a (local) OpenSearch container running the latest version
-->
<!-- Amazon OpenSearch Serverless doesn't use versions -->
<test.elasticsearch.version/>
<!-- We'll simulate Amazon OpenSearch Serverless with a (local)
OpenSearch container running the latest version -->
<test.elasticsearch.run.opensearch.skip>${test.elasticsearch.run.skip}</test.elasticsearch.run.opensearch.skip>
<test.elasticsearch.run.elastic.skip>true</test.elasticsearch.run.elastic.skip>
<test.elasticsearch.run.opensearch.image.tag>${version.org.opensearch.latest}</test.elasticsearch.run.opensearch.image.tag>
<!-- This is just to fix docker-maven-plugin, which complains about
invalid image names (missing version) even for disabled images -->
<test.elasticsearch.run.elastic.image.tag>${version.org.elasticsearch.latest}</test.elasticsearch.run.elastic.image.tag>
</properties>
</profile>

<!-- =============================== -->
<!-- Database profiles -->
<!-- =============================== -->
Expand Down
Expand Up @@ -25,6 +25,10 @@ public Map<String, String> rawBackendProperties() {
Map<String, String> properties = new LinkedHashMap<>();
properties.put( "log.json_pretty_printing", "true" );
ElasticsearchTestHostConnectionConfiguration.get().addToBackendProperties( properties );
if ( ElasticsearchDistributionName.AMAZON_OPENSEARCH_SERVERLESS.equals( ElasticsearchTestDialect.getActualVersion().distribution() ) ) {
// The distribution/version cannot be detected on Amazon OpenSearch Serverless
properties.put( "version", ElasticsearchTestDialect.getActualVersion().toString() );
}
return properties;
}

Expand Down

0 comments on commit e68fa20

Please sign in to comment.