Skip to content

Commit

Permalink
Manually trigger local exporter to open a bulk in some monitor tests.
Browse files Browse the repository at this point in the history
Change tests to use monitor bulk api on elected master node before verifying watcher index exists.
Sometimes the monitor service on the elected master doesn't yet export monitor documents resulting in tests using the `ensureInitialLocalResources(...)` method to fail.
Cluster alerts watcher are only installed when local exporter tries to resolve local bulk.

Relates to elastic#66586
  • Loading branch information
martijnvg committed Feb 17, 2021
1 parent f28bb2f commit 5a50376
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,16 @@
import org.elasticsearch.cluster.metadata.IndexTemplateMetadata;
import org.elasticsearch.common.collect.Tuple;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.test.ESIntegTestCase;
import org.elasticsearch.test.http.MockRequest;
import org.elasticsearch.test.http.MockResponse;
import org.elasticsearch.test.http.MockWebServer;
import org.elasticsearch.test.junit.annotations.TestLogging;
import org.elasticsearch.xpack.core.XPackSettings;
import org.elasticsearch.xpack.core.monitoring.action.MonitoringBulkAction;
import org.elasticsearch.xpack.core.monitoring.action.MonitoringBulkRequest;
import org.elasticsearch.xpack.core.monitoring.action.MonitoringBulkResponse;
import org.elasticsearch.xpack.core.monitoring.action.MonitoringMigrateAlertsAction;
import org.elasticsearch.xpack.core.monitoring.action.MonitoringMigrateAlertsRequest;
import org.elasticsearch.xpack.core.monitoring.action.MonitoringMigrateAlertsResponse;
Expand All @@ -47,6 +51,7 @@
import org.elasticsearch.xpack.monitoring.exporter.ClusterAlertsUtil;
import org.elasticsearch.xpack.monitoring.exporter.http.HttpExporter;
import org.elasticsearch.xpack.monitoring.exporter.local.LocalExporter;
import org.elasticsearch.xpack.monitoring.exporter.local.LocalExporterIntegTests;
import org.elasticsearch.xpack.monitoring.test.MonitoringIntegTestCase;
import org.junit.After;
import org.junit.Before;
Expand Down Expand Up @@ -464,6 +469,18 @@ public void testRemoteAlertsRemoteDisallowsWatcher() throws Exception {
}

private void ensureInitialLocalResources() throws Exception {
// Should trigger setting up alert watches via LocalExporter#openBulk(...) and
// then eventually to LocalExporter#setupIfElectedMaster(...)
// Sometimes this last method doesn't install watches, because elected master node doesn't export monitor documents.
// and then these assertions here fail.
{
MonitoringBulkRequest request = new MonitoringBulkRequest();
request.add(LocalExporterIntegTests.createMonitoringBulkDoc());
String masterNode = internalCluster().getMasterName();
MonitoringBulkResponse response = client(masterNode).execute(MonitoringBulkAction.INSTANCE, request).actionGet();
assertThat(response.status(), equalTo(RestStatus.OK));
}

waitForWatcherIndices();
assertBusy(() -> {
assertThat(indexExists(".monitoring-*"), is(true));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ private void checkMonitoringDocs() {
}
}

private static MonitoringBulkDoc createMonitoringBulkDoc() throws IOException {
public static MonitoringBulkDoc createMonitoringBulkDoc() throws IOException {
final MonitoredSystem system = randomFrom(BEATS, KIBANA, LOGSTASH);
final XContentType xContentType = randomFrom(XContentType.values());
final BytesReference source;
Expand Down

0 comments on commit 5a50376

Please sign in to comment.