SCT-96 Update TaskRepository to be additive only

resolves spring-cloud/spring-cloud-task#96
This commit is contained in:
Glenn Renfro
2016-03-01 13:06:42 -05:00
committed by Michael Minella
parent 83836e1eea
commit dc26f7c98d
18 changed files with 244 additions and 165 deletions

View File

@@ -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());

View File

@@ -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());
}
}

View File

@@ -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,

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -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());
}

View File

@@ -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{}
}

View File

@@ -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());
}
}

View File

@@ -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);
}
/**