Ответ 1
Чтобы написать тесты для вашего плагина, вы можете использовать Elasticearch Cluster Runner. Для справки проверьте, как MinHash Plugin написал тест.
UPDATE:
Я изменил класс CustomParserPluginTest
для использования Runner Cluster Runner:
import static org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.newConfigs;
import java.util.Map;
import junit.framework.TestCase;
import org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.bytes.BytesArray;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.ImmutableSettings.Builder;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.index.get.GetField;
import org.junit.Assert;
import org.elasticsearch.action.search.SearchResponse;
import static org.hamcrest.core.Is.is;
public class CustomParserPluginTest extends TestCase {
private ElasticsearchClusterRunner runner;
@Override
protected void setUp() throws Exception {
// create runner instance
runner = new ElasticsearchClusterRunner();
// create ES nodes
runner.onBuild(new ElasticsearchClusterRunner.Builder() {
@Override
public void build(final int number, final Builder settingsBuilder) {
}
}).build(newConfigs().ramIndexStore().numOfNode(1));
// wait for yellow status
runner.ensureYellow();
}
@Override
protected void tearDown() throws Exception {
// close runner
runner.close();
// delete all files
runner.clean();
}
public void test_jsonParsing() throws Exception {
final String index = "test_index";
runner.createIndex(index, ImmutableSettings.builder().build());
runner.ensureYellow(index);
final SearchResponse test = runner.client().prepareSearch(index).setSource(addQuery()).execute().actionGet();
}
private String addQuery() {
return "{\"match_all\":{\"boost\":1.2}}";
}
}
Я создал файл es-plugin.properties
(pluginrootdirectory\src\main\resources) со следующим содержимым, которое заставит экземпляр elasticsearch загрузить плагин:
plugin=CustomQueryParserPlugin
Когда вы запустите этот тест, вы увидите на выходе, что только что созданное вложение elasticsearch загрузило плагин.
[2015-04-29 19: 22: 10,783] [INFO] [org.elasticsearch.node] [ Node 1] версия [1.5.0], pid [34360], сборка [5448160/2015-03-23T14: 30: 58Z] [2015-04-29 19: 22: 10,784] [INFO] [org.elasticsearch.node] [Node 1] initializin g... [2015-04-29 19: 22: 10,795] [INFO ] [org.elasticsearch.plugins] [Node 1] загружен [ custom_query], сайты [] [2015-04-29 19: 22: 13,342] [INFO] [org.elasticsearch.node] [ Node 1] инициализируется
[2015-04-29 19: 22: 13,342] [INFO] [org.elasticsearch.node] [ Node 1] начало...
Надеюсь, что это поможет.