private TestTasklet assertTasklet(Job job, String stepName, String taskletName) { System.err.println(((FlowJob) job).getStepNames()); Step step = ((FlowJob) job).getStep(stepName); assertTrue("Wrong type for step name="+stepName+": "+step, step instanceof TaskletStep); Object tasklet = ReflectionTestUtils.getField(step, "tasklet"); assertTrue(tasklet instanceof TestTasklet); TestTasklet testTasklet = (TestTasklet) tasklet; assertEquals(taskletName, testTasklet.getName()); assertTrue(!testTasklet.isExecuted()); return testTasklet; } }
@Test public void testTasklet3() throws Exception { assertNotNull(job3); JobExecution jobExecution = jobRepository.createJobExecution(job3.getName(), new JobParameters()); job3.execute(jobExecution); assertEquals(FlowJob.class, job3.getClass()); Step step = ((FlowJob) job3).getStep("step3"); Field field = ReflectionUtils.findField(TaskletStep.class, "tasklet"); ReflectionUtils.makeAccessible(field); TestTasklet tasklet = (TestTasklet) ReflectionUtils.getField(field, step); assertEquals("foobar", tasklet.getName()); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); }
public static void injectChunkListener(Job job, ChunkListener chunkListener) { if (job instanceof FlowJob) { FlowJob flowJob = (FlowJob) job; for (String stepName : flowJob.getStepNames()) { Step step = flowJob.getStep(stepName); if (step != null && step instanceof TaskletStep) { TaskletStep taskletStep = (TaskletStep) step; taskletStep.registerChunkListener(chunkListener); } } } } }
@Test public void testCustomNestedTasklet() throws Exception { assertNotNull(job4); JobExecution jobExecution = jobRepository.createJobExecution(job4.getName(), new JobParameters()); job4.execute(jobExecution); assertEquals(FlowJob.class, job4.getClass()); Step step = ((FlowJob) job4).getStep("step4"); Field field = ReflectionUtils.findField(TaskletStep.class, "tasklet"); ReflectionUtils.makeAccessible(field); TestTasklet tasklet = (TestTasklet) ReflectionUtils.getField(field, step); assertEquals(DummyNamespaceHandler.LABEL, tasklet.getName()); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); } }
@Test public void testGetStepNotExists() throws Exception { SimpleFlow flow = new SimpleFlow("job"); List<StateTransition> transitions = new ArrayList<>(); transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2")); transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), "end0")); transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0"))); flow.setStateTransitions(transitions); flow.afterPropertiesSet(); job.setFlow(flow); job.afterPropertiesSet(); Step step = job.getStep("foo"); assertNull(step); }
@Test public void testGetStepNotStepState() throws Exception { SimpleFlow flow = new SimpleFlow("job"); List<StateTransition> transitions = new ArrayList<>(); transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2")); transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), "end0")); transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0"))); flow.setStateTransitions(transitions); flow.afterPropertiesSet(); job.setFlow(flow); job.afterPropertiesSet(); Step step = job.getStep("end0"); assertNull(step); }
@Test public void testGetStepExists() throws Exception { SimpleFlow flow = new SimpleFlow("job"); List<StateTransition> transitions = new ArrayList<>(); transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2")); transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), "end0")); transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0"))); flow.setStateTransitions(transitions); flow.afterPropertiesSet(); job.setFlow(flow); job.afterPropertiesSet(); Step step = job.getStep("step2"); assertNotNull(step); assertEquals("step2", step.getName()); }
@Test public void testGetStepExistsWithPrefix() throws Exception { SimpleFlow flow = new SimpleFlow("job"); List<StateTransition> transitions = new ArrayList<>(); transitions.add(StateTransition.createStateTransition(new StepState("job.step", new StubStep("step")), "end0")); transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0"))); flow.setStateTransitions(transitions); flow.afterPropertiesSet(); job.setFlow(flow); job.setName(flow.getName()); job.afterPropertiesSet(); Step step = job.getStep("step"); assertNotNull(step); assertEquals("step", step.getName()); }
@Test public void testTaskletInline() throws Exception { assertNotNull(job2); JobExecution jobExecution = jobRepository.createJobExecution(job2.getName(), new JobParameters()); job2.execute(jobExecution); Step step = job2.getStep("step2"); tasklet = (TestTasklet) ReflectionTestUtils.getField(step, "tasklet"); assertEquals("foo", tasklet.getName()); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); }
@Test public void testGetPartitionedStep() throws Exception { SimpleFlow flow = new SimpleFlow("job"); List<StateTransition> transitions = new ArrayList<>(); PartitionStep step = new PartitionStep(); step.setName("step1"); JsrPartitionHandler partitionHandler = new JsrPartitionHandler(); partitionHandler.setPropertyContext(new BatchPropertyContext()); partitionHandler.setPartitions(3); partitionHandler.setJobRepository(jobRepository); partitionHandler.setStep(new StubStep("subStep")); partitionHandler.afterPropertiesSet(); step.setPartitionHandler(partitionHandler); step.setStepExecutionSplitter(new JsrStepExecutionSplitter(jobRepository, false, "step1", true)); step.setJobRepository(jobRepository); step.afterPropertiesSet(); transitions.add(StateTransition.createStateTransition(new StepState("job.step", step), "end0")); transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0"))); flow.setStateTransitions(transitions); flow.afterPropertiesSet(); job.setFlow(flow); job.afterPropertiesSet(); job.execute(jobRepository.createJobExecution("partitionJob", new JobParameters())); assertEquals(3, step.getStepNames().size()); Step subStep = job.getStep("step1:partition0"); assertNotNull(subStep); assertEquals("subStep", subStep.getName()); assertNull(job.getStep("step that does not exist")); }