[ML] Test that audit message is written when closing unassigned job (#55582)

Issue #55521 suggested that audit messages were not written when
closing an unassigned job.  This is not the case, but we didn't
have a test to prove it.

Backport of #55571
This commit is contained in:
David Roberts 2020-04-22 13:23:43 +01:00 committed by GitHub
parent 250a51bca1
commit 810caf5ffe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 1 deletions

View File

@ -6,6 +6,7 @@
package org.elasticsearch.xpack.ml.integration;
import org.elasticsearch.action.ActionFuture;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.cluster.ClusterState;
@ -24,6 +25,7 @@ import org.elasticsearch.common.xcontent.XContentHelper;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermsQueryBuilder;
import org.elasticsearch.persistent.PersistentTaskResponse;
import org.elasticsearch.persistent.PersistentTasksClusterService;
import org.elasticsearch.persistent.PersistentTasksCustomMetadata;
@ -47,6 +49,7 @@ import org.elasticsearch.xpack.core.ml.datafeed.DatafeedState;
import org.elasticsearch.xpack.core.ml.job.config.Job;
import org.elasticsearch.xpack.core.ml.job.config.JobState;
import org.elasticsearch.xpack.core.ml.job.process.autodetect.state.DataCounts;
import org.elasticsearch.xpack.core.ml.notifications.NotificationsIndex;
import org.elasticsearch.xpack.ml.MachineLearning;
import org.elasticsearch.xpack.ml.job.process.autodetect.BlackHoleAutodetectProcess;
import org.elasticsearch.xpack.ml.support.BaseMlIntegTestCase;
@ -58,6 +61,9 @@ import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static org.elasticsearch.persistent.PersistentTasksClusterService.needsReassignment;
import static org.hamcrest.Matchers.arrayWithSize;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
public class MlDistributedFailureIT extends BaseMlIntegTestCase {
@ -176,9 +182,22 @@ public class MlDistributedFailureIT extends BaseMlIntegTestCase {
// Since 7.5 we can also stop an unassigned job either normally or by force
CloseJobAction.Request closeJobRequest = new CloseJobAction.Request(jobId);
closeJobRequest.setForce(randomBoolean());
boolean closeWithForce = randomBoolean();
closeJobRequest.setForce(closeWithForce);
CloseJobAction.Response closeJobResponse = client().execute(CloseJobAction.INSTANCE, closeJobRequest).actionGet();
assertTrue(closeJobResponse.isClosed());
// We should have an audit message indicating that the job was closed
String expectedAuditMessage = closeWithForce ? "Job is closing (forced)" : "Job is closing";
SearchRequest searchRequest = new SearchRequest(NotificationsIndex.NOTIFICATIONS_INDEX);
searchRequest.source().query(new TermsQueryBuilder("message.raw", expectedAuditMessage));
assertBusy(() -> {
assertTrue(indexExists(NotificationsIndex.NOTIFICATIONS_INDEX));
SearchResponse searchResponse = client().search(searchRequest).actionGet();
assertThat(searchResponse.getHits(), notNullValue());
assertThat(searchResponse.getHits().getHits(), arrayWithSize(1));
assertThat(searchResponse.getHits().getHits()[0].getSourceAsMap().get("job_id"), is(jobId));
});
}
public void testCloseUnassignedFailedJobAndStopUnassignedStoppingDatafeed() throws Exception {