diff --git a/src/test/java/org/elasticsearch/alerts/AbstractAlertingTests.java b/src/test/java/org/elasticsearch/alerts/AbstractAlertingTests.java new file mode 100644 index 00000000000..0dd3f0c1ba6 --- /dev/null +++ b/src/test/java/org/elasticsearch/alerts/AbstractAlertingTests.java @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +package org.elasticsearch.alerts; + +import org.elasticsearch.action.search.SearchRequest; +import org.elasticsearch.alerts.client.AlertsClient; +import org.elasticsearch.alerts.plugin.AlertsPlugin; +import org.elasticsearch.common.bytes.BytesReference; +import org.elasticsearch.common.settings.ImmutableSettings; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.xcontent.ToXContent; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentHelper; +import org.elasticsearch.test.ElasticsearchIntegrationTest; +import org.junit.After; + +import java.io.IOException; + +import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; + +/** + */ +public class AbstractAlertingTests extends ElasticsearchIntegrationTest { + + @Override + protected Settings nodeSettings(int nodeOrdinal) { + return ImmutableSettings.builder() + .put(super.nodeSettings(nodeOrdinal)) + .put("scroll.size", randomIntBetween(1, 100)) + .put("plugin.mandatory", "alerts") + .put("plugin.types", AlertsPlugin.class.getName()) + .put("node.mode", "network") + .put("http.enabled", true) + .put("plugins.load_classpath_plugins", false) + .build(); + } + + @After + public void clearAlerts() { + // Clear all in-memory alerts on all nodes, perhaps there isn't an elected master at this point + for (AlertManager manager : internalCluster().getInstances(AlertManager.class)) { + manager.clear(); + } + } + + protected BytesReference createAlertSource(String cron, SearchRequest request, String scriptTrigger) throws IOException { + XContentBuilder builder = jsonBuilder().startObject(); + builder.field("schedule", cron); + builder.field("enable", true); + + builder.startObject("request"); + XContentHelper.writeRawField("body", request.source(), builder, ToXContent.EMPTY_PARAMS); + builder.startArray("indices"); + for (String index : request.indices()) { + builder.value(index); + } + builder.endArray(); + builder.endObject(); + + builder.startObject("trigger"); + builder.startObject("script"); + builder.field("script", scriptTrigger); + builder.endObject(); + builder.endObject(); + + builder.startObject("actions"); + builder.startObject("index"); + builder.field("index", "my-index"); + builder.field("type", "trail"); + builder.endObject(); + builder.endObject(); + + return builder.endObject().bytes(); + } + + protected AlertsClient alertClient() { + return internalCluster().getInstance(AlertsClient.class); + } + +} diff --git a/src/test/java/org/elasticsearch/alerts/BasicAlertingTest.java b/src/test/java/org/elasticsearch/alerts/BasicAlertingTest.java index 0dfa8c17133..ecbbf490ad6 100644 --- a/src/test/java/org/elasticsearch/alerts/BasicAlertingTest.java +++ b/src/test/java/org/elasticsearch/alerts/BasicAlertingTest.java @@ -10,25 +10,15 @@ import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.alerts.actions.AlertActionManager; import org.elasticsearch.alerts.actions.AlertActionState; -import org.elasticsearch.alerts.client.AlertsClient; import org.elasticsearch.alerts.client.AlertsClientInterface; -import org.elasticsearch.alerts.plugin.AlertsPlugin; import org.elasticsearch.alerts.transport.actions.delete.DeleteAlertRequest; import org.elasticsearch.alerts.transport.actions.delete.DeleteAlertResponse; import org.elasticsearch.common.bytes.BytesReference; -import org.elasticsearch.common.settings.ImmutableSettings; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.ToXContent; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.test.ElasticsearchIntegrationTest; -import org.junit.After; import org.junit.Test; -import java.io.IOException; import java.util.concurrent.TimeUnit; -import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery; import static org.elasticsearch.index.query.QueryBuilders.termQuery; import static org.elasticsearch.search.builder.SearchSourceBuilder.searchSource; @@ -39,20 +29,7 @@ import static org.hamcrest.core.Is.is; /** */ @ElasticsearchIntegrationTest.ClusterScope(scope = ElasticsearchIntegrationTest.Scope.SUITE, numClientNodes = 0, transportClientRatio = 0) -public class BasicAlertingTest extends ElasticsearchIntegrationTest { - - @Override - protected Settings nodeSettings(int nodeOrdinal) { - return ImmutableSettings.builder() - .put(super.nodeSettings(nodeOrdinal)) - .put("scroll.size", randomIntBetween(1, 100)) - .put("plugin.mandatory", "alerts") - .put("plugin.types", AlertsPlugin.class.getName()) - .put("node.mode", "network") - .put("http.enabled", true) - .put("plugins.load_classpath_plugins", false) - .build(); - } +public class BasicAlertingTest extends AbstractAlertingTests { @Test public void testIndexAlert() throws Exception { @@ -103,46 +80,4 @@ public class BasicAlertingTest extends ElasticsearchIntegrationTest { assertHitCount(client().prepareCount(AlertsStore.ALERT_INDEX).get(), 0l); } - @After - public void clearAlerts() { - // Clear all in-memory alerts on all nodes, perhaps there isn't an elected master at this point - for (AlertManager manager : internalCluster().getInstances(AlertManager.class)) { - manager.clear(); - } - } - - private BytesReference createAlertSource(String cron, SearchRequest request, String scriptTrigger) throws IOException { - XContentBuilder builder = jsonBuilder().startObject(); - builder.field("schedule", cron); - builder.field("enable", true); - - builder.startObject("request"); - XContentHelper.writeRawField("body", request.source(), builder, ToXContent.EMPTY_PARAMS); - builder.startArray("indices"); - for (String index : request.indices()) { - builder.value(index); - } - builder.endArray(); - builder.endObject(); - - builder.startObject("trigger"); - builder.startObject("script"); - builder.field("script", scriptTrigger); - builder.endObject(); - builder.endObject(); - - builder.startObject("actions"); - builder.startObject("index"); - builder.field("index", "my-index"); - builder.field("type", "trail"); - builder.endObject(); - builder.endObject(); - - return builder.endObject().bytes(); - } - - private AlertsClient alertClient() { - return internalCluster().getInstance(AlertsClient.class); - } - }