|
@@ -39,7 +39,6 @@ import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static org.elasticsearch.xpack.core.monitoring.exporter.MonitoringTemplateUtils.OLD_TEMPLATE_IDS;
|
|
|
-import static org.elasticsearch.xpack.core.monitoring.exporter.MonitoringTemplateUtils.PIPELINE_IDS;
|
|
|
import static org.elasticsearch.xpack.core.monitoring.exporter.MonitoringTemplateUtils.TEMPLATE_IDS;
|
|
|
import static org.elasticsearch.xpack.monitoring.exporter.http.AsyncHttpResourceHelper.whenPerformRequestAsyncWith;
|
|
|
import static org.elasticsearch.xpack.monitoring.exporter.http.AsyncHttpResourceHelper.wrapMockListener;
|
|
@@ -70,13 +69,11 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
* kibana, logstash, and beats
|
|
|
*/
|
|
|
private final int EXPECTED_TEMPLATES = TEMPLATE_IDS.length + (createOldTemplates ? OLD_TEMPLATE_IDS.length : 0);
|
|
|
- private final int EXPECTED_PIPELINES = PIPELINE_IDS.length;
|
|
|
private final int EXPECTED_WATCHES = ClusterAlertsUtil.WATCH_IDS.length;
|
|
|
|
|
|
private final RestClient client = mock(RestClient.class);
|
|
|
private final Response versionResponse = mock(Response.class);
|
|
|
private final List<String> templateNames = new ArrayList<>(EXPECTED_TEMPLATES);
|
|
|
- private final List<String> pipelineNames = new ArrayList<>(EXPECTED_PIPELINES);
|
|
|
private final List<String> watchNames = new ArrayList<>(EXPECTED_WATCHES);
|
|
|
|
|
|
private final Settings exporterSettings = Settings.builder()
|
|
@@ -96,11 +93,9 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
Arrays.stream(OLD_TEMPLATE_IDS).map(MonitoringTemplateUtils::oldTemplateName).collect(Collectors.toList()));
|
|
|
}
|
|
|
|
|
|
- pipelineNames.addAll(Arrays.stream(PIPELINE_IDS).map(MonitoringTemplateUtils::pipelineName).collect(Collectors.toList()));
|
|
|
watchNames.addAll(Arrays.stream(ClusterAlertsUtil.WATCH_IDS).map(id -> "my_cluster_uuid_" + id).collect(Collectors.toList()));
|
|
|
|
|
|
assertThat("Not all templates are supplied", templateNames, hasSize(EXPECTED_TEMPLATES));
|
|
|
- assertThat("Not all pipelines are supplied", pipelineNames, hasSize(EXPECTED_PIPELINES));
|
|
|
assertThat("Not all watches are supplied", watchNames, hasSize(EXPECTED_WATCHES));
|
|
|
}
|
|
|
|
|
@@ -229,114 +224,14 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
verifyNoMoreInteractions(client);
|
|
|
}
|
|
|
|
|
|
- public void testPipelineCheckBlocksAfterSuccessfulTemplates() {
|
|
|
+ public void testWatcherCheckBlocksAfterSuccessfulTemplatePublish() {
|
|
|
final int successfulGetTemplates = randomIntBetween(0, EXPECTED_TEMPLATES);
|
|
|
final int unsuccessfulGetTemplates = EXPECTED_TEMPLATES - successfulGetTemplates;
|
|
|
final Exception exception = failureGetException();
|
|
|
- final boolean firstSucceeds = randomBoolean();
|
|
|
- int expectedGets = 1;
|
|
|
- int expectedPuts = 0;
|
|
|
-
|
|
|
- whenValidVersionResponse();
|
|
|
- whenGetTemplates(successfulGetTemplates, unsuccessfulGetTemplates);
|
|
|
- whenSuccessfulPutTemplates(EXPECTED_TEMPLATES);
|
|
|
-
|
|
|
- // failure in the middle of various templates being checked/published; suggests a node dropped
|
|
|
- if (firstSucceeds) {
|
|
|
- final boolean successfulFirst = randomBoolean();
|
|
|
- final String pipelineName = pipelineNames.get(0);
|
|
|
-
|
|
|
- final Response first;
|
|
|
-
|
|
|
- if (successfulFirst) {
|
|
|
- first = successfulGetResourceResponse("/_ingest/pipeline/", pipelineName);
|
|
|
- } else {
|
|
|
- first = unsuccessfulGetResourceResponse("/_ingest/pipeline/", pipelineName);
|
|
|
- }
|
|
|
-
|
|
|
- // last check fails
|
|
|
- whenPerformRequestAsyncWith(client, new RequestMatcher(is("GET"), startsWith("/_ingest/pipeline/")), first, exception);
|
|
|
- if (successfulFirst == false) {
|
|
|
- whenSuccessfulPutPipelines(1);
|
|
|
- }
|
|
|
-
|
|
|
- expectedGets = EXPECTED_PIPELINES;
|
|
|
- expectedPuts = successfulFirst ? 0 : 1;
|
|
|
- } else {
|
|
|
- whenPerformRequestAsyncWith(client, new RequestMatcher(is("GET"), startsWith("/_ingest/pipeline/")), exception);
|
|
|
- }
|
|
|
-
|
|
|
- assertTrue(resources.isDirty());
|
|
|
- awaitCheckAndPublish(null);
|
|
|
- // ensure it didn't magically become not-dirty
|
|
|
- assertTrue(resources.isDirty());
|
|
|
-
|
|
|
- verifyVersionCheck();
|
|
|
- verifyGetTemplates(EXPECTED_TEMPLATES);
|
|
|
- verifyPutTemplates(unsuccessfulGetTemplates);
|
|
|
- verifyGetPipelines(expectedGets);
|
|
|
- verifyPutPipelines(expectedPuts);
|
|
|
- verifyNoMoreInteractions(client);
|
|
|
- }
|
|
|
-
|
|
|
- public void testPipelinePublishBlocksAfterSuccessfulTemplates() {
|
|
|
- final int successfulGetTemplates = randomIntBetween(0, EXPECTED_TEMPLATES);
|
|
|
- final int unsuccessfulGetTemplates = EXPECTED_TEMPLATES - successfulGetTemplates;
|
|
|
- final Exception exception = failurePutException();
|
|
|
- final boolean firstSucceeds = randomBoolean();
|
|
|
- int expectedGets = 1;
|
|
|
- int expectedPuts = 1;
|
|
|
-
|
|
|
- whenValidVersionResponse();
|
|
|
- whenGetTemplates(successfulGetTemplates, unsuccessfulGetTemplates);
|
|
|
- whenSuccessfulPutTemplates(EXPECTED_TEMPLATES);
|
|
|
-
|
|
|
- // failure in the middle of various templates being checked/published; suggests a node dropped
|
|
|
- if (firstSucceeds) {
|
|
|
- final Response firstSuccess = successfulPutResponse();
|
|
|
-
|
|
|
- // We only have two pipelines for now, so the both GETs need to be "unsuccessful" for until we have a third
|
|
|
- whenGetPipelines(0, 2);
|
|
|
-
|
|
|
- // previous publishes must have succeeded
|
|
|
- whenPerformRequestAsyncWith(client, new RequestMatcher(is("PUT"), startsWith("/_ingest/pipeline/")), firstSuccess, exception);
|
|
|
-
|
|
|
- // GETs required for each PUT attempt (first is guaranteed "unsuccessful")
|
|
|
- expectedGets += 1;
|
|
|
- // unsuccessful are PUT attempts
|
|
|
- expectedPuts += 1;
|
|
|
- } else {
|
|
|
- // fail the check so that it has to attempt the PUT
|
|
|
- whenGetPipelines(0, 1);
|
|
|
-
|
|
|
- whenPerformRequestAsyncWith(client, new RequestMatcher(is("PUT"), startsWith("/_ingest/pipeline/")), exception);
|
|
|
- }
|
|
|
-
|
|
|
- assertTrue(resources.isDirty());
|
|
|
- awaitCheckAndPublish(null);
|
|
|
- // ensure it didn't magically become not-dirty
|
|
|
- assertTrue(resources.isDirty());
|
|
|
-
|
|
|
- verifyVersionCheck();
|
|
|
- verifyGetTemplates(EXPECTED_TEMPLATES);
|
|
|
- verifyPutTemplates(unsuccessfulGetTemplates);
|
|
|
- verifyGetPipelines(expectedGets);
|
|
|
- verifyPutPipelines(expectedPuts);
|
|
|
- verifyNoMoreInteractions(client);
|
|
|
- }
|
|
|
-
|
|
|
- public void testWatcherCheckBlocksAfterSuccessfulPipelines() {
|
|
|
- final int successfulGetTemplates = randomIntBetween(0, EXPECTED_TEMPLATES);
|
|
|
- final int unsuccessfulGetTemplates = EXPECTED_TEMPLATES - successfulGetTemplates;
|
|
|
- final int successfulGetPipelines = randomIntBetween(0, EXPECTED_PIPELINES);
|
|
|
- final int unsuccessfulGetPipelines = EXPECTED_PIPELINES - successfulGetPipelines;
|
|
|
- final Exception exception = failureGetException();
|
|
|
|
|
|
whenValidVersionResponse();
|
|
|
whenGetTemplates(successfulGetTemplates, unsuccessfulGetTemplates);
|
|
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
|
|
- whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
|
|
- whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
|
|
|
|
|
// there's only one check
|
|
|
whenPerformRequestAsyncWith(client, new RequestMatcher(is("GET"), is("/_xpack")), exception);
|
|
@@ -349,8 +244,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
verifyVersionCheck();
|
|
|
verifyGetTemplates(EXPECTED_TEMPLATES);
|
|
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
|
|
- verifyGetPipelines(EXPECTED_PIPELINES);
|
|
|
- verifyPutPipelines(unsuccessfulGetPipelines);
|
|
|
verifyWatcherCheck();
|
|
|
verifyNoMoreInteractions(client);
|
|
|
}
|
|
@@ -358,8 +251,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
public void testWatchCheckBlocksAfterSuccessfulWatcherCheck() {
|
|
|
final int successfulGetTemplates = randomIntBetween(0, EXPECTED_TEMPLATES);
|
|
|
final int unsuccessfulGetTemplates = EXPECTED_TEMPLATES - successfulGetTemplates;
|
|
|
- final int successfulGetPipelines = randomIntBetween(0, EXPECTED_PIPELINES);
|
|
|
- final int unsuccessfulGetPipelines = EXPECTED_PIPELINES - successfulGetPipelines;
|
|
|
final Exception exception = validLicense ? failureGetException() : failureDeleteException();
|
|
|
final boolean firstSucceeds = randomBoolean();
|
|
|
int expectedGets = 1;
|
|
@@ -368,8 +259,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
whenValidVersionResponse();
|
|
|
whenGetTemplates(successfulGetTemplates, unsuccessfulGetTemplates);
|
|
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
|
|
- whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
|
|
- whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
|
|
whenWatcherCanBeUsed(validLicense);
|
|
|
|
|
|
// failure in the middle of various watches being checked/published; suggests a node dropped
|
|
@@ -421,8 +310,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
verifyVersionCheck();
|
|
|
verifyGetTemplates(EXPECTED_TEMPLATES);
|
|
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
|
|
- verifyGetPipelines(EXPECTED_PIPELINES);
|
|
|
- verifyPutPipelines(unsuccessfulGetPipelines);
|
|
|
verifyWatcherCheck();
|
|
|
if (validLicense) {
|
|
|
verifyGetWatches(expectedGets);
|
|
@@ -436,8 +323,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
public void testWatchPublishBlocksAfterSuccessfulWatcherCheck() {
|
|
|
final int successfulGetTemplates = randomIntBetween(0, EXPECTED_TEMPLATES);
|
|
|
final int unsuccessfulGetTemplates = EXPECTED_TEMPLATES - successfulGetTemplates;
|
|
|
- final int successfulGetPipelines = randomIntBetween(0, EXPECTED_PIPELINES);
|
|
|
- final int unsuccessfulGetPipelines = EXPECTED_PIPELINES - successfulGetPipelines;
|
|
|
final Exception exception = failurePutException();
|
|
|
final boolean firstSucceeds = randomBoolean();
|
|
|
int expectedGets = 1;
|
|
@@ -446,8 +331,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
whenValidVersionResponse();
|
|
|
whenGetTemplates(successfulGetTemplates, unsuccessfulGetTemplates);
|
|
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
|
|
- whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
|
|
- whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
|
|
// license needs to be valid, otherwise we'll do DELETEs, which are tested earlier
|
|
|
whenWatcherCanBeUsed(true);
|
|
|
|
|
@@ -487,8 +370,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
verifyVersionCheck();
|
|
|
verifyGetTemplates(EXPECTED_TEMPLATES);
|
|
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
|
|
- verifyGetPipelines(EXPECTED_PIPELINES);
|
|
|
- verifyPutPipelines(unsuccessfulGetPipelines);
|
|
|
verifyWatcherCheck();
|
|
|
verifyGetWatches(expectedGets);
|
|
|
verifyPutWatches(expectedPuts);
|
|
@@ -498,15 +379,11 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
public void testDeployClusterAlerts() {
|
|
|
final int successfulGetTemplates = randomIntBetween(0, EXPECTED_TEMPLATES);
|
|
|
final int unsuccessfulGetTemplates = EXPECTED_TEMPLATES - successfulGetTemplates;
|
|
|
- final int successfulGetPipelines = randomIntBetween(0, EXPECTED_PIPELINES);
|
|
|
- final int unsuccessfulGetPipelines = EXPECTED_PIPELINES - successfulGetPipelines;
|
|
|
final Exception exception = failurePutException();
|
|
|
|
|
|
whenValidVersionResponse();
|
|
|
whenGetTemplates(successfulGetTemplates, unsuccessfulGetTemplates);
|
|
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
|
|
- whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
|
|
- whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
|
|
// license needs to be valid, otherwise we'll do DELETEs, which are tested earlier
|
|
|
whenWatcherCanBeUsed(true);
|
|
|
|
|
@@ -536,8 +413,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
verifyVersionCheck();
|
|
|
verifyGetTemplates(EXPECTED_TEMPLATES);
|
|
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
|
|
- verifyGetPipelines(EXPECTED_PIPELINES);
|
|
|
- verifyPutPipelines(unsuccessfulGetPipelines);
|
|
|
verifyWatcherCheck();
|
|
|
verifyGetWatches(0);
|
|
|
verifyPutWatches(0);
|
|
@@ -548,16 +423,12 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
public void testSuccessfulChecksOnElectedMasterNode() {
|
|
|
final int successfulGetTemplates = randomIntBetween(0, EXPECTED_TEMPLATES);
|
|
|
final int unsuccessfulGetTemplates = EXPECTED_TEMPLATES - successfulGetTemplates;
|
|
|
- final int successfulGetPipelines = randomIntBetween(0, EXPECTED_PIPELINES);
|
|
|
- final int unsuccessfulGetPipelines = EXPECTED_PIPELINES - successfulGetPipelines;
|
|
|
final int successfulGetWatches = randomIntBetween(0, EXPECTED_WATCHES);
|
|
|
final int unsuccessfulGetWatches = EXPECTED_WATCHES - successfulGetWatches;
|
|
|
|
|
|
whenValidVersionResponse();
|
|
|
whenGetTemplates(successfulGetTemplates, unsuccessfulGetTemplates);
|
|
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
|
|
- whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
|
|
- whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
|
|
if (remoteClusterHasWatcher) {
|
|
|
whenWatcherCanBeUsed(validLicense);
|
|
|
if (validLicense) {
|
|
@@ -579,8 +450,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
verifyVersionCheck();
|
|
|
verifyGetTemplates(EXPECTED_TEMPLATES);
|
|
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
|
|
- verifyGetPipelines(EXPECTED_PIPELINES);
|
|
|
- verifyPutPipelines(unsuccessfulGetPipelines);
|
|
|
verifyWatcherCheck();
|
|
|
if (remoteClusterHasWatcher) {
|
|
|
if (validLicense) {
|
|
@@ -606,14 +475,10 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
|
|
|
final int successfulGetTemplates = randomIntBetween(0, EXPECTED_TEMPLATES);
|
|
|
final int unsuccessfulGetTemplates = EXPECTED_TEMPLATES - successfulGetTemplates;
|
|
|
- final int successfulGetPipelines = randomIntBetween(0, 1);
|
|
|
- final int unsuccessfulGetPipelines = EXPECTED_PIPELINES - successfulGetPipelines;
|
|
|
|
|
|
whenValidVersionResponse();
|
|
|
whenGetTemplates(successfulGetTemplates, unsuccessfulGetTemplates);
|
|
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
|
|
- whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
|
|
- whenSuccessfulPutPipelines(1);
|
|
|
|
|
|
assertTrue(resources.isDirty());
|
|
|
|
|
@@ -626,8 +491,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
verifyVersionCheck();
|
|
|
verifyGetTemplates(EXPECTED_TEMPLATES);
|
|
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
|
|
- verifyGetPipelines(EXPECTED_PIPELINES);
|
|
|
- verifyPutPipelines(unsuccessfulGetPipelines);
|
|
|
verifyNoMoreInteractions(client);
|
|
|
}
|
|
|
|
|
@@ -703,10 +566,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
return getResourceResponses("/_template/", templateNames, skip, successful, unsuccessful);
|
|
|
}
|
|
|
|
|
|
- private List<Response> getPipelineResponses(final int skip, final int successful, final int unsuccessful) {
|
|
|
- return getResourceResponses("/_ingest/pipeline/", pipelineNames, skip, successful, unsuccessful);
|
|
|
- }
|
|
|
-
|
|
|
private List<Response> getWatcherResponses(final int skip, final int successful, final int unsuccessful) {
|
|
|
final List<Response> responses = new ArrayList<>(successful + unsuccessful);
|
|
|
|
|
@@ -777,19 +636,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
whenPerformRequestAsyncWith(client, new RequestMatcher(is("PUT"), startsWith("/_template/")), successfulPuts);
|
|
|
}
|
|
|
|
|
|
- private void whenGetPipelines(final int successful, final int unsuccessful) {
|
|
|
- final List<Response> gets = getPipelineResponses(0, successful, unsuccessful);
|
|
|
-
|
|
|
- whenPerformRequestAsyncWith(client, new RequestMatcher(is("GET"), startsWith("/_ingest/pipeline/")), gets);
|
|
|
- }
|
|
|
-
|
|
|
- private void whenSuccessfulPutPipelines(final int successful) {
|
|
|
- final List<Response> successfulPuts = successfulPutResponses(successful);
|
|
|
-
|
|
|
- // empty is possible if they all exist
|
|
|
- whenPerformRequestAsyncWith(client, new RequestMatcher(is("PUT"), startsWith("/_ingest/pipeline/")), successfulPuts);
|
|
|
- }
|
|
|
-
|
|
|
private void whenWatcherCanBeUsed(final boolean validLicense) {
|
|
|
final Metadata metadata = mock(Metadata.class);
|
|
|
|
|
@@ -856,16 +702,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
|
|
.performRequestAsync(argThat(new RequestMatcher(is("PUT"), startsWith("/_template/"))), any(ResponseListener.class));
|
|
|
}
|
|
|
|
|
|
- private void verifyGetPipelines(final int called) {
|
|
|
- verify(client, times(called))
|
|
|
- .performRequestAsync(argThat(new RequestMatcher(is("GET"), startsWith("/_ingest/pipeline/"))), any(ResponseListener.class));
|
|
|
- }
|
|
|
-
|
|
|
- private void verifyPutPipelines(final int called) {
|
|
|
- verify(client, times(called))
|
|
|
- .performRequestAsync(argThat(new RequestMatcher(is("PUT"), startsWith("/_ingest/pipeline/"))), any(ResponseListener.class));
|
|
|
- }
|
|
|
-
|
|
|
private void verifyWatcherCheck() {
|
|
|
verify(client).performRequestAsync(argThat(new RequestMatcher(is("GET"), is("/_xpack"))), any(ResponseListener.class));
|
|
|
}
|