added more tests
Original commit: elastic/x-pack-elasticsearch@871c13307e
This commit is contained in:
parent
b42f9cccb0
commit
431a7988fb
|
@ -5,7 +5,6 @@
|
|||
*/
|
||||
package org.elasticsearch.xpack.prelert.job.manager;
|
||||
|
||||
import org.elasticsearch.ElasticsearchStatusException;
|
||||
import org.elasticsearch.ResourceNotFoundException;
|
||||
import org.elasticsearch.cluster.ClusterName;
|
||||
import org.elasticsearch.cluster.ClusterState;
|
||||
|
@ -13,12 +12,9 @@ import org.elasticsearch.cluster.metadata.MetaData;
|
|||
import org.elasticsearch.cluster.service.ClusterService;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.env.Environment;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
import org.elasticsearch.test.ESTestCase;
|
||||
import org.elasticsearch.xpack.prelert.job.Job;
|
||||
import org.elasticsearch.xpack.prelert.job.JobStatus;
|
||||
import org.elasticsearch.xpack.prelert.job.audit.Auditor;
|
||||
import org.elasticsearch.xpack.prelert.job.metadata.Allocation;
|
||||
import org.elasticsearch.xpack.prelert.job.metadata.PrelertMetadata;
|
||||
import org.elasticsearch.xpack.prelert.job.persistence.JobProvider;
|
||||
import org.elasticsearch.xpack.prelert.job.persistence.JobResultsPersister;
|
||||
|
@ -32,7 +28,6 @@ import java.util.stream.Collectors;
|
|||
|
||||
import static org.elasticsearch.xpack.prelert.job.JobTests.buildJobBuilder;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.mockito.Matchers.anyString;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
@ -70,49 +65,6 @@ public class JobManagerTests extends ESTestCase {
|
|||
assertTrue(diff.contains("tom"));
|
||||
}
|
||||
|
||||
public void testRemoveJobFromClusterState_GivenExistingMetadata() {
|
||||
JobManager jobManager = createJobManager();
|
||||
ClusterState clusterState = createClusterState();
|
||||
Job job = buildJobBuilder("foo").build();
|
||||
clusterState = jobManager.innerPutJob(job, false, clusterState);
|
||||
|
||||
clusterState = jobManager.removeJobFromClusterState("foo", clusterState);
|
||||
|
||||
PrelertMetadata prelertMetadata = clusterState.metaData().custom(PrelertMetadata.TYPE);
|
||||
assertThat(prelertMetadata.getJobs().containsKey("foo"), is(false));
|
||||
}
|
||||
|
||||
public void testRemoveJobFromClusterState_GivenJobIsOpened() {
|
||||
JobManager jobManager = createJobManager();
|
||||
ClusterState clusterState = createClusterState();
|
||||
Job job = buildJobBuilder("foo").build();
|
||||
clusterState = jobManager.innerPutJob(job, false, clusterState);
|
||||
Allocation.Builder allocation = new Allocation.Builder();
|
||||
allocation.setNodeId("myNode");
|
||||
allocation.setJobId(job.getId());
|
||||
allocation.setStatus(JobStatus.OPENING);
|
||||
PrelertMetadata.Builder newMetadata = new PrelertMetadata.Builder(clusterState.metaData().custom(PrelertMetadata.TYPE));
|
||||
newMetadata.assignToNode(job.getId(), "myNode");
|
||||
newMetadata.updateAllocation(job.getId(), allocation.build());
|
||||
|
||||
ClusterState jobRunningClusterState = new ClusterState.Builder(clusterState)
|
||||
.metaData(MetaData.builder().putCustom(PrelertMetadata.TYPE, newMetadata.build())).build();
|
||||
|
||||
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class,
|
||||
() -> jobManager.removeJobFromClusterState("foo", jobRunningClusterState));
|
||||
assertThat(e.status(), equalTo(RestStatus.CONFLICT));
|
||||
assertThat(e.getMessage(), equalTo("Cannot delete job 'foo' while it is OPENING"));
|
||||
}
|
||||
|
||||
public void testRemoveJobFromClusterState_jobMissing() {
|
||||
JobManager jobManager = createJobManager();
|
||||
ClusterState clusterState = createClusterState();
|
||||
Job job = buildJobBuilder("foo").build();
|
||||
ClusterState clusterState2 = jobManager.innerPutJob(job, false, clusterState);
|
||||
Exception e = expectThrows(ResourceNotFoundException.class, () -> jobManager.removeJobFromClusterState("bar", clusterState2));
|
||||
assertThat(e.getMessage(), equalTo("job [bar] does not exist"));
|
||||
}
|
||||
|
||||
public void testGetJobOrThrowIfUnknown_GivenUnknownJob() {
|
||||
JobManager jobManager = createJobManager();
|
||||
ClusterState cs = createClusterState();
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
*/
|
||||
package org.elasticsearch.xpack.prelert.job.metadata;
|
||||
|
||||
import org.elasticsearch.ElasticsearchStatusException;
|
||||
import org.elasticsearch.ResourceAlreadyExistsException;
|
||||
import org.elasticsearch.ResourceNotFoundException;
|
||||
import org.elasticsearch.cluster.metadata.MetaData;
|
||||
import org.elasticsearch.common.io.stream.InputStreamStreamInput;
|
||||
import org.elasticsearch.common.io.stream.OutputStreamStreamOutput;
|
||||
|
@ -14,16 +16,19 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
|
|||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.common.xcontent.XContentType;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
import org.elasticsearch.test.ESTestCase;
|
||||
import org.elasticsearch.xpack.prelert.job.Job;
|
||||
import org.elasticsearch.xpack.prelert.job.JobStatus;
|
||||
import org.elasticsearch.xpack.prelert.job.JobTests;
|
||||
import org.elasticsearch.xpack.prelert.job.SchedulerStatus;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.xpack.prelert.job.JobTests.buildJobBuilder;
|
||||
import static org.elasticsearch.xpack.prelert.job.scheduler.ScheduledJobRunnerTests.createScheduledJob;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.notNullValue;
|
||||
import static org.hamcrest.Matchers.nullValue;
|
||||
|
@ -100,7 +105,11 @@ public class PrelertMetadataTests extends ESTestCase {
|
|||
|
||||
PrelertMetadata result = builder.build();
|
||||
assertThat(result.getJobs().get("1"), sameInstance(job1));
|
||||
assertThat(result.getAllocations().get("1").getStatus(), equalTo(JobStatus.CLOSED));
|
||||
assertThat(result.getSchedulerStatuses().get("1"), nullValue());
|
||||
assertThat(result.getJobs().get("2"), sameInstance(job2));
|
||||
assertThat(result.getAllocations().get("2").getStatus(), equalTo(JobStatus.CLOSED));
|
||||
assertThat(result.getSchedulerStatuses().get("2"), nullValue());
|
||||
|
||||
builder = new PrelertMetadata.Builder(result);
|
||||
|
||||
|
@ -116,6 +125,82 @@ public class PrelertMetadataTests extends ESTestCase {
|
|||
assertThat(result.getJobs().get("2"), sameInstance(job2Attempt2));
|
||||
}
|
||||
|
||||
public void testRemoveJob() {
|
||||
Job job1 = buildJobBuilder("1").build();
|
||||
PrelertMetadata.Builder builder = new PrelertMetadata.Builder();
|
||||
builder.putJob(job1, false);
|
||||
|
||||
PrelertMetadata result = builder.build();
|
||||
assertThat(result.getJobs().get("1"), sameInstance(job1));
|
||||
assertThat(result.getAllocations().get("1").getStatus(), equalTo(JobStatus.CLOSED));
|
||||
assertThat(result.getSchedulerStatuses().get("1"), nullValue());
|
||||
|
||||
builder = new PrelertMetadata.Builder(result);
|
||||
builder.removeJob("1");
|
||||
result = builder.build();
|
||||
assertThat(result.getJobs().get("1"), nullValue());
|
||||
assertThat(result.getAllocations().get("1"), nullValue());
|
||||
assertThat(result.getSchedulerStatuses().get("1"), nullValue());
|
||||
}
|
||||
|
||||
public void testRemoveJob_failBecauseJobIsOpen() {
|
||||
Job job1 = buildJobBuilder("1").build();
|
||||
PrelertMetadata.Builder builder1 = new PrelertMetadata.Builder();
|
||||
builder1.putJob(job1, false);
|
||||
builder1.updateStatus("1", JobStatus.OPENING, null);
|
||||
builder1.updateStatus("1", JobStatus.OPENED, null);
|
||||
|
||||
PrelertMetadata result = builder1.build();
|
||||
assertThat(result.getJobs().get("1"), sameInstance(job1));
|
||||
assertThat(result.getAllocations().get("1").getStatus(), equalTo(JobStatus.OPENED));
|
||||
assertThat(result.getSchedulerStatuses().get("1"), nullValue());
|
||||
|
||||
PrelertMetadata.Builder builder2 = new PrelertMetadata.Builder(result);
|
||||
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class, () -> builder2.removeJob("1"));
|
||||
assertThat(e.status(), equalTo(RestStatus.CONFLICT));
|
||||
}
|
||||
|
||||
public void testRemoveJob_failBecauseJobDoesNotExist() {
|
||||
PrelertMetadata.Builder builder1 = new PrelertMetadata.Builder();
|
||||
expectThrows(ResourceNotFoundException.class, () -> builder1.removeJob("1"));
|
||||
}
|
||||
|
||||
public void testCrudScheduledJob() {
|
||||
Job job1 = createScheduledJob().build();
|
||||
PrelertMetadata.Builder builder = new PrelertMetadata.Builder();
|
||||
builder.putJob(job1, false);
|
||||
|
||||
PrelertMetadata result = builder.build();
|
||||
assertThat(result.getJobs().get("foo"), sameInstance(job1));
|
||||
assertThat(result.getAllocations().get("foo").getStatus(), equalTo(JobStatus.CLOSED));
|
||||
assertThat(result.getSchedulerStatuses().get("foo"), equalTo(SchedulerStatus.STOPPED));
|
||||
|
||||
builder = new PrelertMetadata.Builder(result);
|
||||
builder.removeJob("foo");
|
||||
result = builder.build();
|
||||
assertThat(result.getJobs().get("foo"), nullValue());
|
||||
assertThat(result.getAllocations().get("foo"), nullValue());
|
||||
assertThat(result.getSchedulerStatuses().get("foo"), nullValue());
|
||||
}
|
||||
|
||||
public void testDeletedScheduledJob_failBecauseSchedulerStarted() {
|
||||
Job job1 = createScheduledJob().build();
|
||||
PrelertMetadata.Builder builder = new PrelertMetadata.Builder();
|
||||
builder.putJob(job1, false);
|
||||
builder.updateStatus("foo", JobStatus.OPENING, null);
|
||||
builder.updateStatus("foo", JobStatus.OPENED, null);
|
||||
builder.updateSchedulerStatus("foo", SchedulerStatus.STARTED);
|
||||
|
||||
PrelertMetadata result = builder.build();
|
||||
assertThat(result.getJobs().get("foo"), sameInstance(job1));
|
||||
assertThat(result.getAllocations().get("foo").getStatus(), equalTo(JobStatus.OPENED));
|
||||
assertThat(result.getSchedulerStatuses().get("foo"), equalTo(SchedulerStatus.STARTED));
|
||||
|
||||
PrelertMetadata.Builder builder2 = new PrelertMetadata.Builder(result);
|
||||
ElasticsearchStatusException e = expectThrows(ElasticsearchStatusException.class, () -> builder2.removeJob("foo"));
|
||||
assertThat(e.status(), equalTo(RestStatus.CONFLICT));
|
||||
}
|
||||
|
||||
public void testUpdateAllocation_setFinishedTime() {
|
||||
PrelertMetadata.Builder builder = new PrelertMetadata.Builder();
|
||||
builder.putJob(buildJobBuilder("_job_id").build(), false);
|
||||
|
|
Loading…
Reference in New Issue