SCT-96 Update TaskRepository to be additive only
resolves spring-cloud/spring-cloud-task#96
This commit is contained in:
committed by
Michael Minella
parent
83836e1eea
commit
dc26f7c98d
@@ -73,14 +73,14 @@ public class TaskLifecycleListenerTests {
|
||||
@Test
|
||||
public void testTaskCreate() {
|
||||
context.refresh();
|
||||
verifyTaskExecution(0, false, null, null);
|
||||
verifyTaskExecution(0, false, 0, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTaskCreateWithArgs() {
|
||||
context.register(ArgsConfiguration.class);
|
||||
context.refresh();
|
||||
verifyTaskExecution(2, false, null, null);
|
||||
verifyTaskExecution(2, false, 0, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -130,7 +130,7 @@ public class TaskLifecycleListenerTests {
|
||||
}
|
||||
else {
|
||||
assertNull(taskExecution.getEndTime());
|
||||
assertNull(taskExecution.getExitCode());
|
||||
assertTrue(taskExecution.getExitCode() == 0);
|
||||
}
|
||||
|
||||
assertEquals("testTask", taskExecution.getTaskName());
|
||||
|
||||
@@ -58,7 +58,8 @@ public class JdbcTaskExecutionDaoTests {
|
||||
@DirtiesContext
|
||||
public void saveTaskExecution() {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam();
|
||||
dao.saveTaskExecution(expectedTaskExecution);
|
||||
expectedTaskExecution = dao.createTaskExecution(expectedTaskExecution.getTaskName(), expectedTaskExecution.getStartTime(),
|
||||
expectedTaskExecution.getParameters());
|
||||
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
TestDBUtils.getTaskExecutionFromDB(dataSource, expectedTaskExecution.getExecutionId()));
|
||||
@@ -66,20 +67,25 @@ public class JdbcTaskExecutionDaoTests {
|
||||
|
||||
@Test
|
||||
@DirtiesContext
|
||||
public void updateTaskExecution() {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam();
|
||||
dao.saveTaskExecution(expectedTaskExecution);
|
||||
dao.updateTaskExecution(expectedTaskExecution);
|
||||
public void completeTaskExecution() {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.endSampleTaskExecutionNoParam();
|
||||
expectedTaskExecution = dao.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getParameters());
|
||||
dao.completeTaskExecution(expectedTaskExecution.getExecutionId(),
|
||||
expectedTaskExecution.getExitCode(), expectedTaskExecution.getEndTime(),
|
||||
expectedTaskExecution.getExitMessage());
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
TestDBUtils.getTaskExecutionFromDB(dataSource, expectedTaskExecution.getExecutionId()));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalStateException.class)
|
||||
@DirtiesContext
|
||||
public void updateTaskExecutionWithNoCreate() {
|
||||
public void completeTaskExecutionWithNoCreate() {
|
||||
JdbcTaskExecutionDao dao = new JdbcTaskExecutionDao(dataSource);
|
||||
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam();
|
||||
dao.updateTaskExecution(expectedTaskExecution);
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.endSampleTaskExecutionNoParam();
|
||||
dao.completeTaskExecution(expectedTaskExecution.getExecutionId(),
|
||||
expectedTaskExecution.getExitCode(), expectedTaskExecution.getEndTime(),
|
||||
expectedTaskExecution.getExitMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,8 @@ public class MapTaskExecutionDaoTests {
|
||||
public void saveTaskExecution(){
|
||||
MapTaskExecutionDao dao = new MapTaskExecutionDao();
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam();
|
||||
dao.saveTaskExecution(expectedTaskExecution);
|
||||
expectedTaskExecution = dao.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getParameters());
|
||||
Map<Long, TaskExecution> taskExecutionMap = dao.getTaskExecutions();
|
||||
assertNotNull("taskExecutionMap must not be null", taskExecutionMap);
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
@@ -43,11 +44,14 @@ public class MapTaskExecutionDaoTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateTaskExecution(){
|
||||
public void completeTaskExecution(){
|
||||
MapTaskExecutionDao dao = new MapTaskExecutionDao();
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam();
|
||||
dao.saveTaskExecution(expectedTaskExecution);
|
||||
dao.updateTaskExecution(expectedTaskExecution);
|
||||
expectedTaskExecution = dao.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getParameters());
|
||||
dao.completeTaskExecution(expectedTaskExecution.getExecutionId(),
|
||||
expectedTaskExecution.getExitCode(), expectedTaskExecution.getEndTime(),
|
||||
expectedTaskExecution.getExitMessage());
|
||||
Map<Long, TaskExecution> taskExecutionMap = dao.getTaskExecutions();
|
||||
assertNotNull("taskExecutionMap must not be null", taskExecutionMap);
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
|
||||
@@ -31,6 +31,7 @@ import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
@@ -41,7 +42,6 @@ import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||
@@ -164,8 +164,8 @@ public class SimpleTaskExplorerTests {
|
||||
}
|
||||
|
||||
for (; i < (COMPLETE_COUNT + TEST_COUNT); i++) {
|
||||
TaskExecution expectedTaskExecution = new TaskExecution(i, 0, TASK_NAME, new Date(), null, null, new ArrayList<String>(0));
|
||||
this.taskRepository.createTaskExecution(expectedTaskExecution);
|
||||
TaskExecution expectedTaskExecution = this.taskRepository.createTaskExecution(
|
||||
TASK_NAME, new Date(), new ArrayList<String>());
|
||||
expectedResults.put(expectedTaskExecution.getExecutionId(), expectedTaskExecution);
|
||||
}
|
||||
Pageable pageable = new PageRequest(0, 10);
|
||||
@@ -190,6 +190,7 @@ public class SimpleTaskExplorerTests {
|
||||
final int TEST_COUNT = 5;
|
||||
final int COMPLETE_COUNT = 7;
|
||||
final String TASK_NAME = "FOOBAR";
|
||||
Random randomGenerator = new Random();
|
||||
|
||||
Map<Long, TaskExecution> expectedResults = new HashMap<>();
|
||||
//Store completed jobs
|
||||
@@ -198,9 +199,8 @@ public class SimpleTaskExplorerTests {
|
||||
}
|
||||
|
||||
for (int i = 0; i < TEST_COUNT; i++) {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam();
|
||||
expectedTaskExecution.setTaskName(TASK_NAME);
|
||||
this.taskRepository.createTaskExecution(expectedTaskExecution);
|
||||
TaskExecution expectedTaskExecution = this.taskRepository.createTaskExecution(
|
||||
TASK_NAME, new Date(), new ArrayList<String>());
|
||||
expectedResults.put(expectedTaskExecution.getExecutionId(), expectedTaskExecution);
|
||||
}
|
||||
|
||||
@@ -307,7 +307,8 @@ public class SimpleTaskExplorerTests {
|
||||
|
||||
private TaskExecution createAndSaveTaskExecution(int i) {
|
||||
TaskExecution taskExecution = TestVerifierUtils.createSampleTaskExecution(i);
|
||||
this.taskRepository.createTaskExecution(taskExecution);
|
||||
taskExecution = this.taskRepository.createTaskExecution(taskExecution.getTaskName(),
|
||||
taskExecution.getStartTime(), taskExecution.getParameters());
|
||||
return taskExecution;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
package org.springframework.cloud.task.repository.support;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.junit.Test;
|
||||
@@ -74,30 +77,56 @@ public class SimpleTaskRepositoryJdbcTests {
|
||||
|
||||
@Test
|
||||
@DirtiesContext
|
||||
public void testUpdateTaskExecution() {
|
||||
public void testCompleteTaskExecution() {
|
||||
TaskExecution expectedTaskExecution =
|
||||
TaskExecutionCreator.createAndStoreTaskExecutionNoParams(taskRepository);
|
||||
expectedTaskExecution = TaskExecutionCreator.updateTaskExecution(taskRepository,
|
||||
expectedTaskExecution.getExecutionId());
|
||||
TaskExecution actualTaskExecution = TestDBUtils.getTaskExecutionFromDB(
|
||||
dataSource, expectedTaskExecution.getExecutionId());
|
||||
expectedTaskExecution.setEndTime(new Date());
|
||||
expectedTaskExecution.setExitCode(77);
|
||||
expectedTaskExecution.setExitMessage(UUID.randomUUID().toString());
|
||||
|
||||
TaskExecution actualTaskExecution = TaskExecutionCreator.completeExecution(taskRepository, expectedTaskExecution);
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution, actualTaskExecution);
|
||||
}
|
||||
|
||||
@Test
|
||||
@DirtiesContext
|
||||
public void testCreateTaskExecutionNoParamMaxExitMessageSize(){
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam();
|
||||
TaskExecution expectedTaskExecution = TaskExecutionCreator.createAndStoreTaskExecutionNoParams(taskRepository);
|
||||
expectedTaskExecution.setExitMessage(new String(new char[SimpleTaskRepository.MAX_EXIT_MESSAGE_SIZE+1]));
|
||||
taskRepository.createTaskExecution(expectedTaskExecution);
|
||||
expectedTaskExecution.setEndTime(new Date());
|
||||
taskRepository.completeTaskExecution(expectedTaskExecution.getExecutionId(),
|
||||
expectedTaskExecution.getExitCode(), new Date(),
|
||||
expectedTaskExecution.getExitMessage());
|
||||
}
|
||||
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
@DirtiesContext
|
||||
public void testCreateTaskExecutionNoParamMaxTaskName(){
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam();
|
||||
expectedTaskExecution.setTaskName(new String(new char[SimpleTaskRepository.MAX_TASK_NAME_SIZE+1]));
|
||||
taskRepository.createTaskExecution(expectedTaskExecution);
|
||||
taskRepository.createTaskExecution(
|
||||
new String(new char[SimpleTaskRepository.MAX_TASK_NAME_SIZE+1]),
|
||||
new Date(), null);
|
||||
}
|
||||
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
@DirtiesContext
|
||||
public void testCreateTaskExecutionNegativeException(){
|
||||
TaskExecution expectedTaskExecution =
|
||||
TaskExecutionCreator.createAndStoreTaskExecutionNoParams(taskRepository);
|
||||
expectedTaskExecution.setEndTime(new Date());
|
||||
expectedTaskExecution.setExitCode(-1);
|
||||
|
||||
TaskExecution actualTaskExecution = TaskExecutionCreator.completeExecution(taskRepository, expectedTaskExecution);
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution, actualTaskExecution);
|
||||
}
|
||||
|
||||
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
@DirtiesContext
|
||||
public void testCreateTaskExecutionNullEndTime(){
|
||||
TaskExecution expectedTaskExecution =
|
||||
TaskExecutionCreator.createAndStoreTaskExecutionNoParams(taskRepository);
|
||||
expectedTaskExecution.setExitCode(-1);
|
||||
TaskExecutionCreator.completeExecution(taskRepository, expectedTaskExecution);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.springframework.cloud.task.repository.support;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import ch.qos.logback.core.Appender;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -49,14 +51,14 @@ public class SimpleTaskRepositoryLoggerTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTaskUpdate() {
|
||||
public void testTaskComplete() {
|
||||
final Appender mockAppender = TestVerifierUtils.getMockAppender();
|
||||
TaskExecution expectedTaskExecution =
|
||||
TaskExecutionCreator.createAndStoreTaskExecutionNoParams(taskRepository);
|
||||
TaskExecutionCreator.updateTaskExecution(taskRepository,
|
||||
expectedTaskExecution.getExecutionId());
|
||||
expectedTaskExecution.setEndTime(new Date());
|
||||
TaskExecutionCreator.completeExecution(taskRepository, expectedTaskExecution);
|
||||
TestVerifierUtils.verifyLogEntryExists(mockAppender,
|
||||
"Updating: TaskExecution{executionId="
|
||||
"Updating: TaskExecution with executionId="
|
||||
+ expectedTaskExecution.getExecutionId());
|
||||
}
|
||||
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
|
||||
package org.springframework.cloud.task.repository.support;
|
||||
|
||||
import static org.springframework.test.util.AssertionErrors.assertTrue;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.cloud.task.repository.TaskExecution;
|
||||
import org.springframework.cloud.task.repository.TaskRepository;
|
||||
import org.springframework.cloud.task.repository.dao.MapTaskExecutionDao;
|
||||
@@ -31,6 +31,8 @@ import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import static org.springframework.test.util.AssertionErrors.assertTrue;
|
||||
|
||||
/**
|
||||
* Tests for the SimpleTaskRepository that uses Map as a datastore.
|
||||
* @author Glenn Renfro.
|
||||
@@ -64,14 +66,13 @@ public class SimpleTaskRepositoryMapTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateTaskExecution() {
|
||||
public void testCompleteTaskExecution() {
|
||||
TaskExecution expectedTaskExecution =
|
||||
TaskExecutionCreator.createAndStoreTaskExecutionNoParams(taskRepository);
|
||||
expectedTaskExecution = TaskExecutionCreator.updateTaskExecution(taskRepository,
|
||||
expectedTaskExecution.getExecutionId());
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
getSingleTaskExecutionFromMapRepository(taskRepository,
|
||||
expectedTaskExecution.getExecutionId()));
|
||||
expectedTaskExecution.setEndTime(new Date());
|
||||
|
||||
TaskExecution actualTaskExecution = TaskExecutionCreator.completeExecution(taskRepository, expectedTaskExecution);
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution, actualTaskExecution);
|
||||
}
|
||||
|
||||
private TaskExecution getSingleTaskExecutionFromMapRepository(
|
||||
@@ -83,6 +84,14 @@ public class SimpleTaskRepositoryMapTests {
|
||||
return taskMap.get(taskExecutionId);
|
||||
}
|
||||
|
||||
@Test(expected=IllegalArgumentException.class)
|
||||
public void testCreateTaskExecutionNullEndTime(){
|
||||
TaskExecution expectedTaskExecution =
|
||||
TaskExecutionCreator.createAndStoreTaskExecutionNoParams(taskRepository);
|
||||
expectedTaskExecution.setExitCode(-1);
|
||||
TaskExecutionCreator.completeExecution(taskRepository, expectedTaskExecution);
|
||||
}
|
||||
|
||||
@Configuration
|
||||
public static class EmptyConfiguration{}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,8 @@ public class TaskExecutionCreator {
|
||||
*/
|
||||
public static TaskExecution createAndStoreTaskExecutionNoParams(TaskRepository taskRepository) {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam();
|
||||
taskRepository.createTaskExecution(expectedTaskExecution);
|
||||
expectedTaskExecution = taskRepository.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getParameters());
|
||||
return expectedTaskExecution;
|
||||
}
|
||||
|
||||
@@ -54,7 +55,8 @@ public class TaskExecutionCreator {
|
||||
params.add(UUID.randomUUID().toString());
|
||||
params.add(UUID.randomUUID().toString());
|
||||
expectedTaskExecution.setParameters(params);
|
||||
taskRepository.createTaskExecution(expectedTaskExecution);
|
||||
expectedTaskExecution = taskRepository.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getParameters());
|
||||
return expectedTaskExecution;
|
||||
}
|
||||
|
||||
@@ -64,10 +66,10 @@ public class TaskExecutionCreator {
|
||||
* @param taskRepository the taskRepository where the taskExecution should be updated.
|
||||
* @return the taskExecution created.
|
||||
*/
|
||||
public static TaskExecution updateTaskExecution(TaskRepository taskRepository,
|
||||
long taskExecutionId) {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoParam(taskExecutionId);
|
||||
taskRepository.update(expectedTaskExecution);
|
||||
return expectedTaskExecution;
|
||||
public static TaskExecution completeExecution(TaskRepository taskRepository,
|
||||
TaskExecution expectedTaskExecution) {
|
||||
return taskRepository.completeTaskExecution(expectedTaskExecution.getExecutionId(),
|
||||
expectedTaskExecution.getExitCode(), expectedTaskExecution.getEndTime(),
|
||||
expectedTaskExecution.getExitMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,16 +82,14 @@ public class TestVerifierUtils {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static TaskExecution createSampleTaskExecutionNoParam(long executionId) {
|
||||
public static TaskExecution createSampleTaskExecutionNoParam() {
|
||||
Random randomGenerator = new Random();
|
||||
int exitCode = randomGenerator.nextInt();
|
||||
Date startTime = new Date();
|
||||
Date endTime = new Date();
|
||||
long executionId = randomGenerator.nextLong();
|
||||
String taskName = UUID.randomUUID().toString();
|
||||
String exitMessage = UUID.randomUUID().toString();
|
||||
|
||||
return new TaskExecution(executionId, exitCode, taskName,
|
||||
startTime, endTime, exitMessage, new ArrayList<String>());
|
||||
return new TaskExecution(executionId, 0, taskName,
|
||||
startTime, null, null, new ArrayList<String>());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,7 +97,7 @@ public class TestVerifierUtils {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static TaskExecution createSampleTaskExecutionNoParam() {
|
||||
public static TaskExecution endSampleTaskExecutionNoParam() {
|
||||
Random randomGenerator = new Random();
|
||||
int exitCode = randomGenerator.nextInt();
|
||||
Date startTime = new Date();
|
||||
@@ -119,38 +117,14 @@ public class TestVerifierUtils {
|
||||
*/
|
||||
public static TaskExecution createSampleTaskExecution(long executionId) {
|
||||
Random randomGenerator = new Random();
|
||||
int exitCode = randomGenerator.nextInt();
|
||||
Date startTime = new Date();
|
||||
Date endTime = new Date();
|
||||
String taskName = UUID.randomUUID().toString();
|
||||
String exitMessage = UUID.randomUUID().toString();
|
||||
List<String> params = new ArrayList<>(PARAM_SIZE);
|
||||
for (int i = 0 ; i < PARAM_SIZE ; i++){
|
||||
params.add(UUID.randomUUID().toString());
|
||||
}
|
||||
return new TaskExecution(executionId, exitCode, taskName,
|
||||
startTime, endTime, exitMessage, params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a fully populated TaskExecution for testing.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static TaskExecution createSampleTaskExecution() {
|
||||
Random randomGenerator = new Random();
|
||||
int exitCode = randomGenerator.nextInt();
|
||||
long executionId = randomGenerator.nextLong();
|
||||
Date startTime = new Date();
|
||||
Date endTime = new Date();
|
||||
String taskName = UUID.randomUUID().toString();
|
||||
String exitMessage = UUID.randomUUID().toString();
|
||||
List<String> params = new ArrayList<>(PARAM_SIZE);
|
||||
for (int i = 0 ; i < PARAM_SIZE ; i++){
|
||||
params.add(UUID.randomUUID().toString());
|
||||
}
|
||||
return new TaskExecution(executionId, exitCode, taskName,
|
||||
startTime, endTime, exitMessage, params);
|
||||
return new TaskExecution(executionId, null, taskName,
|
||||
startTime, null, null, params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user