public void testWatchedJob_prepareRetryJob_split_one() { final Queue<DispatchableJob> dispatched = new LinkedList<DispatchableJob>(); final JobDispatcher dispatcher = new JobDispatcher() { @Override protected void dispatchJobImpl(final DispatchableJob job) { dispatched.add(job); } }; final CalculationJob job = new CalculationJob( createJobSpecification(), 0, null, Arrays.asList(JOB_ITEM_A, JOB_ITEM_AB), CacheSelectHint.privateValues(Arrays.asList(VS_A))); final JobResultReceiver receiver = Mockito.mock(JobResultReceiver.class); final StandardJob standard = new StandardJob(dispatcher, job, receiver); final WatchedJob watched = new WatchedJob.Whole(standard, job, receiver); final DispatchableJob split = watched.prepareRetryJob(null); final CalculationJob job1 = split.getJob(); assertEquals(job1.getJobItems(), Arrays.asList(JOB_ITEM_A)); assertFalse(job1.getCacheSelectHint().isPrivateValue(VS_A)); final CalculationJobResult result1 = new CalculationJobResult( job1.getSpecification(), 0, Arrays.asList(CalculationJobResultItem.success()), "Test"); split.getResultReceiver(result1).resultReceived(result1); Mockito.verifyZeroInteractions(receiver); assertEquals(dispatched.size(), 1); final DispatchableJob next = dispatched.poll(); final CalculationJob job2 = next.getJob(); assertEquals(job2.getJobItems(), Arrays.asList(JOB_ITEM_AB)); assertFalse(job2.getCacheSelectHint().isPrivateValue(VS_A)); final CalculationJobResult result2 = new CalculationJobResult( job2.getSpecification(), 0, Arrays.asList(CalculationJobResultItem.failure("Foo", "Bar")), "Test"); next.getResultReceiver(result2).resultReceived(result2); Mockito.verify(receiver) .resultReceived( new CalculationJobResult( job.getSpecification(), 0, Arrays.asList( CalculationJobResultItem.success(), CalculationJobResultItem.failure("Foo", "Bar")), "Test")); assertTrue(job1.getSpecification().getJobId() != job2.getSpecification().getJobId()); assertTrue(job2.getSpecification().getJobId() == job.getSpecification().getJobId()); }
public void testStandardJob_WholeWatchedJob() { final CalculationJob job1 = new CalculationJob( createJobSpecification(), 0, null, Arrays.asList(JOB_ITEM_A), CacheSelectHint.allShared()); final CalculationJob job2 = new CalculationJob( createJobSpecification(), 0, new long[] {job1.getSpecification().getJobId()}, Arrays.asList(JOB_ITEM_AB), CacheSelectHint.allShared()); job1.addTail(job2); final CalculationJob job3 = new CalculationJob( createJobSpecification(), 0, new long[] {job1.getSpecification().getJobId()}, Arrays.asList(JOB_ITEM_AC), CacheSelectHint.allShared()); job1.addTail(job3); final CalculationJob job4 = new CalculationJob( createJobSpecification(), 0, new long[] {job2.getSpecification().getJobId(), job3.getSpecification().getJobId()}, Arrays.asList(JOB_ITEM_BCD), CacheSelectHint.allShared()); job3.addTail(job4); final JobResultReceiver receiver = Mockito.mock(JobResultReceiver.class); final Queue<DispatchableJob> dispatched = new LinkedList<DispatchableJob>(); final JobDispatcher dispatcher = new JobDispatcher() { @Override protected void dispatchJobImpl(final DispatchableJob job) { dispatched.add(job); } }; final StandardJob parent = new StandardJob(dispatcher, job1, receiver); final WholeWatchedJob wjob1 = parent.createWholeWatchedJob(job1); final CalculationJobResult result1 = new CalculationJobResult( job1.getSpecification(), 0, Arrays.asList(CalculationJobResultItem.success()), "Test"); wjob1.getResultReceiver(result1).resultReceived(result1); Mockito.verify(receiver).resultReceived(result1); Mockito.reset(); assertEquals(dispatched.size(), 2); final WholeWatchedJob wjob2 = (WholeWatchedJob) dispatched.poll(); final WholeWatchedJob wjob3 = (WholeWatchedJob) dispatched.poll(); final CalculationJobResult result2 = new CalculationJobResult( job2.getSpecification(), 0, Arrays.asList(CalculationJobResultItem.success()), "Test"); final CalculationJobResult result3 = new CalculationJobResult( job3.getSpecification(), 0, Arrays.asList(CalculationJobResultItem.success()), "Test"); wjob3.getResultReceiver(result3).resultReceived(result3); Mockito.verify(receiver).resultReceived(result3); Mockito.reset(); assertEquals(dispatched.size(), 0); wjob2.getResultReceiver(result2).resultReceived(result2); Mockito.verify(receiver).resultReceived(result2); Mockito.reset(); assertEquals(dispatched.size(), 1); final WholeWatchedJob wjob4 = (WholeWatchedJob) dispatched.poll(); final CalculationJobResult result4 = new CalculationJobResult( job4.getSpecification(), 0, Arrays.asList(CalculationJobResultItem.success()), "Test"); wjob4.getResultReceiver(result4).resultReceived(result4); Mockito.verify(receiver).resultReceived(result4); Mockito.reset(); }