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_createWatchedJob_noTail() { final JobDispatcher dispatcher = new JobDispatcher(); final CalculationJob job = new CalculationJob( createJobSpecification(), 0, null, Arrays.asList(JOB_ITEM_AB, JOB_ITEM_BC), CacheSelectHint.allShared()); final StandardJob standard = new StandardJob(dispatcher, job, Mockito.mock(JobResultReceiver.class)); final WatchedJob watched = standard.createWatchedJob(); assertTrue(watched instanceof WatchedJob.Whole); watched.getJob().equals(job); }
public void testWatchedJob_prepareRetryJob_singleItem() { final JobDispatcher dispatcher = new JobDispatcher(); final FunctionBlacklistMaintainer blacklist = Mockito.mock(FunctionBlacklistMaintainer.class); dispatcher.setFunctionBlacklistMaintainer(blacklist); final CalculationJob job = new CalculationJob( createJobSpecification(), 0, null, Arrays.asList(JOB_ITEM_A), CacheSelectHint.allShared()); final JobResultReceiver receiver = Mockito.mock(JobResultReceiver.class); final StandardJob standard = new StandardJob(dispatcher, job, receiver); final WatchedJob watched = new WatchedJob.Whole(standard, job, receiver); watched.prepareRetryJob(null); Mockito.verify(blacklist).failedJobItem(JOB_ITEM_A); }
public void testStandardJob_createWatchedJob_rewrite() { final JobDispatcher dispatcher = new JobDispatcher(); final CalculationJob job1 = new CalculationJob( createJobSpecification(), 0, null, Arrays.asList(JOB_ITEM_AB), CacheSelectHint.privateValues(Arrays.asList(VS_B))); final CalculationJob job2 = new CalculationJob( createJobSpecification(), 0, new long[] {job1.getSpecification().getJobId()}, Arrays.asList(JOB_ITEM_BC), CacheSelectHint.privateValues(Arrays.asList(VS_B))); job1.addTail(job2); final StandardJob standard = new StandardJob(dispatcher, job1, Mockito.mock(JobResultReceiver.class)); final WatchedJob watched = standard.createWatchedJob(); assertTrue(watched instanceof WholeWatchedJob); assertFalse(watched.getJob().getCacheSelectHint().isPrivateValue(VS_B)); assertNull(watched.getJob().getTail()); }