Skip to content

Commit

Permalink
Using opensearch-testcontainers for tests
Browse files Browse the repository at this point in the history
Signed-off-by: Julien Nioche <julien@digitalpebble.com>
  • Loading branch information
jnioche committed Apr 20, 2023
1 parent 4e351a6 commit f84100c
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 128 deletions.
24 changes: 5 additions & 19 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
<groupId>io.telicent.opensearch</groupId>
<artifactId>SynonymsPlugin</artifactId>
<version>2.6.0.0</version>
<description>A plugin for OpenSearch providing an index-backed synonym handler</description>
<description>A plugin for OpenSearch providing an index-backed synonym
handler</description>
<properties>
<jdk.version>17</jdk.version>
<testcontainer.version>1.17.6</testcontainer.version>
Expand All @@ -15,20 +16,6 @@
<opensearch.version>2.6.0</opensearch.version>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- for disabling security manager in tests -->
<systemPropertyVariables>
<tests.security.manager>false</tests.security.manager>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down Expand Up @@ -146,11 +133,10 @@
<version>${jackson.version}</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.opensearch.client.test/test -->
<dependency>
<groupId>org.opensearch.test</groupId>
<artifactId>framework</artifactId>
<version>${opensearch.version}</version>
<groupId>org.opensearch</groupId>
<artifactId>opensearch-testcontainers</artifactId>
<version>2.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,14 @@ public class SynonymGraphTokenFilterFactory extends AbstractTokenFilterFactory {

private final boolean expand;
private final boolean lenient;
protected final Settings settings;
protected final Environment environment;

protected final String indexName;
protected final int port;
protected final String host;

SynonymGraphTokenFilterFactory(
IndexSettings indexSettings, Environment env, String name, Settings settings) {
super(indexSettings, name, settings);
this.settings = settings;
this.environment = env;

this.expand = settings.getAsBoolean("expand", true);
this.lenient = settings.getAsBoolean("lenient", false);
Expand Down
100 changes: 100 additions & 0 deletions src/test/java/io/telicent/opensearch/IndexedSynonymParserTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*/
package io.telicent.opensearch;

import jakarta.json.spi.JsonProvider;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import org.apache.http.HttpHost;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.synonym.SynonymMap;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.Timeout;
import org.opensearch.client.RestClient;
import org.opensearch.client.json.JsonData;
import org.opensearch.client.json.JsonpMapper;
import org.opensearch.client.json.jackson.JacksonJsonpMapper;
import org.opensearch.client.opensearch.OpenSearchClient;
import org.opensearch.client.opensearch._types.Refresh;
import org.opensearch.client.transport.OpenSearchTransport;
import org.opensearch.client.transport.rest_client.RestClientTransport;
import org.opensearch.testcontainers.OpensearchContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/** Test class for IndexedSynonymParser * */
public class IndexedSynonymParserTest {

@Rule public Timeout globalTimeout = Timeout.seconds(120);

private OpensearchContainer container;

private static final Logger LOG = LoggerFactory.getLogger(IndexedSynonymParserTest.class);

private static final String INDEXNAME = ".synonyms";

@Before
public void setup() throws Exception {

// using opensearch-testcontainers
// https://github.com/opensearch-project/opensearch-testcontainers

String version = System.getProperty("opensearch-version");
if (version == null) version = "2.6.0";
LOG.info("Starting docker instance of OpenSearch {}...", version);

container = new OpensearchContainer("opensearchproject/opensearch:" + version);
container.start();
LOG.info("OpenSearch container started at {}", container.getHttpHostAddress());

indexSynonyms();
}

/** Populates synonyms into a .synonyms index * */
private void indexSynonyms() throws Exception {
final RestClient restClient =
RestClient.builder(HttpHost.create(container.getHttpHostAddress())).build();
final OpenSearchTransport transport =
new RestClientTransport(restClient, new JacksonJsonpMapper());
final OpenSearchClient client = new OpenSearchClient(transport);
final JsonpMapper jsonpMapper = client._transport().jsonpMapper();
final JsonProvider jsonProvider = jsonpMapper.jsonProvider();
final InputStream input = getClass().getClassLoader().getResourceAsStream("synonyms.json");
final JsonData jsondoc = JsonData.from(jsonProvider.createParser(input), jsonpMapper);
client.index(i -> i.index(INDEXNAME).refresh(Refresh.True).document(jsondoc));
client.shutdown();
}

@After
public void close() {
LOG.info("Closing OpenSearch container");
container.close();
}

@Test
public void loadSynonyms() throws IOException, ParseException {
final StandardAnalyzer standardAnalyzer = new StandardAnalyzer();
IndexedSynonymParser parser =
new IndexedSynonymParser(
container.getHost(),
container.getFirstMappedPort().intValue(),
INDEXNAME,
true,
true,
true,
standardAnalyzer);
parser.parse();
SynonymMap synonyms = parser.build();
Assert.assertEquals(7, synonyms.words.size());
}
}
59 changes: 0 additions & 59 deletions src/test/java/io/telicent/opensearch/IndexedSynonymsPluginIT.java

This file was deleted.

This file was deleted.

10 changes: 0 additions & 10 deletions src/test/resources/synonyms-mappings.json

This file was deleted.

0 comments on commit f84100c

Please sign in to comment.