@Override public String decide(StepExecution[] executions) throws Exception { for(StepExecution stepExecution : executions) { if ("customFailTest".equals(stepExecution.getStepName())) { return "CustomFail"; } } return "next"; } }
@Override public String decide(StepExecution[] ses) throws Exception { for (StepExecution se : ses) { System.out.println(se.getStepName() + " " + se.getBatchStatus().toString() + " " + se.getExitStatus()); } return "foobar"; }
@Override public String decide(StepExecution[] executions) throws Exception { Assert.isTrue(executions.length == 1, "Invalid array length"); Assert.isTrue(executions[0].getStepName().equals("step1"), "Incorrect step name"); if(runs == 0) { runs++; return "STOP_HERE"; } else { return "CONTINUE"; } } }
@Test public void testGetStepExecutionsRoseyScenario() { JobExecution jobExecution = new JobExecution(5L); List<StepExecution> stepExecutions = new ArrayList<>(); stepExecutions.add(new StepExecution("step1", jobExecution, 1L)); stepExecutions.add(new StepExecution("step2", jobExecution, 2L)); jobExecution.addStepExecutions(stepExecutions); when(jobExplorer.getJobExecution(5L)).thenReturn(jobExecution); when(jobExplorer.getStepExecution(5L, 1L)).thenReturn(new StepExecution("step1", jobExecution, 1L)); when(jobExplorer.getStepExecution(5L, 2L)).thenReturn(new StepExecution("step2", jobExecution, 2L)); List<javax.batch.runtime.StepExecution> results = jsrJobOperator.getStepExecutions(5L); assertEquals("step1", results.get(0).getStepName()); assertEquals("step2", results.get(1).getStepName()); }
@Test public void testGetStepExecutionsPartitionedStepScenario() { JobExecution jobExecution = new JobExecution(5L); List<StepExecution> stepExecutions = new ArrayList<>(); stepExecutions.add(new StepExecution("step1", jobExecution, 1L)); stepExecutions.add(new StepExecution("step2", jobExecution, 2L)); stepExecutions.add(new StepExecution("step2:partition0", jobExecution, 2L)); stepExecutions.add(new StepExecution("step2:partition1", jobExecution, 2L)); stepExecutions.add(new StepExecution("step2:partition2", jobExecution, 2L)); jobExecution.addStepExecutions(stepExecutions); when(jobExplorer.getJobExecution(5L)).thenReturn(jobExecution); when(jobExplorer.getStepExecution(5L, 1L)).thenReturn(new StepExecution("step1", jobExecution, 1L)); when(jobExplorer.getStepExecution(5L, 2L)).thenReturn(new StepExecution("step2", jobExecution, 2L)); List<javax.batch.runtime.StepExecution> results = jsrJobOperator.getStepExecutions(5L); assertEquals("step1", results.get(0).getStepName()); assertEquals("step2", results.get(1).getStepName()); }
@Test public void testDecisionRestart() throws Exception { JobExecution execution = runJob("DecisionStepTests-restart-context", new Properties(), 10000L); assertEquals(BatchStatus.STOPPED, execution.getBatchStatus()); List<StepExecution> stepExecutions = BatchRuntime.getJobOperator().getStepExecutions(execution.getExecutionId()); assertEquals(2, stepExecutions.size()); assertEquals("step1", stepExecutions.get(0).getStepName()); assertEquals("decision1", stepExecutions.get(1).getStepName()); JobExecution execution2 = restartJob(execution.getExecutionId(), new Properties(), 10000L); assertEquals(BatchStatus.COMPLETED, execution2.getBatchStatus()); List<StepExecution> stepExecutions2 = BatchRuntime.getJobOperator().getStepExecutions(execution2.getExecutionId()); assertEquals(2, stepExecutions2.size()); assertEquals("decision1", stepExecutions2.get(0).getStepName()); assertEquals("step2", stepExecutions2.get(1).getStepName()); }
@Test public void testWildcardAddedLastWhenUsedWithNextAttrAndNoTransitionElements() throws Exception { JobExecution jobExecution = runJob("FlowParserTestsWildcardAndNextAttrJob", new Properties(), 1000L); assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus()); JobOperator jobOperator = BatchRuntime.getJobOperator(); List<StepExecution> stepExecutions = jobOperator.getStepExecutions(jobExecution.getExecutionId()); assertEquals(1, stepExecutions.size()); StepExecution failedStep = stepExecutions.get(0); assertTrue("step1".equals(failedStep.getStepName())); }
@Test public void testStepGetsFailedTransitionWhenNextAttributePresent() throws Exception { JobExecution jobExecution = runJob("FlowParserTestsStepGetsFailedTransitionWhenNextAttributePresent", new Properties(), 10000L); assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus()); JobOperator jobOperator = BatchRuntime.getJobOperator(); List<StepExecution> stepExecutions = jobOperator.getStepExecutions(jobExecution.getExecutionId()); assertEquals(1, stepExecutions.size()); StepExecution failedStep = stepExecutions.get(0); assertTrue("failedExitStatusStep".equals(failedStep.getStepName())); assertTrue("FAILED".equals(failedStep.getExitStatus())); }
@Test public void testStepNoOverrideWhenNextAndFailedTransitionElementExists() throws Exception { JobExecution jobExecution = runJob("FlowParserTestsStepNoOverrideWhenNextAndFailedTransitionElementExists", new Properties(), 10000L); assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus()); JobOperator jobOperator = BatchRuntime.getJobOperator(); List<StepExecution> stepExecutions = jobOperator.getStepExecutions(jobExecution.getExecutionId()); assertEquals(1, stepExecutions.size()); StepExecution failedStep = stepExecutions.get(0); assertTrue("failedExitStatusStepDontOverride".equals(failedStep.getStepName())); assertTrue("CUSTOM_FAIL".equals(failedStep.getExitStatus())); }
@Test public void testBaseValues() { assertEquals(5L, jsrStepExecution.getStepExecutionId()); assertEquals("testStep", jsrStepExecution.getStepName()); assertEquals(javax.batch.runtime.BatchStatus.STARTED, jsrStepExecution.getBatchStatus()); assertEquals(new Date(0), jsrStepExecution.getStartTime());
@Override public StepExecutionImpl findOriginalStepExecutionForRestart(final String stepName, final JobExecutionImpl jobExecutionToRestart, final ClassLoader classLoader) { for (final StepExecution stepExecution : jobExecutionToRestart.getStepExecutions()) { if (stepName.equals(stepExecution.getStepName())) { return (StepExecutionImpl) stepExecution; } } return null; } }
@Override public int countStepStartTimes(final String stepName, final long jobInstanceId) { int count = 0; final JobInstanceImpl jobInstanceImpl = jobInstances.get(jobInstanceId); if (jobInstanceImpl != null) { for (final JobExecution jobExecution : jobInstanceImpl.getJobExecutions()) { final JobExecutionImpl jobExecutionImpl = (JobExecutionImpl) jobExecution; for (final StepExecution stepExecution : jobExecutionImpl.getStepExecutions()) { if (stepExecution.getStepName().equals(stepName)) { count++; } } } } return count; }
private Object getMainStepStatus(long execId1) { for ( StepExecution stepExec : jobOperator.getStepExecutions( execId1 ) ) { if ( stepExec.getStepName().equals( "produceLuceneDoc" ) ) { return stepExec.getBatchStatus(); } } return null; }
@Override public int countStepStartTimes(final String stepName, final long jobInstanceId) { int count = 0; final JobInstanceImpl jobInstanceImpl = jobInstanceCache.get(jobInstanceId); if (jobInstanceImpl != null) { for (final JobExecution jobExecution : jobInstanceImpl.getJobExecutions()) { final JobExecutionImpl jobExecutionImpl = jobExecutionCache.get(jobExecution.getExecutionId()); for (final StepExecution stepExecution : jobExecutionImpl.getStepExecutions()) { if (stepExecution.getStepName().equals(stepName)) { count++; } } } } return count; }
public static StepExecutionEntity create(final StepExecution stepExecution) { final StepExecutionEntity result = new StepExecutionEntity(); result.id = stepExecution.getStepExecutionId(); result.name = stepExecution.getStepName(); result.status = stepExecution.getBatchStatus(); result.exitStatus = stepExecution.getExitStatus(); result.endTime = stepExecution.getEndTime(); result.startTime = stepExecution.getStartTime(); // metrics result.metrics = new HashMap<>(); final Metric[] metricArr = stepExecution.getMetrics(); for (Metric m : metricArr) { result.metrics.put(m.getType().name().toLowerCase(), m.getValue()); } if (stepExecution.getPersistentUserData() != null) { result.setPersistentUserData(stepExecution.getPersistentUserData().toString()); } return result; }
private StepProgress getMainStepProgress(long executionId) { List<StepExecution> stepExecutions = jobOperator.getStepExecutions( executionId ); for ( StepExecution stepExecution : stepExecutions ) { switch ( stepExecution.getStepName() ) { case MAIN_STEP_NAME: return (StepProgress) stepExecution.getPersistentUserData(); default: break; } } throw new AssertionFailure( "Missing step progress for step '" + MAIN_STEP_NAME + "'" ); }
private void assertCompletion(long executionId) { List<StepExecution> stepExecutions = jobOperator.getStepExecutions( executionId ); for ( StepExecution stepExecution : stepExecutions ) { BatchStatus batchStatus = stepExecution.getBatchStatus(); log.infof( "step %s executed.", stepExecution.getStepName() ); assertEquals( BatchStatus.COMPLETED, batchStatus ); } }
private static Object[] asArray(final StepExecution n) { return new Object[] { n.getStepExecutionId(), n.getStepName(), n.getBatchStatus().name(), n.getExitStatus(), n.getStartTime() != null ? n.getStartTime().toString() : "", n.getEndTime() != null ? n.getEndTime().toString() : "", metric(n.getMetrics(), Metric.MetricType.READ_COUNT), metric(n.getMetrics(), Metric.MetricType.WRITE_COUNT), metric(n.getMetrics(), Metric.MetricType.COMMIT_COUNT), metric(n.getMetrics(), Metric.MetricType.ROLLBACK_COUNT), metric(n.getMetrics(), Metric.MetricType.READ_SKIP_COUNT), metric(n.getMetrics(), Metric.MetricType.PROCESS_SKIP_COUNT), metric(n.getMetrics(), Metric.MetricType.WRITE_SKIP_COUNT), metric(n.getMetrics(), Metric.MetricType.FILTER_COUNT) }; }
private void showStepState(StepExecution step) { Reporter.log("---------------------------<p>"); Reporter.log("getStepName(): " + step.getStepName() + " - "); Reporter.log("getStepExecutionId(): " + step.getStepExecutionId() + " - "); Metric[] metrics = step.getMetrics(); for (int i = 0; i < metrics.length; i++) { Reporter.log(metrics[i].getType() + ": " + metrics[i].getValue() + " - "); } Reporter.log("getStartTime(): " + step.getStartTime() + " - "); Reporter.log("getEndTime(): " + step.getEndTime() + " - "); Reporter.log("getBatchStatus(): " + step.getBatchStatus() + " - "); Reporter.log("getExitStatus(): " + step.getExitStatus()+"<p>"); Reporter.log("---------------------------<p>"); }
private void showStepState(StepExecution step) { Reporter.log("---------------------------"); Reporter.log("getStepName(): " + step.getStepName() + " - "); Reporter.log("getJobExecutionId(): " + step.getStepExecutionId() + " - "); //System.out.print("getStepExecutionId(): " + step.getStepExecutionId() + " - "); Metric[] metrics = step.getMetrics(); for (int i = 0; i < metrics.length; i++) { Reporter.log(metrics[i].getType() + ": " + metrics[i].getValue() + " - "); } Reporter.log("getStartTime(): " + step.getStartTime() + " - "); Reporter.log("getEndTime(): " + step.getEndTime() + " - "); //System.out.print("getLastUpdateTime(): " + step.getLastUpdateTime() + " - "); Reporter.log("getBatchStatus(): " + step.getBatchStatus() + " - "); Reporter.log("getExitStatus(): " + step.getExitStatus()); Reporter.log("---------------------------"); } }