From 7843c63aa36eee8ffb5be6b94833f5f13fe12dd5 Mon Sep 17 00:00:00 2001 From: David Pilato Date: Tue, 7 Jul 2015 12:00:10 +0200 Subject: [PATCH] [kuromoji] 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. --- .../test/analysis_kuromoji/10_basic.yaml | 15 ++++ .../test/analysis_kuromoji/20_search.yaml | 35 ++++++++ .../analysis/KuromojiIntegrationTests.java | 90 ------------------- .../index/analysis/empty_user_dict.txt | 0 .../index/analysis/kuromoji_analysis.json | 0 .../index/analysis/user_dict.txt | 0 plugins/pom.xml | 2 + 7 files changed, 52 insertions(+), 90 deletions(-) create mode 100644 plugins/analysis-kuromoji/rest-api-spec/test/analysis_kuromoji/20_search.yaml delete mode 100644 plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/KuromojiIntegrationTests.java rename plugins/analysis-kuromoji/src/test/{java => resources}/org/elasticsearch/index/analysis/empty_user_dict.txt (100%) rename plugins/analysis-kuromoji/src/test/{java => resources}/org/elasticsearch/index/analysis/kuromoji_analysis.json (100%) rename plugins/analysis-kuromoji/src/test/{java => resources}/org/elasticsearch/index/analysis/user_dict.txt (100%) diff --git a/plugins/analysis-kuromoji/rest-api-spec/test/analysis_kuromoji/10_basic.yaml b/plugins/analysis-kuromoji/rest-api-spec/test/analysis_kuromoji/10_basic.yaml index 86d88b3ebca..dfeac8b18ff 100644 --- a/plugins/analysis-kuromoji/rest-api-spec/test/analysis_kuromoji/10_basic.yaml +++ b/plugins/analysis-kuromoji/rest-api-spec/test/analysis_kuromoji/10_basic.yaml @@ -1,5 +1,20 @@ # Integration tests for Kuromoji analysis components # +--- +"Analyzer": + - do: + indices.analyze: + text: JR新宿駅の近くにビールを飲みに行こうか + analyzer: kuromoji + - length: { tokens: 7 } + - match: { tokens.0.token: jr } + - match: { tokens.1.token: 新宿 } + - match: { tokens.2.token: 駅 } + - match: { tokens.3.token: 近く } + - match: { tokens.4.token: ビール } + - match: { tokens.5.token: 飲む } + - match: { tokens.6.token: 行く } +--- "Tokenizer": - do: indices.analyze: diff --git a/plugins/analysis-kuromoji/rest-api-spec/test/analysis_kuromoji/20_search.yaml b/plugins/analysis-kuromoji/rest-api-spec/test/analysis_kuromoji/20_search.yaml new file mode 100644 index 00000000000..a4bc5020604 --- /dev/null +++ b/plugins/analysis-kuromoji/rest-api-spec/test/analysis_kuromoji/20_search.yaml @@ -0,0 +1,35 @@ +# Integration tests for Kuromoji analysis components +# +--- +"Index kuromoji content": + - do: + indices.create: + index: test + body: + mappings: + type: + properties: + text: + type: string + analyzer: kuromoji + - do: + cluster.health: + wait_for_status: yellow + + - do: + index: + index: test + type: type + id: 1 + body: { "text": "JR新宿駅の近くにビールを飲みに行こうか" } + - do: + indices.refresh: {} + + - do: + search: + index: test + body: + query: + match: + text: jr + - match: { hits.total: 1 } diff --git a/plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/KuromojiIntegrationTests.java b/plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/KuromojiIntegrationTests.java deleted file mode 100644 index a1c4e8c189e..00000000000 --- a/plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/KuromojiIntegrationTests.java +++ /dev/null @@ -1,90 +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.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 KuromojiIntegrationTests extends ElasticsearchIntegrationTest { - - @Override - protected Settings nodeSettings(int nodeOrdinal) { - return Settings.builder() - .put(super.nodeSettings(nodeOrdinal)) - .put("plugins." + PluginsService.LOAD_PLUGIN_FROM_CLASSPATH, true) - .build(); - } - - @Test - public void testKuromojiAnalyzer() throws ExecutionException, InterruptedException { - AnalyzeResponse response = client().admin().indices() - .prepareAnalyze("JR新宿駅の近くにビールを飲みに行こうか").setAnalyzer("kuromoji") - .execute().get(); - - String[] expectedTokens = {"jr", "新宿", "駅", "近く", "ビール", "飲む", "行く"}; - - assertThat(response, notNullValue()); - assertThat(response.getTokens().size(), is(7)); - - for (int i = 0; i < expectedTokens.length; i++) { - assertThat(response.getTokens().get(i).getTerm(), is(expectedTokens[i])); - } - } - - @Test - public void testKuromojiAnalyzerInMapping() throws ExecutionException, InterruptedException, IOException { - createIndex("test"); - ensureGreen("test"); - final XContentBuilder mapping = jsonBuilder().startObject() - .startObject("type") - .startObject("properties") - .startObject("foo") - .field("type", "string") - .field("analyzer", "kuromoji") - .endObject() - .endObject() - .endObject() - .endObject(); - - client().admin().indices().preparePutMapping("test").setType("type").setSource(mapping).get(); - - index("test", "type", "1", "foo", "JR新宿駅の近くにビールを飲みに行こうか"); - refresh(); - - SearchResponse response = client().prepareSearch("test").setQuery( - QueryBuilders.matchQuery("foo", "jr") - ).execute().actionGet(); - - assertThat(response.getHits().getTotalHits(), is(1L)); - } -} diff --git a/plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/empty_user_dict.txt b/plugins/analysis-kuromoji/src/test/resources/org/elasticsearch/index/analysis/empty_user_dict.txt similarity index 100% rename from plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/empty_user_dict.txt rename to plugins/analysis-kuromoji/src/test/resources/org/elasticsearch/index/analysis/empty_user_dict.txt diff --git a/plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/kuromoji_analysis.json b/plugins/analysis-kuromoji/src/test/resources/org/elasticsearch/index/analysis/kuromoji_analysis.json similarity index 100% rename from plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/kuromoji_analysis.json rename to plugins/analysis-kuromoji/src/test/resources/org/elasticsearch/index/analysis/kuromoji_analysis.json diff --git a/plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/user_dict.txt b/plugins/analysis-kuromoji/src/test/resources/org/elasticsearch/index/analysis/user_dict.txt similarity index 100% rename from plugins/analysis-kuromoji/src/test/java/org/elasticsearch/index/analysis/user_dict.txt rename to plugins/analysis-kuromoji/src/test/resources/org/elasticsearch/index/analysis/user_dict.txt diff --git a/plugins/pom.xml b/plugins/pom.xml index dc64b94e580..2e261b8187d 100644 --- a/plugins/pom.xml +++ b/plugins/pom.xml @@ -277,7 +277,9 @@ api/cluster.health.json api/index.json + api/search.json api/indices.analyze.json + api/indices.create.json api/indices.refresh.json api/count.json