Merged MapTaskExecutionTests into TaskExecutionDaoTests
Removes duplicated code. Resolves #427
This commit is contained in:
@@ -28,8 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.fail;
|
||||
|
||||
/**
|
||||
* Defines test cases that shall be shared between {@link JdbcTaskExecutionDaoTests} and
|
||||
* {@link MapTaskExecutionDaoTests}.
|
||||
* Defines test cases that shall be between {@link TaskExecutionDao} tests.
|
||||
*
|
||||
* @author Gunnar Hillert
|
||||
*/
|
||||
|
||||
@@ -1,166 +0,0 @@
|
||||
/*
|
||||
* Copyright 2015-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.cloud.task.repository.dao;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.cloud.task.repository.TaskExecution;
|
||||
import org.springframework.cloud.task.util.TestVerifierUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
|
||||
/**
|
||||
* Executes unit tests on MapTaskExecutionDaoTests.
|
||||
*
|
||||
* @author Glenn Renfro
|
||||
* @author Gunnar Hillert
|
||||
*/
|
||||
public class MapTaskExecutionDaoTests extends BaseTaskExecutionDaoTestCases {
|
||||
|
||||
private MapTaskExecutionDao mapTaskExecutionDao;
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
this.mapTaskExecutionDao = new MapTaskExecutionDao();
|
||||
super.dao = this.mapTaskExecutionDao;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStartTaskExecution() {
|
||||
TaskExecution expectedTaskExecution = this.dao.createTaskExecution(null, null, new ArrayList<>(0), null);
|
||||
|
||||
expectedTaskExecution.setArguments(Collections.singletonList("foo=" + UUID.randomUUID().toString()));
|
||||
expectedTaskExecution.setStartTime(LocalDateTime.now());
|
||||
expectedTaskExecution.setTaskName(UUID.randomUUID().toString());
|
||||
|
||||
this.dao.startTaskExecution(expectedTaskExecution.getExecutionId(), expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(),
|
||||
expectedTaskExecution.getExternalExecutionId());
|
||||
Map<Long, TaskExecution> taskExecutionMap = this.mapTaskExecutionDao.getTaskExecutions();
|
||||
assertThat(taskExecutionMap).as("taskExecutionMap must not be null").isNotNull();
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
taskExecutionMap.get(expectedTaskExecution.getExecutionId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createEmptyTaskExecution() {
|
||||
TaskExecution expectedTaskExecution = this.dao.createTaskExecution(null, null, new ArrayList<>(0), null);
|
||||
|
||||
Map<Long, TaskExecution> taskExecutionMap = this.mapTaskExecutionDao.getTaskExecutions();
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
taskExecutionMap.get(expectedTaskExecution.getExecutionId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void completeTaskExecutionWithNoCreate() {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoArg();
|
||||
assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
|
||||
this.dao.completeTaskExecution(expectedTaskExecution.getExecutionId(), expectedTaskExecution.getExitCode(),
|
||||
expectedTaskExecution.getEndTime(), expectedTaskExecution.getExitMessage());
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveTaskExecution() {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoArg();
|
||||
expectedTaskExecution = this.dao.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(),
|
||||
expectedTaskExecution.getExternalExecutionId());
|
||||
Map<Long, TaskExecution> taskExecutionMap = this.mapTaskExecutionDao.getTaskExecutions();
|
||||
assertThat(taskExecutionMap).as("taskExecutionMap must not be null").isNotNull();
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
taskExecutionMap.get(expectedTaskExecution.getExecutionId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void completeTaskExecution() {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoArg();
|
||||
expectedTaskExecution = this.dao.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(),
|
||||
expectedTaskExecution.getExternalExecutionId());
|
||||
this.dao.completeTaskExecution(expectedTaskExecution.getExecutionId(), expectedTaskExecution.getExitCode(),
|
||||
expectedTaskExecution.getEndTime(), expectedTaskExecution.getExitMessage());
|
||||
Map<Long, TaskExecution> taskExecutionMap = this.mapTaskExecutionDao.getTaskExecutions();
|
||||
assertThat(taskExecutionMap).as("taskExecutionMap must not be null").isNotNull();
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
taskExecutionMap.get(expectedTaskExecution.getExecutionId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testJobQueries() {
|
||||
List<TaskExecution> expectedTaskExecutionList = new ArrayList<>(2);
|
||||
expectedTaskExecutionList.add(TestVerifierUtils.createSampleTaskExecutionNoArg());
|
||||
expectedTaskExecutionList.add(TestVerifierUtils.createSampleTaskExecutionNoArg());
|
||||
|
||||
for (TaskExecution expectedTaskExecution : expectedTaskExecutionList) {
|
||||
expectedTaskExecution = this.dao.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(),
|
||||
expectedTaskExecution.getExternalExecutionId());
|
||||
this.dao.completeTaskExecution(expectedTaskExecution.getExecutionId(), expectedTaskExecution.getExitCode(),
|
||||
expectedTaskExecution.getEndTime(), expectedTaskExecution.getExitMessage());
|
||||
}
|
||||
Set<Long> jobIds = new HashSet<>(2);
|
||||
jobIds.add(123L);
|
||||
jobIds.add(456L);
|
||||
this.mapTaskExecutionDao.getBatchJobAssociations().put(expectedTaskExecutionList.get(0).getExecutionId(),
|
||||
jobIds);
|
||||
|
||||
assertThat(this.dao.getTaskExecutionIdByJobExecutionId(123L))
|
||||
.isEqualTo(Long.valueOf(expectedTaskExecutionList.get(0).getExecutionId()));
|
||||
assertThat(this.dao.getTaskExecutionIdByJobExecutionId(456L))
|
||||
.isEqualTo(Long.valueOf(expectedTaskExecutionList.get(0).getExecutionId()));
|
||||
assertThat(this.dao.getTaskExecutionIdByJobExecutionId(789L)).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStartExecutionWithNullExternalExecutionIdExisting() {
|
||||
TaskExecution expectedTaskExecution = initializeTaskExecutionWithExternalExecutionId();
|
||||
Map<Long, TaskExecution> taskExecutionMap = this.mapTaskExecutionDao.getTaskExecutions();
|
||||
this.dao.startTaskExecution(expectedTaskExecution.getExecutionId(), expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(), null);
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
taskExecutionMap.get(expectedTaskExecution.getExecutionId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStartExecutionWithNullExternalExecutionIdNonExisting() {
|
||||
TaskExecution expectedTaskExecution = initializeTaskExecutionWithExternalExecutionId();
|
||||
Map<Long, TaskExecution> taskExecutionMap = this.mapTaskExecutionDao.getTaskExecutions();
|
||||
this.dao.startTaskExecution(expectedTaskExecution.getExecutionId(), expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(), "BAR");
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
taskExecutionMap.get(expectedTaskExecution.getExecutionId()));
|
||||
}
|
||||
|
||||
private TaskExecution initializeTaskExecutionWithExternalExecutionId() {
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoArg();
|
||||
return this.dao.createTaskExecution(expectedTaskExecution.getTaskName(), expectedTaskExecution.getStartTime(),
|
||||
expectedTaskExecution.getArguments(), "FOO1");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,6 +20,7 @@ import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
@@ -27,6 +28,8 @@ import javax.sql.DataSource;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
|
||||
@@ -58,7 +61,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = { TestConfiguration.class, EmbeddedDataSourceConfiguration.class,
|
||||
PropertyPlaceholderAutoConfiguration.class })
|
||||
public class JdbcTaskExecutionDaoTests extends BaseTaskExecutionDaoTestCases {
|
||||
public class TaskExecutionDaoTests extends BaseTaskExecutionDaoTestCases {
|
||||
|
||||
@Autowired
|
||||
TaskRepository repository;
|
||||
@@ -73,9 +76,11 @@ public class JdbcTaskExecutionDaoTests extends BaseTaskExecutionDaoTestCases {
|
||||
super.dao = dao;
|
||||
}
|
||||
|
||||
@Test
|
||||
@ParameterizedTest
|
||||
@DirtiesContext
|
||||
public void testStartTaskExecution() {
|
||||
@ValueSource(strings = { "db", "map" })
|
||||
public void testStartTaskExecutionGeneric(String testType) {
|
||||
getDao(testType);
|
||||
TaskExecution expectedTaskExecution = this.dao.createTaskExecution(null, null, new ArrayList<>(0), null);
|
||||
|
||||
expectedTaskExecution.setArguments(Collections.singletonList("foo=" + UUID.randomUUID().toString()));
|
||||
@@ -86,47 +91,78 @@ public class JdbcTaskExecutionDaoTests extends BaseTaskExecutionDaoTestCases {
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(),
|
||||
expectedTaskExecution.getExternalExecutionId());
|
||||
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
TestDBUtils.getTaskExecutionFromDB(this.dataSource, expectedTaskExecution.getExecutionId()));
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution, getTaskExecution(testType, expectedTaskExecution));
|
||||
}
|
||||
|
||||
@Test
|
||||
private TaskExecutionDao getDao(String type) {
|
||||
if (type.equals("db")) {
|
||||
final JdbcTaskExecutionDao jdbcDao = new JdbcTaskExecutionDao(this.dataSource);
|
||||
jdbcDao.setTaskIncrementer(TestDBUtils.getIncrementer(this.dataSource));
|
||||
this.dao = jdbcDao;
|
||||
}
|
||||
else {
|
||||
this.dao = new MapTaskExecutionDao();
|
||||
}
|
||||
return this.dao;
|
||||
|
||||
}
|
||||
|
||||
private TaskExecution getTaskExecution(String type, TaskExecution expectedTaskExecution) {
|
||||
TaskExecution taskExecution;
|
||||
if (type.equals("db")) {
|
||||
taskExecution = TestDBUtils.getTaskExecutionFromDB(this.dataSource, expectedTaskExecution.getExecutionId());
|
||||
}
|
||||
else {
|
||||
Map<Long, TaskExecution> taskExecutionMap = ((MapTaskExecutionDao) dao).getTaskExecutions();
|
||||
|
||||
taskExecution = taskExecutionMap.get(expectedTaskExecution.getExecutionId());
|
||||
}
|
||||
return taskExecution;
|
||||
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@DirtiesContext
|
||||
public void createTaskExecution() {
|
||||
@ValueSource(strings = { "db", "map" })
|
||||
public void createTaskExecution(String testType) {
|
||||
getDao(testType);
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.createSampleTaskExecutionNoArg();
|
||||
expectedTaskExecution = this.dao.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(),
|
||||
expectedTaskExecution.getExternalExecutionId());
|
||||
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
TestDBUtils.getTaskExecutionFromDB(this.dataSource, expectedTaskExecution.getExecutionId()));
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution, getTaskExecution(testType, expectedTaskExecution));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ParameterizedTest
|
||||
@DirtiesContext
|
||||
public void createEmptyTaskExecution() {
|
||||
@ValueSource(strings = { "db", "map" })
|
||||
public void createEmptyTaskExecution(String testType) {
|
||||
getDao(testType);
|
||||
TaskExecution expectedTaskExecution = this.dao.createTaskExecution(null, null, new ArrayList<>(0), null);
|
||||
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
TestDBUtils.getTaskExecutionFromDB(this.dataSource, expectedTaskExecution.getExecutionId()));
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution, getTaskExecution(testType, expectedTaskExecution));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ParameterizedTest
|
||||
@DirtiesContext
|
||||
public void completeTaskExecution() {
|
||||
@ValueSource(strings = { "db", "map" })
|
||||
public void completeTaskExecution(String testType) {
|
||||
getDao(testType);
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.endSampleTaskExecutionNoArg();
|
||||
expectedTaskExecution = this.dao.createTaskExecution(expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(),
|
||||
expectedTaskExecution.getExternalExecutionId());
|
||||
this.dao.completeTaskExecution(expectedTaskExecution.getExecutionId(), expectedTaskExecution.getExitCode(),
|
||||
expectedTaskExecution.getEndTime(), expectedTaskExecution.getExitMessage());
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
TestDBUtils.getTaskExecutionFromDB(this.dataSource, expectedTaskExecution.getExecutionId()));
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution, getTaskExecution(testType, expectedTaskExecution));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ParameterizedTest
|
||||
@DirtiesContext
|
||||
public void completeTaskExecutionWithNoCreate() {
|
||||
@ValueSource(strings = { "db", "map" })
|
||||
public void completeTaskExecutionWithNoCreate(String testType) {
|
||||
getDao(testType);
|
||||
JdbcTaskExecutionDao dao = new JdbcTaskExecutionDao(this.dataSource);
|
||||
|
||||
TaskExecution expectedTaskExecution = TestVerifierUtils.endSampleTaskExecutionNoArg();
|
||||
@@ -167,36 +203,39 @@ public class JdbcTaskExecutionDaoTests extends BaseTaskExecutionDaoTestCases {
|
||||
assertThat(taskExecution.getTaskName()).isEqualTo("FOO3");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ParameterizedTest
|
||||
@DirtiesContext
|
||||
public void testStartExecutionWithNullExternalExecutionIdExisting() {
|
||||
@ValueSource(strings = { "db", "map" })
|
||||
public void testStartExecutionWithNullExternalExecutionIdExisting(String testType) {
|
||||
getDao(testType);
|
||||
TaskExecution expectedTaskExecution = initializeTaskExecutionWithExternalExecutionId();
|
||||
|
||||
this.dao.startTaskExecution(expectedTaskExecution.getExecutionId(), expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(), null);
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
TestDBUtils.getTaskExecutionFromDB(this.dataSource, expectedTaskExecution.getExecutionId()));
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution, getTaskExecution(testType, expectedTaskExecution));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ParameterizedTest
|
||||
@DirtiesContext
|
||||
public void testStartExecutionWithNullExternalExecutionIdNonExisting() {
|
||||
@ValueSource(strings = { "db", "map" })
|
||||
public void testStartExecutionWithNullExternalExecutionIdNonExisting(String testType) {
|
||||
getDao(testType);
|
||||
TaskExecution expectedTaskExecution = initializeTaskExecutionWithExternalExecutionId();
|
||||
|
||||
this.dao.startTaskExecution(expectedTaskExecution.getExecutionId(), expectedTaskExecution.getTaskName(),
|
||||
expectedTaskExecution.getStartTime(), expectedTaskExecution.getArguments(), "BAR");
|
||||
expectedTaskExecution.setExternalExecutionId("BAR");
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution,
|
||||
TestDBUtils.getTaskExecutionFromDB(this.dataSource, expectedTaskExecution.getExecutionId()));
|
||||
TestVerifierUtils.verifyTaskExecution(expectedTaskExecution, getTaskExecution(testType, expectedTaskExecution));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ParameterizedTest
|
||||
@DirtiesContext
|
||||
public void testFindRunningTaskExecutions() {
|
||||
@ValueSource(strings = { "db", "map" })
|
||||
public void testFindRunningTaskExecutions(String testType) {
|
||||
getDao(testType);
|
||||
initializeRepositoryNotInOrderWithMultipleTaskExecutions();
|
||||
assertThat(
|
||||
this.dao.findRunningTaskExecutions("FOO1", PageRequest.of(1, Integer.MAX_VALUE, Sort.by("START_TIME")))
|
||||
.getTotalElements()).isEqualTo(4);
|
||||
assertThat(this.dao.findRunningTaskExecutions("FOO1", PageRequest.of(1, 4, Sort.by("START_TIME")))
|
||||
.getTotalElements()).isEqualTo(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -71,21 +71,25 @@ public class BatchEventsApplication {
|
||||
|
||||
@Bean
|
||||
public Step step2() {
|
||||
return new StepBuilder("step2").repository(this.jobRepository).<String, String>chunk(DEFAULT_CHUNK_COUNT)
|
||||
.reader(new ListItemReader<>(Arrays.asList("1", "2", "3", "4", "5", "6")))
|
||||
.processor(new ItemProcessor<String, String>() {
|
||||
@Override
|
||||
public String process(String item) throws Exception {
|
||||
return String.valueOf(Integer.parseInt(item) * -1);
|
||||
return new StepBuilder("step2").repository(this.jobRepository)
|
||||
.<String, String>chunk(DEFAULT_CHUNK_COUNT)
|
||||
.reader(new ListItemReader<>(Arrays.asList("1", "2", "3", "4", "5", "6")))
|
||||
.processor(new ItemProcessor<String, String>() {
|
||||
@Override
|
||||
public String process(String item) throws Exception {
|
||||
return String.valueOf(Integer.parseInt(item) * -1);
|
||||
}
|
||||
})
|
||||
.writer(new ItemWriter<String>() {
|
||||
@Override
|
||||
public void write(Chunk<? extends String> items) throws Exception {
|
||||
for (String item : items) {
|
||||
System.out.println(">> " + item);
|
||||
}
|
||||
}).writer(new ItemWriter<String>() {
|
||||
@Override
|
||||
public void write(Chunk<? extends String> items) throws Exception {
|
||||
for (String item : items) {
|
||||
System.out.println(">> " + item);
|
||||
}
|
||||
}
|
||||
}).transactionManager(transactionManager).build();
|
||||
}
|
||||
})
|
||||
.transactionManager(transactionManager)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -84,8 +84,10 @@ public class BatchEventsApplicationTests {
|
||||
private List<Message<byte[]>> testListener(String bindingName, int numberToRead) {
|
||||
List<Message<byte[]>> results = new ArrayList<>();
|
||||
this.applicationContext = new SpringApplicationBuilder()
|
||||
.sources(TestChannelBinderConfiguration.getCompleteConfiguration(BatchEventsTestApplication.class))
|
||||
.web(WebApplicationType.NONE).build().run(getCommandLineParams(true));
|
||||
.sources(TestChannelBinderConfiguration.getCompleteConfiguration(BatchEventsTestApplication.class))
|
||||
.web(WebApplicationType.NONE)
|
||||
.build()
|
||||
.run(getCommandLineParams(true));
|
||||
OutputDestination target = this.applicationContext.getBean(OutputDestination.class);
|
||||
for (int i = 0; i < numberToRead; i++) {
|
||||
results.add(target.receive(10000, bindingName));
|
||||
|
||||
@@ -57,22 +57,24 @@ public class JobConfiguration {
|
||||
@Bean
|
||||
public Job job1() {
|
||||
return new JobBuilder("job1", this.jobRepository)
|
||||
.start(new StepBuilder("job1step1", this.jobRepository).tasklet(new Tasklet() {
|
||||
@Override
|
||||
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
|
||||
throws Exception {
|
||||
logger.info("Job1 was run");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
}, transactionManager).build()).build();
|
||||
.start(new StepBuilder("job1step1", this.jobRepository).tasklet(new Tasklet() {
|
||||
@Override
|
||||
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
|
||||
logger.info("Job1 was run");
|
||||
return RepeatStatus.FINISHED;
|
||||
}
|
||||
}, transactionManager).build())
|
||||
.build();
|
||||
}
|
||||
|
||||
static class RuntimeHint implements RuntimeHintsRegistrar {
|
||||
|
||||
@Override
|
||||
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
|
||||
hints.proxies().registerJdkProxy(builder -> builder
|
||||
.proxiedInterfaces(TypeReference.of("org.springframework.batch.core.launch.JobOperator"))
|
||||
.proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class));
|
||||
hints.proxies()
|
||||
.registerJdkProxy(builder -> builder
|
||||
.proxiedInterfaces(TypeReference.of("org.springframework.batch.core.launch.JobOperator"))
|
||||
.proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -77,8 +77,8 @@ public class JpaApplicationTests {
|
||||
this.dataSource = dataSource;
|
||||
try {
|
||||
this.server = Server
|
||||
.createTcpServer("-tcp", "-ifNotExists", "-tcpAllowOthers", "-tcpPort", String.valueOf(randomPort))
|
||||
.start();
|
||||
.createTcpServer("-tcp", "-ifNotExists", "-tcpAllowOthers", "-tcpPort", String.valueOf(randomPort))
|
||||
.start();
|
||||
}
|
||||
catch (SQLException e) {
|
||||
throw new IllegalStateException(e);
|
||||
|
||||
@@ -55,17 +55,23 @@ public class ExternalDataSourceConfiguration {
|
||||
@Primary
|
||||
public DataSource dataSource(
|
||||
@Qualifier("springDataSourceProperties") DataSourceProperties springDataSourceProperties) {
|
||||
return DataSourceBuilder.create().driverClassName(springDataSourceProperties.getDriverClassName())
|
||||
.url(springDataSourceProperties.getUrl()).password(springDataSourceProperties.getPassword())
|
||||
.username(springDataSourceProperties.getUsername()).build();
|
||||
return DataSourceBuilder.create()
|
||||
.driverClassName(springDataSourceProperties.getDriverClassName())
|
||||
.url(springDataSourceProperties.getUrl())
|
||||
.password(springDataSourceProperties.getPassword())
|
||||
.username(springDataSourceProperties.getUsername())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DataSource secondDataSource(
|
||||
@Qualifier("secondDataSourceProperties") DataSourceProperties secondDataSourceProperties) {
|
||||
return DataSourceBuilder.create().driverClassName(secondDataSourceProperties.getDriverClassName())
|
||||
.url(secondDataSourceProperties.getUrl()).password(secondDataSourceProperties.getPassword())
|
||||
.username(secondDataSourceProperties.getUsername()).build();
|
||||
return DataSourceBuilder.create()
|
||||
.driverClassName(secondDataSourceProperties.getDriverClassName())
|
||||
.url(secondDataSourceProperties.getUrl())
|
||||
.password(secondDataSourceProperties.getPassword())
|
||||
.username(secondDataSourceProperties.getUsername())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -39,11 +39,12 @@ public class MultiDataSourcesApplicationTests {
|
||||
String output = capturedOutput.toString();
|
||||
|
||||
assertThat(output.contains("There are 2 DataSources within this application"))
|
||||
.as("Unable to find CommandLineRunner output: " + output).isTrue();
|
||||
.as("Unable to find CommandLineRunner output: " + output)
|
||||
.isTrue();
|
||||
assertThat(output.contains("Creating: TaskExecution{")).as("Unable to find start task message: " + output)
|
||||
.isTrue();
|
||||
.isTrue();
|
||||
assertThat(output.contains("Updating: TaskExecution")).as("Unable to find update task message: " + output)
|
||||
.isTrue();
|
||||
.isTrue();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -78,11 +78,12 @@ public class MultiDataSourcesExternalApplicationTests {
|
||||
String output = capturedOutput.toString();
|
||||
|
||||
assertThat(output.contains("There are 2 DataSources within this application"))
|
||||
.as("Unable to find CommandLineRunner output: " + output).isTrue();
|
||||
.as("Unable to find CommandLineRunner output: " + output)
|
||||
.isTrue();
|
||||
assertThat(output.contains("Creating: TaskExecution{")).as("Unable to find start task message: " + output)
|
||||
.isTrue();
|
||||
.isTrue();
|
||||
assertThat(output.contains("Updating: TaskExecution")).as("Unable to find update task message: " + output)
|
||||
.isTrue();
|
||||
.isTrue();
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@@ -97,8 +98,10 @@ public class MultiDataSourcesExternalApplicationTests {
|
||||
Server server = null;
|
||||
try {
|
||||
if (defaultServer == null) {
|
||||
server = Server.createTcpServer("-ifNotExists", "-tcp", "-tcpAllowOthers", "-tcpPort",
|
||||
String.valueOf(randomPort)).start();
|
||||
server = Server
|
||||
.createTcpServer("-ifNotExists", "-tcp", "-tcpAllowOthers", "-tcpPort",
|
||||
String.valueOf(randomPort))
|
||||
.start();
|
||||
defaultServer = server;
|
||||
}
|
||||
}
|
||||
@@ -113,8 +116,10 @@ public class MultiDataSourcesExternalApplicationTests {
|
||||
Server server = null;
|
||||
try {
|
||||
if (secondServer == null) {
|
||||
server = Server.createTcpServer("-ifNotExists", "-tcp", "-tcpAllowOthers", "-tcpPort",
|
||||
String.valueOf(secondRandomPort)).start();
|
||||
server = Server
|
||||
.createTcpServer("-ifNotExists", "-tcp", "-tcpAllowOthers", "-tcpPort",
|
||||
String.valueOf(secondRandomPort))
|
||||
.start();
|
||||
secondServer = server;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ public class JobConfiguration {
|
||||
TaskRepository taskRepository, @Autowired(required = false) ThreadPoolTaskExecutor executor)
|
||||
throws Exception {
|
||||
Resource resource = this.resourceLoader
|
||||
.getResource("maven://io.spring.cloud:partitioned-batch-job:3.0.0-SNAPSHOT");
|
||||
.getResource("maven://io.spring.cloud:partitioned-batch-job:3.0.0-SNAPSHOT");
|
||||
|
||||
DeployerPartitionHandler partitionHandler = new DeployerPartitionHandler(taskLauncher, jobExplorer, resource,
|
||||
"workerStep", taskRepository, executor);
|
||||
@@ -161,14 +161,18 @@ public class JobConfiguration {
|
||||
@Bean
|
||||
public Step step1(PartitionHandler partitionHandler) throws Exception {
|
||||
return new StepBuilder("step1").repository(this.jobRepository)
|
||||
.partitioner(workerStep().getName(), partitioner()).step(workerStep())
|
||||
.partitionHandler(partitionHandler).build();
|
||||
.partitioner(workerStep().getName(), partitioner())
|
||||
.step(workerStep())
|
||||
.partitionHandler(partitionHandler)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Step workerStep() {
|
||||
return new StepBuilder("workerStep").repository(this.jobRepository).tasklet(workerTasklet(null))
|
||||
.transactionManager(this.transactionManager).build();
|
||||
return new StepBuilder("workerStep").repository(this.jobRepository)
|
||||
.tasklet(workerTasklet(null))
|
||||
.transactionManager(this.transactionManager)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -176,7 +180,8 @@ public class JobConfiguration {
|
||||
public Job partitionedJob(PartitionHandler partitionHandler) throws Exception {
|
||||
Random random = new Random();
|
||||
return new JobBuilder("partitionedJob" + random.nextInt()).repository(this.jobRepository)
|
||||
.start(step1(partitionHandler)).build();
|
||||
.start(step1(partitionHandler))
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -117,7 +117,8 @@ public class TaskPartitionerTests {
|
||||
Page<TaskExecution> taskExecutions = this.taskExplorer.findAll(PageRequest.of(0, 10));
|
||||
assertThat(taskExecutions.getTotalElements()).as("Five rows are expected").isEqualTo(5);
|
||||
assertThat(this.taskExplorer.getTaskExecutionCountByTaskName("PartitionedBatchJobTask"))
|
||||
.as("Only One master is expected").isEqualTo(1);
|
||||
.as("Only One master is expected")
|
||||
.isEqualTo(1);
|
||||
for (TaskExecution taskExecution : taskExecutions) {
|
||||
assertThat(taskExecution.getExitCode().intValue()).as("return code should be 0").isEqualTo(0);
|
||||
}
|
||||
@@ -130,8 +131,9 @@ public class TaskPartitionerTests {
|
||||
public org.h2.tools.Server initH2TCPServer() {
|
||||
Server server;
|
||||
try {
|
||||
server = Server.createTcpServer("-tcp", "-ifNotExists", "-tcpAllowOthers", "-tcpPort",
|
||||
String.valueOf(randomPort)).start();
|
||||
server = Server
|
||||
.createTcpServer("-tcp", "-ifNotExists", "-tcpAllowOthers", "-tcpPort", String.valueOf(randomPort))
|
||||
.start();
|
||||
}
|
||||
catch (SQLException e) {
|
||||
throw new IllegalStateException(e);
|
||||
|
||||
@@ -128,8 +128,8 @@ public class BatchJobApplicationTests {
|
||||
|
||||
if (defaultServer == null) {
|
||||
server = Server
|
||||
.createTcpServer("-ifNotExists", "-tcp", "-tcpAllowOthers", "-tcpPort", String.valueOf(randomPort))
|
||||
.start();
|
||||
.createTcpServer("-ifNotExists", "-tcp", "-tcpAllowOthers", "-tcpPort", String.valueOf(randomPort))
|
||||
.start();
|
||||
defaultServer = server;
|
||||
DriverManagerDataSource dataSource = new DriverManagerDataSource();
|
||||
dataSource.setDriverClassName(DATASOURCE_DRIVER_CLASS_NAME);
|
||||
|
||||
@@ -83,8 +83,9 @@ public class TaskProcessorApplicationTests {
|
||||
private List<Message<byte[]>> testListener(String bindingName, int numberToRead) {
|
||||
List<Message<byte[]>> results = new ArrayList<>();
|
||||
this.applicationContext = new SpringApplicationBuilder()
|
||||
.sources(TestChannelBinderConfiguration.getCompleteConfiguration(TaskProcessorTestApplication.class))
|
||||
.web(WebApplicationType.NONE).run();
|
||||
.sources(TestChannelBinderConfiguration.getCompleteConfiguration(TaskProcessorTestApplication.class))
|
||||
.web(WebApplicationType.NONE)
|
||||
.run();
|
||||
|
||||
InputDestination input = this.applicationContext.getBean(InputDestination.class);
|
||||
OutputDestination target = this.applicationContext.getBean(OutputDestination.class);
|
||||
|
||||
@@ -71,8 +71,9 @@ public class TaskSinkApplicationTests {
|
||||
|
||||
assertThat(actualRequest.getCommandlineArguments().isEmpty()).isTrue();
|
||||
assertThat(actualRequest.getDefinition().getProperties().get("server.port")).isEqualTo("0");
|
||||
assertThat(actualRequest.getResource().toString()
|
||||
.contains("org.springframework.cloud.task.app:timestamp-task:jar:1.0.1.RELEASE")).isTrue();
|
||||
assertThat(actualRequest.getResource()
|
||||
.toString()
|
||||
.contains("org.springframework.cloud.task.app:timestamp-task:jar:1.0.1.RELEASE")).isTrue();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -49,9 +49,9 @@ public class TaskApplicationTests {
|
||||
String output = capturedOutput.toString();
|
||||
assertThat(output.contains(TEST_DATE_DOTS)).as("Unable to find the timestamp: " + output).isTrue();
|
||||
assertThat(output.contains(CREATE_TASK_MESSAGE)).as("Test results do not show create task message: " + output)
|
||||
.isTrue();
|
||||
.isTrue();
|
||||
assertThat(output.contains(UPDATE_TASK_MESSAGE)).as("Test results do not show success message: " + output)
|
||||
.isTrue();
|
||||
.isTrue();
|
||||
assertThat(output.contains(EXIT_CODE_MESSAGE)).as("Test results have incorrect exit code: " + output).isTrue();
|
||||
|
||||
String taskTitle = "Demo Timestamp Task";
|
||||
|
||||
@@ -51,7 +51,7 @@ public class TimestampTaskPropertiesTests {
|
||||
context.refresh();
|
||||
TimestampTaskProperties properties = context.getBean(TimestampTaskProperties.class);
|
||||
assertThat(properties.getFormat()).as("result does not match default format.")
|
||||
.isEqualTo("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
.isEqualTo("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user