[ICU] move integration tests to REST tests

We can keep only unit tests in plugins instead of starting each time a local node and running tests against it.

Also follow up of #12091

Tests can use more than one JVM

We don't need anymore to set the number of jvm to run tests as we moved IT to Rest Tests
For all plugins but cloud plugins which will require another way for running integration tests.
This commit is contained in:
David Pilato 2015-07-08 10:24:46 +02:00
parent 1c5d8efd47
commit 4738fa04b1
3 changed files with 47 additions and 121 deletions

View File

@ -15,8 +15,6 @@
<description>The ICU Analysis plugin integrates Lucene ICU module into elasticsearch, adding ICU relates analysis components.</description>
<properties>
<tests.jvms>1</tests.jvms>
<es.logger.level>INFO</es.logger.level>
<tests.rest.suite>analysis_icu</tests.rest.suite>
<tests.rest.load_packaged>false</tests.rest.load_packaged>
</properties>

View File

@ -0,0 +1,47 @@
# Integration tests for ICU analysis component
#
---
"Index ICU content":
- do:
indices.create:
index: test
body:
settings:
index:
analysis:
analyzer:
my_analyzer:
tokenizer: standard
filter: ["standard", "lowercase", "my_collator"]
filter:
my_collator:
type: icu_collation
language: en
strength: primary
mappings:
type:
properties:
text:
type: string
analyzer: my_analyzer
- do:
cluster.health:
wait_for_status: yellow
- do:
index:
index: test
type: type
id: 1
body: { "text": "Bâton enflammé" }
- do:
indices.refresh: {}
- do:
search:
index: test
body:
query:
match:
text: baton enflamme
- match: { hits.total: 1 }

View File

@ -1,119 +0,0 @@
/*
* Licensed to Elasticsearch under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch licenses this file to you 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
*
* http://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.elasticsearch.index.analysis;
import org.elasticsearch.action.admin.cluster.node.info.NodesInfoResponse;
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.plugins.PluginsService;
import org.elasticsearch.test.ElasticsearchIntegrationTest;
import org.junit.Test;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
@ElasticsearchIntegrationTest.ClusterScope(scope = ElasticsearchIntegrationTest.Scope.SUITE)
public class ICUIntegrationTests extends ElasticsearchIntegrationTest {
@Override
protected Settings nodeSettings(int nodeOrdinal) {
return Settings.builder()
.put(super.nodeSettings(nodeOrdinal))
.put("plugins." + PluginsService.LOAD_PLUGIN_FROM_CLASSPATH, true)
.build();
}
@Override
public Settings indexSettings() {
Settings settings = Settings.builder()
.put(super.indexSettings())
.put("index.analysis.analyzer.my_analyzer.tokenizer", "standard")
.putArray("index.analysis.analyzer.my_analyzer.filter", "standard", "lowercase", "my_collator")
.put("index.analysis.filter.my_collator.type", "icu_collation")
.put("index.analysis.filter.my_collator.language", "en")
.put("index.analysis.filter.my_collator.strength", "primary")
.build();
return settings;
}
@Test
public void testICUAnalyzer() throws ExecutionException, InterruptedException {
createIndex("test");
ensureGreen("test");
AnalyzeResponse response1 = client().admin().indices()
.prepareAnalyze("Bâton enflammé")
.setIndex("test")
.setAnalyzer("my_analyzer")
.execute().get();
AnalyzeResponse response2 = client().admin().indices()
.prepareAnalyze("baton enflamme")
.setIndex("test")
.setAnalyzer("my_analyzer")
.execute().get();
assertThat(response1, notNullValue());
assertThat(response2, notNullValue());
assertThat(response1.getTokens().size(), is(response2.getTokens().size()));
for (int i = 0; i < response2.getTokens().size(); i++) {
assertThat(response1.getTokens().get(i).getTerm(), is(response2.getTokens().get(i).getTerm()));
}
}
@Test
public void testICUAnalyzerInMapping() throws ExecutionException, InterruptedException, IOException {
createIndex("test");
ensureGreen("test");
final XContentBuilder mapping = jsonBuilder().startObject()
.startObject("type")
.startObject("properties")
.startObject("foo")
.field("type", "string")
.field("analyzer", "my_analyzer")
.endObject()
.endObject()
.endObject()
.endObject();
client().admin().indices().preparePutMapping("test").setType("type").setSource(mapping).get();
index("test", "type", "1", "foo", "Bâton enflammé");
refresh();
SearchResponse response = client().prepareSearch("test").setQuery(
QueryBuilders.matchQuery("foo", "baton enflamme")
).execute().actionGet();
assertThat(response.getHits().getTotalHits(), is(1L));
}
@Test
public void testPluginIsLoaded() {
NodesInfoResponse infos = client().admin().cluster().prepareNodesInfo().setPlugins(true).execute().actionGet();
assertThat(infos.getNodes()[0].getPlugins().getInfos().get(0).getName(), is("analysis-icu"));
}
}