Support getNextJobParameters from JobParametersBuilder.
resolves BATCH-2640 Cleanup and added tests to JobParametersBuilder.
This commit is contained in:
committed by
Michael Minella
parent
96a317c52f
commit
a35784dbd6
@@ -15,76 +15,114 @@
|
||||
*/
|
||||
package org.springframework.batch.core;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.batch.core.explore.JobExplorer;
|
||||
import org.springframework.batch.core.job.SimpleJob;
|
||||
import org.springframework.batch.core.launch.support.RunIdIncrementer;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
* @author Lucas Ward
|
||||
* @author Michael Minella
|
||||
* @author Glenn Renfro
|
||||
*
|
||||
*/
|
||||
public class JobParametersBuilderTests {
|
||||
|
||||
JobParametersBuilder parametersBuilder = new JobParametersBuilder();
|
||||
private JobParametersBuilder parametersBuilder;
|
||||
|
||||
Date date = new Date(System.currentTimeMillis());
|
||||
private SimpleJob job;
|
||||
|
||||
private JobExplorer jobExplorer;
|
||||
|
||||
private List<JobInstance> jobInstanceList;
|
||||
|
||||
private List<JobExecution> jobExecutionList;
|
||||
|
||||
private Date date = new Date(System.currentTimeMillis());
|
||||
|
||||
@Before
|
||||
public void initialize() {
|
||||
this.parametersBuilder = new JobParametersBuilder();
|
||||
this.job = new SimpleJob("simpleJob");
|
||||
this.jobExplorer = mock(JobExplorer.class);
|
||||
this.jobInstanceList = new ArrayList<>(1);
|
||||
this.jobExecutionList = new ArrayList<>(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNonIdentifyingParameters() {
|
||||
parametersBuilder.addDate("SCHEDULE_DATE", date, false);
|
||||
parametersBuilder.addLong("LONG", new Long(1), false);
|
||||
parametersBuilder.addString("STRING", "string value", false);
|
||||
JobParameters parameters = parametersBuilder.toJobParameters();
|
||||
this.parametersBuilder.addDate("SCHEDULE_DATE", date, false);
|
||||
this.parametersBuilder.addLong("LONG", new Long(1), false);
|
||||
this.parametersBuilder.addString("STRING", "string value", false);
|
||||
this.parametersBuilder.addDouble("DOUBLE", new Double(1), false);
|
||||
|
||||
JobParameters parameters = this.parametersBuilder.toJobParameters();
|
||||
assertEquals(date, parameters.getDate("SCHEDULE_DATE"));
|
||||
assertEquals(1L, parameters.getLong("LONG").longValue());
|
||||
assertEquals("string value", parameters.getString("STRING"));
|
||||
assertEquals(1, parameters.getDouble("DOUBLE").doubleValue(), 1e-15);
|
||||
assertFalse(parameters.getParameters().get("SCHEDULE_DATE").isIdentifying());
|
||||
assertFalse(parameters.getParameters().get("LONG").isIdentifying());
|
||||
assertFalse(parameters.getParameters().get("STRING").isIdentifying());
|
||||
assertFalse(parameters.getParameters().get("DOUBLE").isIdentifying());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToJobRuntimeParamters(){
|
||||
parametersBuilder.addDate("SCHEDULE_DATE", date);
|
||||
parametersBuilder.addLong("LONG", new Long(1));
|
||||
parametersBuilder.addString("STRING", "string value");
|
||||
JobParameters parameters = parametersBuilder.toJobParameters();
|
||||
public void testToJobRuntimeParameters(){
|
||||
this.parametersBuilder.addDate("SCHEDULE_DATE", date);
|
||||
this.parametersBuilder.addLong("LONG", new Long(1));
|
||||
this.parametersBuilder.addString("STRING", "string value");
|
||||
this.parametersBuilder.addDouble("DOUBLE", new Double(1));
|
||||
JobParameters parameters = this.parametersBuilder.toJobParameters();
|
||||
assertEquals(date, parameters.getDate("SCHEDULE_DATE"));
|
||||
assertEquals(1L, parameters.getLong("LONG").longValue());
|
||||
assertEquals(1, parameters.getDouble("DOUBLE").doubleValue(), 1e-15);
|
||||
assertEquals("string value", parameters.getString("STRING"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNullRuntimeParamters(){
|
||||
parametersBuilder.addDate("SCHEDULE_DATE", null);
|
||||
parametersBuilder.addLong("LONG", null);
|
||||
parametersBuilder.addString("STRING", null);
|
||||
JobParameters parameters = parametersBuilder.toJobParameters();
|
||||
public void testNullRuntimeParameters(){
|
||||
this.parametersBuilder.addDate("SCHEDULE_DATE", null);
|
||||
this.parametersBuilder.addLong("LONG", null);
|
||||
this.parametersBuilder.addString("STRING", null);
|
||||
this.parametersBuilder.addDouble("DOUBLE", null);
|
||||
|
||||
JobParameters parameters = this.parametersBuilder.toJobParameters();
|
||||
assertEquals(null, parameters.getDate("SCHEDULE_DATE"));
|
||||
assertEquals(0L, parameters.getLong("LONG").longValue());
|
||||
assertEquals(null, parameters.getString("STRING"));
|
||||
assertEquals(0, parameters.getLong("DOUBLE").doubleValue(), 1e-15);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCopy(){
|
||||
parametersBuilder.addString("STRING", "string value");
|
||||
parametersBuilder = new JobParametersBuilder(parametersBuilder.toJobParameters());
|
||||
Iterator<String> parameters = parametersBuilder.toJobParameters().getParameters().keySet().iterator();
|
||||
this.parametersBuilder.addString("STRING", "string value");
|
||||
this.parametersBuilder = new JobParametersBuilder(this.parametersBuilder.toJobParameters());
|
||||
Iterator<String> parameters = this.parametersBuilder.toJobParameters().getParameters().keySet().iterator();
|
||||
assertEquals("STRING", parameters.next());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOrderedTypes(){
|
||||
parametersBuilder.addDate("SCHEDULE_DATE", date);
|
||||
parametersBuilder.addLong("LONG", new Long(1));
|
||||
parametersBuilder.addString("STRING", "string value");
|
||||
Iterator<String> parameters = parametersBuilder.toJobParameters().getParameters().keySet().iterator();
|
||||
this.parametersBuilder.addDate("SCHEDULE_DATE", date);
|
||||
this.parametersBuilder.addLong("LONG", new Long(1));
|
||||
this.parametersBuilder.addString("STRING", "string value");
|
||||
Iterator<String> parameters = this.parametersBuilder.toJobParameters().getParameters().keySet().iterator();
|
||||
assertEquals("SCHEDULE_DATE", parameters.next());
|
||||
assertEquals("LONG", parameters.next());
|
||||
assertEquals("STRING", parameters.next());
|
||||
@@ -92,10 +130,10 @@ public class JobParametersBuilderTests {
|
||||
|
||||
@Test
|
||||
public void testOrderedStrings(){
|
||||
parametersBuilder.addString("foo", "value foo");
|
||||
parametersBuilder.addString("bar", "value bar");
|
||||
parametersBuilder.addString("spam", "value spam");
|
||||
Iterator<String> parameters = parametersBuilder.toJobParameters().getParameters().keySet().iterator();
|
||||
this.parametersBuilder.addString("foo", "value foo");
|
||||
this.parametersBuilder.addString("bar", "value bar");
|
||||
this.parametersBuilder.addString("spam", "value spam");
|
||||
Iterator<String> parameters = this.parametersBuilder.toJobParameters().getParameters().keySet().iterator();
|
||||
assertEquals("foo", parameters.next());
|
||||
assertEquals("bar", parameters.next());
|
||||
assertEquals("spam", parameters.next());
|
||||
@@ -104,9 +142,105 @@ public class JobParametersBuilderTests {
|
||||
@Test
|
||||
public void testAddJobParameter(){
|
||||
JobParameter jobParameter = new JobParameter("bar");
|
||||
parametersBuilder.addParameter("foo", jobParameter);
|
||||
Map<String,JobParameter> parameters = parametersBuilder.toJobParameters().getParameters();
|
||||
this.parametersBuilder.addParameter("foo", jobParameter);
|
||||
Map<String,JobParameter> parameters = this.parametersBuilder.toJobParameters().getParameters();
|
||||
assertEquals(1, parameters.size());
|
||||
assertEquals("bar", parameters.get("foo").getValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPropreties() {
|
||||
Properties props = new Properties();
|
||||
props.setProperty("SCHEDULE_DATE", "A DATE");
|
||||
props.setProperty("LONG", "1");
|
||||
props.setProperty("STRING", "string value");
|
||||
this.parametersBuilder = new JobParametersBuilder(props);
|
||||
JobParameters parameters = this.parametersBuilder.toJobParameters();
|
||||
assertEquals("A DATE", parameters.getString("SCHEDULE_DATE"));
|
||||
assertEquals("1", parameters.getString("LONG"));
|
||||
assertEquals("string value", parameters.getString("STRING"));
|
||||
assertFalse(parameters.getParameters().get("SCHEDULE_DATE").isIdentifying());
|
||||
assertFalse(parameters.getParameters().get("LONG").isIdentifying());
|
||||
assertFalse(parameters.getParameters().get("STRING").isIdentifying());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testGetNextJobParametersFirstRun(){
|
||||
job.setJobParametersIncrementer(new RunIdIncrementer());
|
||||
initializeForNextJobParameters();
|
||||
this.parametersBuilder.getNextJobParameters(this.job, this.jobExplorer);
|
||||
defaultNextJobParametersVerify(this.parametersBuilder.toJobParameters(), 4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNextJobParametersNoIncrementer(){
|
||||
initializeForNextJobParameters();
|
||||
this.parametersBuilder.getNextJobParameters(this.job, this.jobExplorer);
|
||||
baseJobParametersVerify(this.parametersBuilder.toJobParameters(), 3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNextJobParameters(){
|
||||
this.job.setJobParametersIncrementer(new RunIdIncrementer());
|
||||
this.jobInstanceList.add(new JobInstance(1L, "simpleJobInstance"));
|
||||
this.jobExecutionList.add(getJobExecution(this.jobInstanceList.get(0), null));
|
||||
when(this.jobExplorer.getJobInstances("simpleJob",0,1)).thenReturn(this.jobInstanceList);
|
||||
when(this.jobExplorer.getJobExecutions(any())).thenReturn(this.jobExecutionList);
|
||||
initializeForNextJobParameters();
|
||||
this.parametersBuilder.getNextJobParameters(this.job, this.jobExplorer);
|
||||
defaultNextJobParametersVerify(this.parametersBuilder.toJobParameters(), 4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNextJobParametersRestartable(){
|
||||
this.job.setRestartable(true);
|
||||
this.job.setJobParametersIncrementer(new RunIdIncrementer());
|
||||
this.jobInstanceList.add(new JobInstance(1L, "simpleJobInstance"));
|
||||
this.jobExecutionList.add(getJobExecution(this.jobInstanceList.get(0), BatchStatus.FAILED));
|
||||
when(this.jobExplorer.getJobInstances("simpleJob",0,1)).thenReturn(this.jobInstanceList);
|
||||
when(this.jobExplorer.getJobExecutions(any())).thenReturn(this.jobExecutionList);
|
||||
initializeForNextJobParameters();
|
||||
this.parametersBuilder.addLong("NON_IDENTIFYING_LONG", new Long(1), false);
|
||||
this.parametersBuilder.getNextJobParameters(this.job, this.jobExplorer);
|
||||
baseJobParametersVerify(this.parametersBuilder.toJobParameters(), 3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNextJobParametersNoPreviousExecution(){
|
||||
this.job.setJobParametersIncrementer(new RunIdIncrementer());
|
||||
this.jobInstanceList.add(new JobInstance(1L, "simpleJobInstance"));
|
||||
this.jobExecutionList.add(null);
|
||||
when(this.jobExplorer.getJobInstances("simpleJob",0,1)).thenReturn(this.jobInstanceList);
|
||||
when(this.jobExplorer.getJobExecutions(any())).thenReturn(this.jobExecutionList);
|
||||
initializeForNextJobParameters();
|
||||
this.parametersBuilder.getNextJobParameters(this.job, this.jobExplorer);
|
||||
baseJobParametersVerify(this.parametersBuilder.toJobParameters(), 4);
|
||||
}
|
||||
|
||||
private void initializeForNextJobParameters() {
|
||||
this.parametersBuilder.addDate("SCHEDULE_DATE", date);
|
||||
this.parametersBuilder.addLong("LONG", new Long(1));
|
||||
this.parametersBuilder.addString("STRING", "string value");
|
||||
}
|
||||
|
||||
private void defaultNextJobParametersVerify(JobParameters parameters, int paramCount) {
|
||||
baseJobParametersVerify(parameters, paramCount);
|
||||
assertEquals("1", parameters.getString("run.id"));
|
||||
}
|
||||
private void baseJobParametersVerify(JobParameters parameters, int paramCount) {
|
||||
assertEquals(date, parameters.getDate("SCHEDULE_DATE"));
|
||||
assertEquals(1L, parameters.getLong("LONG").longValue());
|
||||
assertEquals("string value", parameters.getString("STRING"));
|
||||
assertEquals(paramCount, parameters.getParameters().size());
|
||||
}
|
||||
|
||||
private JobExecution getJobExecution(JobInstance jobInstance, BatchStatus batchStatus) {
|
||||
JobExecution jobExecution = new JobExecution(jobInstance, 1L, null, "TestConfig");
|
||||
if(batchStatus != null) {
|
||||
jobExecution.setStatus(batchStatus);
|
||||
}
|
||||
return jobExecution;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user