Java 类org.springframework.batch.core.BatchStatus 实例源码
项目:https-github.com-g0t4-jenkins2-course-spring-boot
文件:BatchAutoConfigurationTests.java
@Bean
public Job discreteJob() {
AbstractJob job = new AbstractJob("discreteRegisteredJob") {
@Override
public Collection<String> getStepNames() {
return Collections.emptySet();
}
@Override
public Step getStep(String stepName) {
return null;
}
@Override
protected void doExecute(JobExecution execution)
throws JobExecutionException {
execution.setStatus(BatchStatus.COMPLETED);
}
};
job.setJobRepository(this.jobRepository);
return job;
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot
文件:BatchAutoConfigurationTests.java
@Bean
public Job discreteJob() {
AbstractJob job = new AbstractJob("discreteLocalJob") {
@Override
public Collection<String> getStepNames() {
return Collections.emptySet();
}
@Override
public Step getStep(String stepName) {
return null;
}
@Override
protected void doExecute(JobExecution execution)
throws JobExecutionException {
execution.setStatus(BatchStatus.COMPLETED);
}
};
job.setJobRepository(this.jobRepository);
return job;
}
项目:spring-boot-concourse
文件:BatchAutoConfigurationTests.java
@Bean
public Job discreteJob() {
AbstractJob job = new AbstractJob("discreteRegisteredJob") {
@Override
public Collection<String> getStepNames() {
return Collections.emptySet();
}
@Override
public Step getStep(String stepName) {
return null;
}
@Override
protected void doExecute(JobExecution execution)
throws JobExecutionException {
execution.setStatus(BatchStatus.COMPLETED);
}
};
job.setJobRepository(this.jobRepository);
return job;
}
项目:spring-boot-concourse
文件:BatchAutoConfigurationTests.java
@Bean
public Job discreteJob() {
AbstractJob job = new AbstractJob("discreteLocalJob") {
@Override
public Collection<String> getStepNames() {
return Collections.emptySet();
}
@Override
public Step getStep(String stepName) {
return null;
}
@Override
protected void doExecute(JobExecution execution)
throws JobExecutionException {
execution.setStatus(BatchStatus.COMPLETED);
}
};
job.setJobRepository(this.jobRepository);
return job;
}
项目:spring-cloud-dataflow
文件:JobStepExecutionsDocumentation.java
@Before
public void setup() throws Exception {
if (!initialized) {
registerApp(task, "timestamp");
initialize();
createJobExecution(JOB_NAME, BatchStatus.STARTED);
documentation.dontDocument(() -> this.mockMvc.perform(
post("/tasks/definitions")
.param("name", "DOCJOB_1")
.param("definition", "timestamp --format='YYYY MM DD'"))
.andExpect(status().isOk()));
initialized = true;
}
}
项目:spring-cloud-dataflow
文件:JobExecutionsDocumentation.java
@Before
public void setup() throws Exception {
if (!initialized) {
registerApp(task, "timestamp");
initialize();
createJobExecution(JOB_NAME, BatchStatus.STARTED);
createJobExecution(JOB_NAME + "_1", BatchStatus.STOPPED);
documentation.dontDocument(() -> this.mockMvc.perform(
post("/tasks/definitions")
.param("name", "DOCJOB_1")
.param("definition", "timestamp --format='YYYY MM DD'"))
.andExpect(status().isOk()));
initialized = true;
}
}
项目:contestparser
文件:BatchAutoConfigurationTests.java
@Bean
public Job discreteJob() {
AbstractJob job = new AbstractJob("discreteRegisteredJob") {
@Override
public Collection<String> getStepNames() {
return Collections.emptySet();
}
@Override
public Step getStep(String stepName) {
return null;
}
@Override
protected void doExecute(JobExecution execution)
throws JobExecutionException {
execution.setStatus(BatchStatus.COMPLETED);
}
};
job.setJobRepository(this.jobRepository);
return job;
}
项目:contestparser
文件:BatchAutoConfigurationTests.java
@Bean
public Job discreteJob() {
AbstractJob job = new AbstractJob("discreteLocalJob") {
@Override
public Collection<String> getStepNames() {
return Collections.emptySet();
}
@Override
public Step getStep(String stepName) {
return null;
}
@Override
protected void doExecute(JobExecution execution)
throws JobExecutionException {
execution.setStatus(BatchStatus.COMPLETED);
}
};
job.setJobRepository(this.jobRepository);
return job;
}
项目:eMonocot
文件:JobExecutionDaoImpl.java
/**
* @param resultSet Set the result set
* @param rowNumber Set the row number
* @throws SQLException if there is a problem
* @return a job execution instance
*/
public final JobExecution mapRow(final ResultSet resultSet,
final int rowNumber) throws SQLException {
JobInstance jobInstance = new JobInstance(resultSet.getBigDecimal(
"JOB_INSTANCE_ID").longValue(),
new JobParameters(), resultSet.getString("JOB_NAME"));
JobExecution jobExecution = new JobExecution(jobInstance,
resultSet.getBigDecimal("JOB_EXECUTION_ID").longValue());
jobExecution.setStartTime(resultSet.getTimestamp("START_TIME"));
jobExecution.setCreateTime(resultSet.getTimestamp("CREATE_TIME"));
jobExecution.setEndTime(resultSet.getTimestamp("END_TIME"));
jobExecution.setStatus(BatchStatus.valueOf(resultSet
.getString("STATUS")));
ExitStatus exitStatus = new ExitStatus(
resultSet.getString("EXIT_CODE"),
resultSet.getString("EXIT_MESSAGE"));
jobExecution.setExitStatus(exitStatus);
return jobExecution;
}
项目:eMonocot
文件:ResourceDaoImpl.java
@Override
public List<Resource> listResourcesToHarvest(Integer limit, DateTime now, String fetch) {
Criteria criteria = getSession().createCriteria(type);
criteria.add(Restrictions.isNotNull("resourceType"));
criteria.add(Restrictions.in("status", Arrays.asList(new BatchStatus[] {BatchStatus.COMPLETED, BatchStatus.FAILED,BatchStatus.ABANDONED, BatchStatus.STOPPED})));
criteria.add(Restrictions.eq("scheduled", Boolean.TRUE));
criteria.add(Restrictions.disjunction().add(Restrictions.lt("nextAvailableDate", now)).add(Restrictions.isNull("nextAvailableDate")));
if (limit != null) {
criteria.setMaxResults(limit);
}
enableProfilePreQuery(criteria, fetch);
criteria.addOrder( Property.forName("nextAvailableDate").asc() );
List<Resource> result = (List<Resource>) criteria.list();
for(Resource t : result) {
enableProfilePostQuery(t, fetch);
}
return result;
}
项目:eMonocot
文件:Functions.java
/**
* @param status
* Set the status
* @return true if the job is startable
*/
public static Boolean isStartable(BatchStatus status) {
if (status == null) {
return Boolean.TRUE;
} else {
switch (status) {
case STARTED:
case STARTING:
case STOPPING:
case UNKNOWN:
return Boolean.FALSE;
case COMPLETED:
case FAILED:
case STOPPED:
default:
return Boolean.TRUE;
}
}
}
项目:eMonocot
文件:JobStatusNotifierImpl.java
@Override
public void notify(JobExecutionException jobExecutionException, String resourceIdentifier) {
if(resourceIdentifier != null) {
Resource resource = service.find(resourceIdentifier,"job-with-source");
resource.setJobId(null);
resource.setDuration(null);
resource.setExitCode("FAILED");
resource.setExitDescription(jobExecutionException.getLocalizedMessage());
resource.setJobInstance(null);
resource.setResource(null);
resource.setStartTime(null);
resource.setStatus(BatchStatus.FAILED);
resource.setProcessSkip(0);
resource.setRecordsRead(0);
resource.setReadSkip(0);
resource.setWriteSkip(0);
resource.setWritten(0);
service.saveOrUpdate(resource);
solrIndexingListener.indexObject(resource);
}
}
项目:marklogic-spring-batch
文件:MarkLogicJobExecutionDaoTests.java
/**
* Update and retrieve job execution - check attributes have changed as
* expected.
*/
@Transactional
@Test
public void testUpdateExecution() {
execution.setStatus(BatchStatus.STARTED);
jobExecutionDao.saveJobExecution(execution);
execution.setLastUpdated(new Date(0));
execution.setStatus(BatchStatus.COMPLETED);
jobExecutionDao.updateJobExecution(execution);
JobExecution updated = jobExecutionDao.findJobExecutions(jobInstance).get(0);
assertEquals(execution, updated);
assertEquals(BatchStatus.COMPLETED, updated.getStatus());
assertExecutionsAreEqual(execution, updated);
}
项目:marklogic-spring-batch
文件:MarkLogicJobExecutionDaoTests.java
/**
* Successful synchronization from STARTED to STOPPING status.
*/
@Transactional
@Test
public void testSynchronizeStatusUpgrade() {
JobExecution exec1 = new JobExecution(jobInstance, jobParameters);
exec1.setStatus(BatchStatus.STOPPING);
jobExecutionDao.saveJobExecution(exec1);
JobExecution exec2 = new JobExecution(jobInstance, jobParameters);
assertTrue(exec1.getId() != null);
exec2.setId(exec1.getId());
exec2.setStatus(BatchStatus.STARTED);
exec2.setVersion(7);
assertTrue(exec1.getVersion() != exec2.getVersion());
assertTrue(exec1.getStatus() != exec2.getStatus());
jobExecutionDao.synchronizeStatus(exec2);
assertEquals(exec1.getVersion(), exec2.getVersion());
assertEquals(exec1.getStatus(), exec2.getStatus());
}
项目:marklogic-spring-batch
文件:MarkLogicJobExecutionDaoTests.java
/**
* UNKNOWN status won't be changed by synchronizeStatus, because it is the
* 'largest' BatchStatus (will not downgrade).
*/
@Transactional
@Test
public void testSynchronizeStatusDowngrade() {
JobExecution exec1 = new JobExecution(jobInstance, jobParameters);
exec1.setStatus(BatchStatus.STARTED);
jobExecutionDao.saveJobExecution(exec1);
JobExecution exec2 = new JobExecution(jobInstance, jobParameters);
Assert.state(exec1.getId() != null);
exec2.setId(exec1.getId());
exec2.setStatus(BatchStatus.UNKNOWN);
exec2.setVersion(7);
Assert.state(exec1.getVersion() != exec2.getVersion());
Assert.state(exec1.getStatus().isLessThan(exec2.getStatus()));
jobExecutionDao.synchronizeStatus(exec2);
assertEquals(exec1.getVersion(), exec2.getVersion());
assertEquals(BatchStatus.UNKNOWN, exec2.getStatus());
}
项目:powop
文件:ResourceDaoImpl.java
@Override
public List<Resource> listResourcesToHarvest(Integer limit, DateTime now, String fetch) {
Criteria criteria = getSession().createCriteria(type);
criteria.add(Restrictions.isNotNull("resourceType"));
criteria.add(Restrictions.in("status", Arrays.asList(new BatchStatus[] {BatchStatus.COMPLETED, BatchStatus.FAILED,BatchStatus.ABANDONED, BatchStatus.STOPPED})));
criteria.add(Restrictions.eq("scheduled", Boolean.TRUE));
criteria.add(Restrictions.disjunction().add(Restrictions.lt("nextAvailableDate", now)).add(Restrictions.isNull("nextAvailableDate")));
if (limit != null) {
criteria.setMaxResults(limit);
}
enableProfilePreQuery(criteria, fetch);
criteria.addOrder( Property.forName("nextAvailableDate").asc() );
List<Resource> result = (List<Resource>) criteria.list();
for(Resource t : result) {
enableProfilePostQuery(t, fetch);
}
return result;
}
项目:powop
文件:DarwinCoreJobIntegrationTest.java
private boolean harvestSuccessful(JobConfiguration job) {
DateTime start = DateTime.now();
while(new Period(start, DateTime.now()).getSeconds() < 20) {
jobConfigurationService.refresh(job);
if(BatchStatus.COMPLETED.equals(job.getJobStatus())) {
logger.info("Succesfully completed {}", job.getDescription());
return true;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return false;
}
项目:spring-cloud-task
文件:DeployerStepExecutionHandlerTests.java
@Test
public void testJobInterruptedException() throws Exception {
StepExecution workerStep = new StepExecution("workerStep", new JobExecution(1L), 2L);
when(this.environment.containsProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_JOB_EXECUTION_ID)).thenReturn(true);
when(this.environment.containsProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_EXECUTION_ID)).thenReturn(true);
when(this.environment.containsProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_NAME)).thenReturn(true);
when(this.environment.getProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_NAME)).thenReturn("workerStep");
when(this.beanFactory.getBeanNamesForType(Step.class)).thenReturn(new String[] {"workerStep", "foo", "bar"});
when(this.environment.getProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_EXECUTION_ID)).thenReturn("2");
when(this.environment.getProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_JOB_EXECUTION_ID)).thenReturn("1");
when(this.jobExplorer.getStepExecution(1L, 2L)).thenReturn(workerStep);
when(this.environment.getProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_NAME)).thenReturn("workerStep");
when(this.beanFactory.getBean("workerStep", Step.class)).thenReturn(this.step);
doThrow(new JobInterruptedException("expected")).when(this.step).execute(workerStep);
handler.run();
verify(this.jobRepository).update(this.stepExecutionArgumentCaptor.capture());
assertEquals(BatchStatus.STOPPED, this.stepExecutionArgumentCaptor.getValue().getStatus());
}
项目:spring-cloud-task
文件:DeployerStepExecutionHandlerTests.java
@Test
public void testRuntimeException() throws Exception {
StepExecution workerStep = new StepExecution("workerStep", new JobExecution(1L), 2L);
when(this.environment.containsProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_JOB_EXECUTION_ID)).thenReturn(true);
when(this.environment.containsProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_EXECUTION_ID)).thenReturn(true);
when(this.environment.containsProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_NAME)).thenReturn(true);
when(this.environment.getProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_NAME)).thenReturn("workerStep");
when(this.beanFactory.getBeanNamesForType(Step.class)).thenReturn(new String[] {"workerStep", "foo", "bar"});
when(this.environment.getProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_EXECUTION_ID)).thenReturn("2");
when(this.environment.getProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_JOB_EXECUTION_ID)).thenReturn("1");
when(this.jobExplorer.getStepExecution(1L, 2L)).thenReturn(workerStep);
when(this.environment.getProperty(DeployerPartitionHandler.SPRING_CLOUD_TASK_STEP_NAME)).thenReturn("workerStep");
when(this.beanFactory.getBean("workerStep", Step.class)).thenReturn(this.step);
doThrow(new RuntimeException("expected")).when(this.step).execute(workerStep);
handler.run();
verify(this.jobRepository).update(this.stepExecutionArgumentCaptor.capture());
assertEquals(BatchStatus.FAILED, this.stepExecutionArgumentCaptor.getValue().getStatus());
}
项目:spring-boot-starter-batch-web
文件:JobOperationsController.java
private JobParameters createJobParametersWithIncrementerIfAvailable(String parameters, Job job) throws JobParametersNotFoundException {
JobParameters jobParameters = jobParametersConverter.getJobParameters(PropertiesConverter.stringToProperties(parameters));
// use JobParametersIncrementer to create JobParameters if incrementer is set and only if the job is no restart
if (job.getJobParametersIncrementer() != null){
JobExecution lastJobExecution = jobRepository.getLastJobExecution(job.getName(), jobParameters);
boolean restart = false;
// check if job failed before
if (lastJobExecution != null) {
BatchStatus status = lastJobExecution.getStatus();
if (status.isUnsuccessful() && status != BatchStatus.ABANDONED) {
restart = true;
}
}
// if it's not a restart, create new JobParameters with the incrementer
if (!restart) {
JobParameters nextParameters = getNextJobParameters(job);
Map<String, JobParameter> map = new HashMap<String, JobParameter>(nextParameters.getParameters());
map.putAll(jobParameters.getParameters());
jobParameters = new JobParameters(map);
}
}
return jobParameters;
}
项目:spring-boot-starter-batch-web
文件:XmlIntegrationTest.java
@Test
public void testRunJob() throws InterruptedException {
Long executionId = restTemplate.postForObject("http://localhost:" + port + "/batch/operations/jobs/flatFile2JobXml", "", Long.class);
while (!restTemplate.getForObject("http://localhost:" + port + "/batch/operations/jobs/executions/{executionId}", String.class, executionId)
.equals("COMPLETED")) {
Thread.sleep(1000);
}
String log = restTemplate.getForObject("http://localhost:" + port + "/batch/operations/jobs/executions/{executionId}/log", String.class,
executionId);
assertThat(log.length() > 20, is(true));
JobExecution jobExecution = jobExplorer.getJobExecution(executionId);
assertThat(jobExecution.getStatus(), is(BatchStatus.COMPLETED));
String jobExecutionString = restTemplate.getForObject("http://localhost:" + port + "/batch/monitoring/jobs/executions/{executionId}",
String.class, executionId);
assertThat(jobExecutionString.contains("COMPLETED"), is(true));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsFlatFileToDbIntegrationTest.java
@Test
public void testRunFlatFileToDbNoSkipJob_Success() throws InterruptedException {
JobExecution jobExecution = runJob("flatFileToDbNoSkipJob", "metrics/flatFileToDbNoSkipJob_Success.csv");
assertThat(jobExecution.getStatus(), is(BatchStatus.COMPLETED));
ExecutionContext executionContext = jobExecution.getStepExecutions().iterator().next().getExecutionContext();
long writeCount = 5L;
MetricValidator validator = MetricValidatorBuilder.metricValidator().withExecutionContext(executionContext).withBeforeChunkCount(2L)
.withStreamOpenCount(1L).withStreamUpdateCount(3L).withStreamCloseCount(0L).withBeforeReadCount(6L).withReadCount(6L)
.withAfterReadCount(5L).withReadErrorCount(0L).withBeforeProcessCount(5L).withProcessCount(5L).withAfterProcessCount(5L)
.withProcessErrorCount(0L).withBeforeWriteCount(5L).withWriteCount(writeCount).withAfterWriteCount(5L).withAfterChunkCount(2L)
.withChunkErrorCount(0L).withSkipInReadCount(0L).withSkipInProcessCount(0L).withSkipInWriteCount(0L).build();
validator.validate();
// if one is correct, all will be in the metricReader, so I check just one
assertThat((Double) metricReader.findOne("gauge.batch.flatFileToDbNoSkipJob.step." + MetricNames.PROCESS_COUNT.getName()).getValue(),
is(notNullValue())); // TODO
assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM ITEM", Long.class), is(writeCount));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsFlatFileToDbIntegrationTest.java
@Test
public void testRunFlatFileToDbNoSkipJob_Failed() throws InterruptedException {
JobExecution jobExecution = runJob("flatFileToDbNoSkipJob", "metrics/flatFileToDbNoSkipJob_Failed.csv");
assertThat(jobExecution.getStatus(), is(BatchStatus.FAILED));
ExecutionContext executionContext = jobExecution.getStepExecutions().iterator().next().getExecutionContext();
long writeCount = 3L;
MetricValidator validator = MetricValidatorBuilder.metricValidator().withExecutionContext(executionContext).withBeforeChunkCount(1L)
.withStreamOpenCount(1L).withStreamUpdateCount(2L).withStreamCloseCount(0L).withBeforeReadCount(6L).withReadCount(6L)
.withAfterReadCount(5L).withReadErrorCount(0L).withBeforeProcessCount(3L).withProcessCount(3L).withAfterProcessCount(3L)
.withProcessErrorCount(1L).withBeforeWriteCount(3L).withWriteCount(writeCount).withAfterWriteCount(3L).withAfterChunkCount(1L)
.withChunkErrorCount(1L).withSkipInReadCount(0L).withSkipInProcessCount(0L).withSkipInWriteCount(0L).build();
validator.validate();
// if one is correct, all will be in the metricReader, so I check just one
assertThat((Double) metricReader.findOne("gauge.batch.flatFileToDbNoSkipJob.step." + MetricNames.PROCESS_COUNT.getName()).getValue(),
is(notNullValue()));
assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM ITEM", Long.class), is(writeCount));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsFlatFileToDbIntegrationTest.java
@Test
public void testRunFlatFileToDbSkipJob_SkipInProcess() throws InterruptedException {
JobExecution jobExecution = runJob("flatFileToDbSkipJob", "metrics/flatFileToDbSkipJob_SkipInProcess.csv");
assertThat(jobExecution.getStatus(), is(BatchStatus.COMPLETED));
ExecutionContext executionContext = jobExecution.getStepExecutions().iterator().next().getExecutionContext();
long writeCount = 7L;
MetricValidator validator = MetricValidatorBuilder.metricValidator().withExecutionContext(executionContext).withBeforeChunkCount(3L)
.withStreamOpenCount(1L).withStreamUpdateCount(4L).withStreamCloseCount(0L).withBeforeReadCount(9L).withReadCount(9L)
.withAfterReadCount(8L).withReadErrorCount(0L).withBeforeProcessCount(7L).withProcessCount(7L).withAfterProcessCount(7L)
.withProcessErrorCount(1L).withBeforeWriteCount(7L).withWriteCount(writeCount).withAfterWriteCount(7L).withAfterChunkCount(3L)
.withChunkErrorCount(1L).withSkipInReadCount(0L).withSkipInProcessCount(1L).withSkipInWriteCount(0L).build();
validator.validate();
// if one is correct, all will be in the metricReader, so I check just one
assertThat((Double) metricReader.findOne("gauge.batch.flatFileToDbSkipJob.step." + MetricNames.PROCESS_COUNT.getName()).getValue(),
is(notNullValue()));
assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM ITEM", Long.class), is(writeCount));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsFlatFileToDbIntegrationTest.java
@Test
public void testRunFlatFileToDbSkipJob_SkipInProcess_Failed() throws InterruptedException {
JobExecution jobExecution = runJob("flatFileToDbSkipJob", "metrics/flatFileToDbSkipJob_SkipInProcess_Failed.csv");
assertThat(jobExecution.getStatus(), is(BatchStatus.FAILED));
ExecutionContext executionContext = jobExecution.getStepExecutions().iterator().next().getExecutionContext();
long writeCount = 7L;
MetricValidator validator = MetricValidatorBuilder.metricValidator().withExecutionContext(executionContext).withBeforeChunkCount(3L)
.withStreamOpenCount(1L).withStreamUpdateCount(4L).withStreamCloseCount(0L).withBeforeReadCount(12L).withReadCount(12L)
.withAfterReadCount(12L).withReadErrorCount(0L).withBeforeProcessCount(7L).withProcessCount(7L).withAfterProcessCount(7L)
.withProcessErrorCount(5L).withBeforeWriteCount(7L).withWriteCount(writeCount).withAfterWriteCount(7L).withAfterChunkCount(3L)
.withChunkErrorCount(6L).withSkipInReadCount(0L).withSkipInProcessCount(2L).withSkipInWriteCount(0L).build();
validator.validate();
// if one is correct, all will be in the metricReader, so I check just one
assertThat((Double) metricReader.findOne("gauge.batch.flatFileToDbSkipJob.step." + MetricNames.PROCESS_COUNT.getName()).getValue(),
is(notNullValue()));
assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM ITEM", Long.class), is(writeCount));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsFlatFileToDbIntegrationTest.java
@Test
public void testRunFlatFileToDbSkipJob_SkipInWrite() throws InterruptedException {
JobExecution jobExecution = runJob("flatFileToDbSkipJob", "metrics/flatFileToDbSkipJob_SkipInWrite.csv");
assertThat(jobExecution.getStatus(), is(BatchStatus.COMPLETED));
ExecutionContext executionContext = jobExecution.getStepExecutions().iterator().next().getExecutionContext();
long writeCount = 7L;
MetricValidator validator = MetricValidatorBuilder.metricValidator().withExecutionContext(executionContext).withBeforeChunkCount(4L)
.withStreamOpenCount(1L).withStreamUpdateCount(4L).withStreamCloseCount(0L).withBeforeReadCount(9L).withReadCount(9L)
.withAfterReadCount(8L).withReadErrorCount(0L).withBeforeProcessCount(7L).withProcessCount(7L).withAfterProcessCount(7L)
.withProcessErrorCount(0L).withBeforeWriteCount(5L).withWriteCount(writeCount).withAfterWriteCount(7L).withWriteErrorCount(4L)
.withAfterChunkCount(4L).withChunkErrorCount(2L).withSkipInReadCount(0L).withSkipInProcessCount(0L).withSkipInWriteCount(1L).build();
validator.validate();
// if one is correct, all will be in the metricReader, so I check just one
assertThat((Double) metricReader.findOne("gauge.batch.flatFileToDbSkipJob.step." + MetricNames.PROCESS_COUNT.getName()).getValue(),
is(notNullValue()));
assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM ITEM", Long.class), is(writeCount));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsFlatFileToDbIntegrationTest.java
@Test
public void testRunFlatFileToDbSkipJob_SkipInRead() throws InterruptedException {
JobExecution jobExecution = runJob("flatFileToDbSkipJob", "metrics/flatFileToDbSkipJob_SkipInRead.csv");
assertThat(jobExecution.getStatus(), is(BatchStatus.COMPLETED));
ExecutionContext executionContext = jobExecution.getStepExecutions().iterator().next().getExecutionContext();
long writeCount = 7L;
MetricValidator validator = MetricValidatorBuilder.metricValidator().withExecutionContext(executionContext).withBeforeChunkCount(3L)
.withStreamOpenCount(1L).withStreamUpdateCount(4L).withStreamCloseCount(0L).withBeforeReadCount(9L).withReadCount(9L)
.withAfterReadCount(7L).withReadErrorCount(1L).withBeforeProcessCount(7L).withProcessCount(7L).withAfterProcessCount(7L)
.withProcessErrorCount(0L).withBeforeWriteCount(7L).withWriteCount(writeCount).withAfterWriteCount(7L).withWriteErrorCount(0L)
.withAfterChunkCount(3L).withChunkErrorCount(0L).withSkipInReadCount(1L).withSkipInProcessCount(0L).withSkipInWriteCount(0L).build();
validator.validate();
// if one is correct, all will be in the metricReader, so I check just one
assertThat((Double) metricReader.findOne("gauge.batch.flatFileToDbSkipJob.step." + MetricNames.PROCESS_COUNT.getName()).getValue(),
is(notNullValue()));
assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM ITEM", Long.class), is(writeCount));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsFlatFileToDbIntegrationTest.java
@Test
public void testRunFlatFileToDbSkipJob_SkipInProcess_ProcessorNonTransactional() throws InterruptedException {
JobExecution jobExecution = runJob("flatFileToDbSkipProcessorNonTransactionalJob", "metrics/flatFileToDbSkipJob_SkipInProcess.csv");
assertThat(jobExecution.getStatus(), is(BatchStatus.COMPLETED));
ExecutionContext executionContext = jobExecution.getStepExecutions().iterator().next().getExecutionContext();
long writeCount = 7L;
MetricValidator validator = MetricValidatorBuilder.metricValidator().withExecutionContext(executionContext).withBeforeChunkCount(3L)
.withStreamOpenCount(1L).withStreamUpdateCount(4L).withStreamCloseCount(0L).withBeforeReadCount(9L).withReadCount(9L)
.withAfterReadCount(8L).withReadErrorCount(0L).withBeforeProcessCount(8L).withProcessCount(8L).withAfterProcessCount(7L)
.withProcessErrorCount(1L).withBeforeWriteCount(7L).withWriteCount(writeCount).withAfterWriteCount(7L).withAfterChunkCount(3L)
.withChunkErrorCount(1L).withSkipInReadCount(0L).withSkipInProcessCount(1L).withSkipInWriteCount(0L).build();
validator.validate();
// if one is correct, all will be in the metricReader, so I check just one
assertThat(
(Double) metricReader.findOne(
"gauge.batch.flatFileToDbSkipProcessorNonTransactionalJob.step." + MetricNames.PROCESS_COUNT.getName()).getValue(),
is(notNullValue()));
assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM ITEM", Long.class), is(writeCount));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsFlatFileToDbIntegrationTest.java
@Test
public void testRunFlatFileToDbSkipJob_SkipInWrite_ProcessorNonTransactional() throws InterruptedException {
JobExecution jobExecution = runJob("flatFileToDbSkipProcessorNonTransactionalJob", "metrics/flatFileToDbSkipJob_SkipInWrite.csv");
assertThat(jobExecution.getStatus(), is(BatchStatus.COMPLETED));
ExecutionContext executionContext = jobExecution.getStepExecutions().iterator().next().getExecutionContext();
long writeCount = 7L;
MetricValidator validator = MetricValidatorBuilder.metricValidator().withExecutionContext(executionContext).withBeforeChunkCount(4L)
.withStreamOpenCount(1L).withStreamUpdateCount(4L).withStreamCloseCount(0L).withBeforeReadCount(9L).withReadCount(9L)
.withAfterReadCount(8L).withReadErrorCount(0L).withBeforeProcessCount(8L).withProcessCount(8L).withAfterProcessCount(8L)
.withProcessErrorCount(0L).withBeforeWriteCount(5L).withWriteCount(writeCount).withAfterWriteCount(7L).withWriteErrorCount(4L)
.withAfterChunkCount(4L).withChunkErrorCount(2L).withSkipInReadCount(0L).withSkipInProcessCount(0L).withSkipInWriteCount(1L).build();
// TODO Bug in beforeWrite listener in Spring Batch?
validator.validate();
// if one is correct, all will be in the metricReader, so I check just one
assertThat(
(Double) metricReader.findOne(
"gauge.batch.flatFileToDbSkipProcessorNonTransactionalJob.step." + MetricNames.PROCESS_COUNT.getName()).getValue(),
is(notNullValue()));
assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM ITEM", Long.class), is(writeCount));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsFlatFileToDbIntegrationTest.java
@Test
public void testRunFlatFileToDbSkipJob_SkipInProcess_ReaderTransactional() throws InterruptedException {
JobExecution jobExecution = runJob("flatFileToDbSkipReaderTransactionalJob", "metrics/flatFileToDbSkipJob_SkipInProcess.csv");
assertThat(jobExecution.getStatus(), is(BatchStatus.COMPLETED));
ExecutionContext executionContext = jobExecution.getStepExecutions().iterator().next().getExecutionContext();
long writeCount = 5L;
MetricValidator validator = MetricValidatorBuilder.metricValidator().withExecutionContext(executionContext).withBeforeChunkCount(2L)
.withStreamOpenCount(1L).withStreamUpdateCount(3L).withStreamCloseCount(0L).withBeforeReadCount(6L).withReadCount(6L)
.withAfterReadCount(5L).withReadErrorCount(0L).withBeforeProcessCount(5L).withProcessCount(5L).withAfterProcessCount(5L)
.withProcessErrorCount(1L).withBeforeWriteCount(5L).withWriteCount(writeCount).withAfterWriteCount(5L).withAfterChunkCount(2L)
.withChunkErrorCount(1L).withSkipInReadCount(0L).withSkipInProcessCount(0L).withSkipInWriteCount(0L).build();
validator.validate();
// if one is correct, all will be in the metricReader, so I check just one
assertThat((Double) metricReader
.findOne("gauge.batch.flatFileToDbSkipReaderTransactionalJob.step." + MetricNames.PROCESS_COUNT.getName()).getValue(),
is(notNullValue()));
assertThat(jdbcTemplate.queryForObject("SELECT COUNT(*) FROM ITEM", Long.class), is(writeCount));
}
项目:spring-boot-starter-batch-web
文件:BatchMetricsAspectIntegrationTest.java
@Test
public void testRunJob() throws InterruptedException {
Long executionId = restTemplate.postForObject("http://localhost:" + port + "/batch/operations/jobs/simpleBatchMetricsJob", "", Long.class);
while (!restTemplate.getForObject("http://localhost:" + port + "/batch/operations/jobs/executions/{executionId}", String.class, executionId)
.equals("COMPLETED")) {
Thread.sleep(1000);
}
String log = restTemplate.getForObject("http://localhost:" + port + "/batch/operations/jobs/executions/{executionId}/log", String.class,
executionId);
assertThat(log.length() > 20, is(true));
JobExecution jobExecution = jobExplorer.getJobExecution(executionId);
assertThat(jobExecution.getStatus(), is(BatchStatus.COMPLETED));
String jobExecutionString = restTemplate.getForObject("http://localhost:" + port + "/batch/monitoring/jobs/executions/{executionId}",
String.class, executionId);
assertThat(jobExecutionString.contains("COMPLETED"), is(true));
Metric<?> metric = metricReader.findOne("gauge.batch.simpleBatchMetricsJob.simpleBatchMetricsStep.processor");
assertThat(metric, is(notNullValue()));
assertThat((Double) metric.getValue(), is(notNullValue()));
assertThat((Double) metric.getValue(), is(7.0));
}
项目:spring-boot-starter-batch-web
文件:StopJobIntegrationTest.java
@Test
public void testRunJob() throws InterruptedException{
Long executionId = restTemplate.postForObject("http://localhost:"+port+"/batch/operations/jobs/delayJob", "",Long.class);
Thread.sleep(500);
String runningExecutions = restTemplate.getForObject("http://localhost:"+port+"/batch/monitoring/jobs/runningexecutions", String.class);
assertThat(runningExecutions.contains(executionId.toString()),is(true));
String runningExecutionsForDelayJob = restTemplate.getForObject("http://localhost:"+port+"/batch/monitoring/jobs/runningexecutions/delayJob", String.class);
assertThat(runningExecutionsForDelayJob.contains(executionId.toString()),is(true));
restTemplate.delete("http://localhost:"+port+"/batch/operations/jobs/executions/{executionId}",executionId);
Thread.sleep(1500);
JobExecution jobExecution = jobExplorer.getJobExecution(executionId);
assertThat(jobExecution.getStatus(),is(BatchStatus.STOPPED));
String jobExecutionString = restTemplate.getForObject("http://localhost:"+port+"/batch/monitoring/jobs/executions/{executionId}",String.class,executionId);
assertThat(jobExecutionString.contains("STOPPED"),is(true));
}
项目:spring-batch-experiments
文件:JobXmlMultiFileTest.java
@Test
public void testXml() throws Exception {
JobExecution exec = jobLauncherTestUtils.launchJob();
Assertions.assertThat(exec.getStatus()).isEqualTo(BatchStatus.COMPLETED);
Resource ouput = new FileSystemResource(JobXmlMultiFileConfiguration.OUTPUT_FILE + ".1");
String content = IOUtils.toString(ouput.getInputStream());
assertXpathEvaluatesTo("1000", "count(//product)", content);
ouput = new FileSystemResource(JobXmlMultiFileConfiguration.OUTPUT_FILE + ".2");
content = IOUtils.toString(ouput.getInputStream());
assertXpathEvaluatesTo("1000", "count(//product)", content);
ouput = new FileSystemResource(JobXmlMultiFileConfiguration.OUTPUT_FILE + ".3");
content = IOUtils.toString(ouput.getInputStream());
assertXpathEvaluatesTo("1000", "count(//product)", content);
ouput = new FileSystemResource(JobXmlMultiFileConfiguration.OUTPUT_FILE + ".4");
content = IOUtils.toString(ouput.getInputStream());
assertXpathEvaluatesTo("1000", "count(//product)", content);
ouput = new FileSystemResource(JobXmlMultiFileConfiguration.OUTPUT_FILE + ".5");
content = IOUtils.toString(ouput.getInputStream());
assertXpathEvaluatesTo("517", "count(//product)", content);
}
项目:spring-batch-experiments
文件:StopTest.java
/**
* JobOperator 가 Job 중단을 수행합니다.
*
* @throws Exception
*/
@Test
public void stopWithJobOperator() throws Exception {
JobExecution jobExecution = jobLauncher.run(jobOperatorJob, new JobParameters());
assertThat(jobExecution.getStatus()).isIn(BatchStatus.STARTING, BatchStatus.STARTED);
Set<Long> runningExecutions = jobOperator.getRunningExecutions(jobOperatorJob.getName());
assertThat(runningExecutions.size()).isEqualTo(1);
Long executionId = runningExecutions.iterator().next();
boolean stopMessageSent = jobOperator.stop(executionId);
assertThat(stopMessageSent).isTrue();
waitForTermination(jobOperatorJob);
runningExecutions = jobOperator.getRunningExecutions(jobOperatorJob.getName());
assertThat(runningExecutions.size()).isEqualTo(0);
}
项目:spring-batch-experiments
文件:SkipBehaviorTest.java
@Test
public void sunnyDay() throws Exception {
int read = 12;
configureServiceForRead(service, read);
JobExecution exec = jobLauncher.run(
job,
new JobParametersBuilder().addLong("time", System.currentTimeMillis())
.toJobParameters());
assertThat(exec.getStatus()).isEqualTo(BatchStatus.COMPLETED);
assertRead(read, exec);
assertWrite(read, exec);
assertReadSkip(0, exec);
assertProcessSkip(0, exec);
assertWriteSkip(0, exec);
assertCommit(3, exec);
assertRollback(0, exec);
}
项目:spring-batch-integration-sample
文件:JobExecutionsRouter.java
@Router
public List<String> routeJobExecution(JobExecution jobExecution) {
final List<String> routeToChannels = new ArrayList<String>();
if (jobExecution.getStatus().equals(BatchStatus.FAILED)) {
routeToChannels.add("jobRestarts");
}
else {
if (jobExecution.getStatus().equals(BatchStatus.COMPLETED)) {
routeToChannels.add("completeApplication");
}
routeToChannels.add("notifiableExecutions");
}
return routeToChannels;
}
项目:spring-batch-integration-sample
文件:JobExecutionsRouter.java
@Router
public List<String> routeJobExecution(JobExecution jobExecution) {
final List<String> routeToChannels = new ArrayList<String>();
if (jobExecution.getStatus().equals(BatchStatus.FAILED)) {
routeToChannels.add("jobRestarts");
}
else {
if (jobExecution.getStatus().equals(BatchStatus.COMPLETED)) {
routeToChannels.add("completeApplication");
}
routeToChannels.add("notifiableExecutions");
}
return routeToChannels;
}
项目:spring-batch-integration-sample
文件:JobExecutionsRouter.java
@Router
public List<String> routeJobExecution(JobExecution jobExecution) {
final List<String> routeToChannels = new ArrayList<String>();
if (jobExecution.getStatus().equals(BatchStatus.FAILED)) {
routeToChannels.add("jobRestarts");
}
else {
if (jobExecution.getStatus().equals(BatchStatus.COMPLETED)) {
routeToChannels.add("completeApplication");
}
routeToChannels.add("notifiableExecutions");
}
return routeToChannels;
}
项目:spring-batch-integration-sample
文件:JobExecutionsRouter.java
@Router
public List<String> routeJobExecution(JobExecution jobExecution) {
final List<String> routeToChannels = new ArrayList<String>();
if (jobExecution.getStatus().equals(BatchStatus.FAILED)) {
routeToChannels.add("jobRestarts");
}
else {
if (jobExecution.getStatus().equals(BatchStatus.COMPLETED)) {
routeToChannels.add("completeApplication");
}
routeToChannels.add("notifiableExecutions");
}
return routeToChannels;
}
项目:nixmash-blog
文件:DemoJobListener.java
@Override
public void afterJob(JobExecution jobExecution) {
if(jobExecution.getStatus() == BatchStatus.COMPLETED) {
logger.info("!!! JOB FINISHED! LAST POSTID IMPORTED: " +
jobExecution.getExecutionContext().get("postId") );
}
}