use of com.hazelcast.jet.core.TestProcessors.NoOutputSourceP in project hazelcast by hazelcast.
the class TopologyChangeTest method when_addNodeDuringExecution_then_completeSuccessfully.
@Test
public void when_addNodeDuringExecution_then_completeSuccessfully() throws Throwable {
// Given
DAG dag = new DAG().vertex(new Vertex("test", new MockPS(NoOutputSourceP::new, nodeCount)));
// When
Job job = instances[0].getJet().newJob(dag);
NoOutputSourceP.executionStarted.await();
createHazelcastInstance(config);
NoOutputSourceP.proceedLatch.countDown();
job.join();
// Then
assertEquals(nodeCount, MockPS.initCount.get());
assertTrueEventually(() -> {
assertEquals(nodeCount, MockPS.closeCount.get());
assertThat(MockPS.receivedCloseErrors, empty());
});
}
use of com.hazelcast.jet.core.TestProcessors.NoOutputSourceP in project hazelcast by hazelcast.
the class TopologyChangeTest method when_coordinatorLeavesDuringExecution_then_jobCompletes.
@Test
public void when_coordinatorLeavesDuringExecution_then_jobCompletes() throws Throwable {
// Given
DAG dag = new DAG().vertex(new Vertex("test", new MockPS(NoOutputSourceP::new, nodeCount)));
// When
Long jobId = null;
try {
Job job = instances[0].getJet().newJob(dag);
Future<Void> future = job.getFuture();
jobId = job.getId();
NoOutputSourceP.executionStarted.await();
instances[0].getLifecycleService().terminate();
// Processor#close.
for (int i = 1; i < instances.length; i++) {
JetServiceBackend jetServiceBackend = getJetServiceBackend(instances[i]);
jetServiceBackend.getJobExecutionService().waitAllExecutionsTerminated();
}
NoOutputSourceP.proceedLatch.countDown();
future.get();
fail();
} catch (ExecutionException expected) {
assertTrue(expected.getCause() instanceof HazelcastInstanceNotActiveException);
}
// Then
assertNotNull(jobId);
final long completedJobId = jobId;
JobRepository jobRepository = getJetServiceBackend(instances[1]).getJobRepository();
assertTrueEventually(() -> {
JobResult jobResult = jobRepository.getJobResult(completedJobId);
assertNotNull(jobResult);
assertTrue(jobResult.isSuccessful());
});
final int count = liteMemberFlags[0] ? (2 * nodeCount) : (2 * nodeCount - 1);
assertEquals(count, MockPS.initCount.get());
assertTrueEventually(() -> {
assertEquals(count, MockPS.closeCount.get());
assertEquals(nodeCount, MockPS.receivedCloseErrors.size());
for (Throwable error : MockPS.receivedCloseErrors) {
assertTrue("unexpected exc: " + error, error instanceof CancellationException);
}
});
}
use of com.hazelcast.jet.core.TestProcessors.NoOutputSourceP in project hazelcast by hazelcast.
the class JobTest method when_namedJobIsRunning_then_newNamedJobFails.
private void when_namedJobIsRunning_then_newNamedJobFails(HazelcastInstance instance) {
// Given
DAG dag = new DAG().vertex(new Vertex("test", new MockPS(NoOutputSourceP::new, NODE_COUNT * 2)));
JobConfig config = new JobConfig().setName(randomName());
// When
Job job1 = instance.getJet().newJob(dag, config);
assertTrueEventually(() -> assertEquals(RUNNING, job1.getStatus()));
// Then
assertThatThrownBy(() -> instance.getJet().newJob(dag, config)).isInstanceOf(JobAlreadyExistsException.class);
}
use of com.hazelcast.jet.core.TestProcessors.NoOutputSourceP in project hazelcast by hazelcast.
the class JobTest method when_jobIsRunning_then_itIsQueriedByName.
private void when_jobIsRunning_then_itIsQueriedByName(HazelcastInstance instance) throws InterruptedException {
// Given
DAG dag = new DAG().vertex(new Vertex("test", new MockPS(NoOutputSourceP::new, NODE_COUNT)));
JobConfig config = new JobConfig();
String jobName = randomName();
config.setName(jobName);
// When
Job job = instance().getJet().newJob(dag, config);
assertEquals(jobName, job.getName());
NoOutputSourceP.executionStarted.await();
// Then
Job trackedJob = instance.getJet().getJob(jobName);
assertNotNull(trackedJob);
assertEquals(jobName, trackedJob.getName());
assertEquals(job.getId(), trackedJob.getId());
assertJobStatusEventually(trackedJob, RUNNING);
NoOutputSourceP.proceedLatch.countDown();
}
use of com.hazelcast.jet.core.TestProcessors.NoOutputSourceP in project hazelcast by hazelcast.
the class JobTest method when_jobsCompleted_then_theyAreQueriedByName.
@Test
public void when_jobsCompleted_then_theyAreQueriedByName() {
// Given
DAG dag = new DAG().vertex(new Vertex("test", new MockPS(NoOutputSourceP::new, NODE_COUNT * 2)));
JobConfig config = new JobConfig().setName(randomName());
// When
Job job1 = instance().getJet().newJob(dag, config);
NoOutputSourceP.proceedLatch.countDown();
job1.join();
sleepAtLeastMillis(1);
NoOutputSourceP.proceedLatch = new CountDownLatch(1);
Job job2 = instance().getJet().newJob(dag, config);
NoOutputSourceP.proceedLatch.countDown();
job2.join();
// Then
assertNotNull(config.getName());
List<Job> jobs = instance().getJet().getJobs(config.getName());
assertEquals(2, jobs.size());
Job trackedJob1 = jobs.get(0);
Job trackedJob2 = jobs.get(1);
assertEquals(job2.getId(), trackedJob1.getId());
assertEquals(config.getName(), trackedJob1.getName());
assertEquals(COMPLETED, trackedJob1.getStatus());
assertEquals(job1.getId(), trackedJob2.getId());
assertEquals(config.getName(), trackedJob2.getName());
assertEquals(COMPLETED, trackedJob2.getStatus());
}
Aggregations