Search in sources :

Example 36 with MockP

use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.

the class ExecutionLifecycleTest method when_processorProcessThrows_then_failJob.

@Test
public void when_processorProcessThrows_then_failJob() {
    // Given
    DAG dag = new DAG();
    Vertex source = dag.newVertex("source", ListSource.supplier(singletonList(1)));
    Vertex process = dag.newVertex("faulty", new MockPMS(() -> new MockPS(() -> new MockP().setProcessError(MOCK_ERROR), MEMBER_COUNT)));
    dag.edge(between(source, process));
    // When
    Job job = runJobExpectFailure(dag, false);
    // Then
    assertPClosedWithError();
    assertPsClosedWithError();
    assertPmsClosedWithError();
    assertJobFailed(job, MOCK_ERROR);
}
Also used : MockPMS(com.hazelcast.jet.core.TestProcessors.MockPMS) MockPS(com.hazelcast.jet.core.TestProcessors.MockPS) MockP(com.hazelcast.jet.core.TestProcessors.MockP) Job(com.hazelcast.jet.Job) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 37 with MockP

use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.

the class ExecutionLifecycleTest method when_processorOnSnapshotCompleteThrows_then_failJob.

@Test
public void when_processorOnSnapshotCompleteThrows_then_failJob() {
    // Given
    DAG dag = new DAG();
    dag.newVertex("faulty", new MockPMS(() -> new MockPS(() -> new MockP().nonCooperative().streaming().setOnSnapshotCompleteError(MOCK_ERROR), MEMBER_COUNT)));
    // When
    Job job = runJobExpectFailure(dag, true);
    assertTrue("onSnapshotCompleted not called", MockP.onSnapshotCompletedCalled);
    // Then
    assertPClosedWithError();
    assertPsClosedWithError();
    assertPmsClosedWithError();
    assertJobFailed(job, MOCK_ERROR);
}
Also used : MockPMS(com.hazelcast.jet.core.TestProcessors.MockPMS) MockPS(com.hazelcast.jet.core.TestProcessors.MockPS) MockP(com.hazelcast.jet.core.TestProcessors.MockP) Job(com.hazelcast.jet.Job) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 38 with MockP

use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.

the class ExecutionLifecycleTest method when_processorCompletesSuccessfully_then_closeCalledImmediately.

@Test
public void when_processorCompletesSuccessfully_then_closeCalledImmediately() {
    DAG dag = new DAG();
    Vertex v1 = dag.newVertex("v1", MockP::new);
    Vertex v2 = dag.newVertex("v2", () -> new NoOutputSourceP());
    dag.edge(between(v1, v2));
    Job job = newJob(dag);
    assertTrueEventually(this::assertPClosedWithoutError);
    NoOutputSourceP.proceedLatch.countDown();
    job.join();
    assertJobSucceeded(job);
}
Also used : MockP(com.hazelcast.jet.core.TestProcessors.MockP) NoOutputSourceP(com.hazelcast.jet.core.TestProcessors.NoOutputSourceP) Job(com.hazelcast.jet.Job) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 39 with MockP

use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.

the class JobTest method when_jobWithSameNameManyTimes_then_queryResultSortedBySubmission.

@Test
public void when_jobWithSameNameManyTimes_then_queryResultSortedBySubmission() {
    DAG streamingDag = new DAG();
    streamingDag.newVertex("v", () -> new MockP().streaming());
    List<Long> jobIds = new ArrayList<>();
    // When
    for (int i = 0; i < 10; i++) {
        Job job = instance().getJet().newJob(streamingDag, new JobConfig().setName("foo"));
        jobIds.add(0, job.getId());
        job.cancel();
        joinAndExpectCancellation(job);
    }
    Job activeJob = instance().getJet().newJob(streamingDag, new JobConfig().setName("foo"));
    jobIds.add(0, activeJob.getId());
    // Then
    List<Job> actualJobs = instance().getJet().getJobs("foo");
    assertThat(toList(actualJobs, Job::getId)).containsExactlyElementsOf(jobIds);
}
Also used : MockP(com.hazelcast.jet.core.TestProcessors.MockP) ArrayList(java.util.ArrayList) Job(com.hazelcast.jet.Job) JobConfig(com.hazelcast.jet.config.JobConfig) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 40 with MockP

use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.

the class JobTest method test_manyJobs.

private void test_manyJobs(HazelcastInstance inst) {
    JetService jet = inst.getJet();
    DAG streamingDag = new DAG();
    streamingDag.newVertex("v", () -> new MockP().streaming());
    DAG batchDag = new DAG();
    batchDag.newVertex("v", MockP::new);
    // normal streaming job
    Job streamingJob = jet.newJob(streamingDag);
    assertJobStatusEventually(streamingJob, RUNNING);
    // two normal batch job
    Job batchJob1 = jet.newJob(batchDag);
    batchJob1.join();
    Job batchJob2 = jet.newJob(batchDag);
    batchJob2.join();
    // named streaming job name1
    Job namedStreamingJob1 = jet.newJob(streamingDag, new JobConfig().setName("name1"));
    assertJobStatusEventually(namedStreamingJob1, RUNNING);
    // named streaming job name2, cancelled
    Job namedStreamingJob2 = jet.newJob(streamingDag, new JobConfig().setName("name2"));
    namedStreamingJob2.cancel();
    joinAndExpectCancellation(namedStreamingJob2);
    // named streaming job name2, again, not cancelled
    Job namedStreamingJob2_1 = jet.newJob(streamingDag, new JobConfig().setName("name2"));
    assertJobStatusEventually(namedStreamingJob2_1, RUNNING);
    // light streaming job
    Job lightStreamingJob = inst.getJet().newLightJob(streamingDag);
    // light streaming job, cancelled
    Job lightStreamingJobCancelled = jet.newLightJob(streamingDag);
    lightStreamingJobCancelled.cancel();
    joinAndExpectCancellation(lightStreamingJobCancelled);
    // two light batch jobs
    Job lightBatchJob1 = jet.newLightJob(batchDag);
    Job lightBatchJob2 = jet.newLightJob(batchDag);
    lightBatchJob1.join();
    lightBatchJob2.join();
    List<Job> allJobsExceptCompletedLightJobs = asList(streamingJob, batchJob1, batchJob2, namedStreamingJob1, namedStreamingJob2, namedStreamingJob2_1, lightStreamingJob);
    List<Job> allJobs = new ArrayList<>();
    allJobs.addAll(allJobsExceptCompletedLightJobs);
    allJobs.add(lightStreamingJobCancelled);
    allJobs.add(lightBatchJob1);
    allJobs.add(lightBatchJob2);
    // Then
    // getJobs must include all submitted all jobs, except for the light batch jobs that are done
    assertThat(toList(jet.getJobs(), this::jobEqualityString)).containsExactlyInAnyOrderElementsOf(toList(allJobsExceptCompletedLightJobs, this::jobEqualityString));
    for (Job job : allJobs) {
        Job trackedJobById = jet.getJob(job.getId());
        Job trackedJobByName = job.getName() != null ? jet.getJob(job.getName()) : null;
        if (allJobsExceptCompletedLightJobs.contains(job)) {
            assertEquals(jobEqualityString(job), jobEqualityString(trackedJobById));
            if (job.getName() != null && job != namedStreamingJob2) {
                assertEquals(jobEqualityString(job), jobEqualityString(trackedJobByName));
            }
        } else {
            assertNull(trackedJobById);
            assertNull(trackedJobByName);
        }
    }
    assertThat(toList(jet.getJobs("name1"), this::jobEqualityString)).containsExactlyElementsOf(toList(singletonList(namedStreamingJob1), this::jobEqualityString));
    assertThat(toList(jet.getJobs("name2"), this::jobEqualityString)).containsExactlyElementsOf(toList(asList(namedStreamingJob2_1, namedStreamingJob2), this::jobEqualityString));
}
Also used : JetService(com.hazelcast.jet.JetService) MockP(com.hazelcast.jet.core.TestProcessors.MockP) ArrayList(java.util.ArrayList) Job(com.hazelcast.jet.Job) JobConfig(com.hazelcast.jet.config.JobConfig)

Aggregations

MockP (com.hazelcast.jet.core.TestProcessors.MockP)56 Test (org.junit.Test)54 Job (com.hazelcast.jet.Job)49 ParallelJVMTest (com.hazelcast.test.annotation.ParallelJVMTest)35 QuickTest (com.hazelcast.test.annotation.QuickTest)35 MockPS (com.hazelcast.jet.core.TestProcessors.MockPS)30 MockPMS (com.hazelcast.jet.core.TestProcessors.MockPMS)26 HazelcastInstance (com.hazelcast.core.HazelcastInstance)14 JobConfig (com.hazelcast.jet.config.JobConfig)11 DAG (com.hazelcast.jet.core.DAG)9 ExecutionException (java.util.concurrent.ExecutionException)8 ExpectedException (org.junit.rules.ExpectedException)5 JetException (com.hazelcast.jet.JetException)4 Processor (com.hazelcast.jet.core.Processor)4 ExpectedRuntimeException (com.hazelcast.test.ExpectedRuntimeException)4 NoOutputSourceP (com.hazelcast.jet.core.TestProcessors.NoOutputSourceP)3 Config (com.hazelcast.config.Config)2 JetInstance (com.hazelcast.jet.JetInstance)2 StuckProcessor (com.hazelcast.jet.core.TestProcessors.StuckProcessor)2 NightlyTest (com.hazelcast.test.annotation.NightlyTest)2