RESOLVED - issue BATCH-1197: Rerunning a job sometimes creates new job instance

This commit is contained in:
dsyer
2009-04-07 09:05:14 +00:00
parent 46a912cd6e
commit f12edbb546
2 changed files with 143 additions and 90 deletions

View File

@@ -1,43 +1,70 @@
package org.springframework.batch.core.repository.dao;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import java.math.BigInteger;
import java.security.MessageDigest;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobInstance;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "sql-dao-test.xml")
public class JdbcJobInstanceDaoTests extends AbstractJobInstanceDaoTests {
protected JobInstanceDao getJobInstanceDao() {
deleteFromTables("BATCH_JOB_EXECUTION_CONTEXT", "BATCH_STEP_EXECUTION_CONTEXT", "BATCH_STEP_EXECUTION", "BATCH_JOB_EXECUTION",
"BATCH_JOB_PARAMS", "BATCH_JOB_INSTANCE");
deleteFromTables("BATCH_JOB_EXECUTION_CONTEXT",
"BATCH_STEP_EXECUTION_CONTEXT", "BATCH_STEP_EXECUTION",
"BATCH_JOB_EXECUTION", "BATCH_JOB_PARAMS", "BATCH_JOB_INSTANCE");
return (JobInstanceDao) applicationContext.getBean("jobInstanceDao");
}
@Test
public void testFindJobInstanceByExecution(){
JobExecutionDao jobExecutionDao = (JobExecutionDao) applicationContext.getBean("jobExecutionDao");
JobInstance jobInstance = dao.createJobInstance("testInstance", new JobParameters());
public void testFindJobInstanceByExecution() {
JobExecutionDao jobExecutionDao = (JobExecutionDao) applicationContext
.getBean("jobExecutionDao");
JobInstance jobInstance = dao.createJobInstance("testInstance",
new JobParameters());
JobExecution jobExecution = new JobExecution(jobInstance, 2L);
jobExecutionDao.saveJobExecution(jobExecution);
JobInstance returnedInstance = dao.getJobInstance(jobExecution);
Assert.assertEquals(jobInstance, returnedInstance);
assertEquals(jobInstance, returnedInstance);
}
@Test
public void testCreateJobKey() {
JdbcJobInstanceDao jdbcDao = (JdbcJobInstanceDao) dao;
JobParameters jobParameters = new JobParametersBuilder().addString(
"foo", "bar").addString("bar", "foo").toJobParameters();
String key = jdbcDao.createJobKey(jobParameters);
assertEquals(32, key.length());
}
@Test
public void testCreateJobKeyOrdering() {
JdbcJobInstanceDao jdbcDao = (JdbcJobInstanceDao) dao;
JobParameters jobParameters1 = new JobParametersBuilder().addString(
"foo", "bar").addString("bar", "foo").toJobParameters();
String key1 = jdbcDao.createJobKey(jobParameters1);
JobParameters jobParameters2 = new JobParametersBuilder().addString(
"bar", "foo").addString("foo", "bar").toJobParameters();
String key2 = jdbcDao.createJobKey(jobParameters2);
assertEquals(key1, key2);
}
@Test
public void testHexing() throws Exception {
MessageDigest digest = MessageDigest.getInstance("MD5");
@@ -46,9 +73,9 @@ public class JdbcJobInstanceDaoTests extends AbstractJobInstanceDaoTests {
for (byte bite : bytes) {
output.append(String.format("%02x", bite));
}
assertEquals("Wrong hash: "+output,32, output.length());
assertEquals("Wrong hash: " + output, 32, output.length());
String value = String.format("%032x", new BigInteger(1, bytes));
assertEquals("Wrong hash: "+value,32, value.length());
assertEquals("Wrong hash: " + value, 32, value.length());
assertEquals(value, output.toString());
}
}