use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.
the class ExecutionLifecycleTest method when_processorNonCooperativeCompleteThrows_then_failJob.
@Test
public void when_processorNonCooperativeCompleteThrows_then_failJob() {
// Given
DAG dag = new DAG();
dag.newVertex("faulty", new MockPMS(() -> new MockPS(() -> new MockP().nonCooperative().setCompleteError(MOCK_ERROR), MEMBER_COUNT)));
// When
Job job = runJobExpectFailure(dag, false);
// Then
assertPClosedWithError();
assertPsClosedWithError();
assertPmsClosedWithError();
assertJobFailed(job, MOCK_ERROR);
}
use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.
the class ExecutionLifecycleTest method when_oneOfTwoJobsFails_then_theOtherContinues.
@Test
public void when_oneOfTwoJobsFails_then_theOtherContinues() throws Exception {
// Given
DAG dagFaulty = new DAG().vertex(new Vertex("faulty", new MockPMS(() -> new MockPS(() -> new MockP().setCompleteError(MOCK_ERROR), MEMBER_COUNT))));
DAG dagGood = new DAG();
dagGood.newVertex("good", () -> new NoOutputSourceP());
// When
Job jobGood = newJob(dagGood);
NoOutputSourceP.executionStarted.await();
runJobExpectFailure(dagFaulty, false);
// Then
assertTrueAllTheTime(() -> assertFalse(jobGood.getFuture().isDone()), 2);
NoOutputSourceP.proceedLatch.countDown();
jobGood.join();
}
use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.
the class ExecutionLifecycleTest method when_memberLeft_then_jobFails.
@Test
public void when_memberLeft_then_jobFails() {
// Test for https://github.com/hazelcast/hazelcast/issues/18844
// This test doesn't use the shared cluster because it shuts down one of the members
HazelcastInstance inst1 = createHazelcastInstance();
HazelcastInstance inst2 = createHazelcastInstance();
DAG dag = new DAG();
dag.newVertex("v", () -> new MockP().streaming());
Job job = inst1.getJet().newLightJob(dag);
assertJobRunningEventually(inst1, job, null);
inst2.getLifecycleService().terminate();
assertThatThrownBy(() -> job.join()).hasRootCauseInstanceOf(MemberLeftException.class);
}
use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.
the class ExecutionLifecycleTest method when_clientJoinBeforeAndAfterComplete_then_exceptionEquals.
@Test
public void when_clientJoinBeforeAndAfterComplete_then_exceptionEquals() {
// not applicable to light jobs - we can't connect to light jobs after they complete
assumeFalse(useLightJob);
DAG dag = new DAG();
Vertex noop = dag.newVertex("noop", (SupplierEx<Processor>) NoOutputSourceP::new).localParallelism(1);
Vertex faulty = dag.newVertex("faulty", () -> new MockP().setCompleteError(MOCK_ERROR)).localParallelism(1);
dag.edge(between(noop, faulty));
Job job = newJob(client(), dag, null);
assertJobStatusEventually(job, RUNNING);
NoOutputSourceP.proceedLatch.countDown();
Throwable excBeforeComplete;
Throwable excAfterComplete;
try {
job.join();
throw new AssertionError("should have failed");
} catch (Exception e) {
excBeforeComplete = e;
}
// create a new client that will join the job after completion
HazelcastInstance client2 = factory().newHazelcastClient();
Job job2 = client2.getJet().getJob(job.getId());
try {
job2.join();
throw new AssertionError("should have failed");
} catch (Exception e) {
excAfterComplete = e;
}
logger.info("exception before completion", excBeforeComplete);
logger.info("exception after completion", excAfterComplete);
// Then
assertInstanceOf(CompletionException.class, excBeforeComplete);
assertInstanceOf(CompletionException.class, excAfterComplete);
Throwable causeBefore = excBeforeComplete.getCause();
Throwable causeAfter = excAfterComplete.getCause();
assertEquals(causeBefore.getClass(), causeAfter.getClass());
assertContains(causeAfter.getMessage(), causeBefore.getMessage());
}
use of com.hazelcast.jet.core.TestProcessors.MockP in project hazelcast by hazelcast.
the class ExecutionLifecycleTest method when_pmsGetThrows_then_jobFails.
@Test
public void when_pmsGetThrows_then_jobFails() {
// Given
DAG dag = new DAG().vertex(new Vertex("faulty", new MockPMS(() -> new MockPS(MockP::new, MEMBER_COUNT)).setGetError(MOCK_ERROR)));
// When
Job job = runJobExpectFailure(dag, false);
// Then
assertPmsClosedWithError();
assertJobFailed(job, MOCK_ERROR);
}
Aggregations