use of org.springframework.batch.core.JobInstance in project head by mifos.
the class BatchJobCatchUpIntegrationTest method testFailureDuringIncompleteTaskHandling.
@Test
public void testFailureDuringIncompleteTaskHandling() throws Exception {
mifosScheduler = getMifosScheduler("org/mifos/framework/components/batchjobs/catchUpTask3.xml");
JobLauncher jobLauncher = mifosScheduler.getBatchJobLauncher();
JobLocator jobLocator = mifosScheduler.getBatchJobLocator();
for (int i = 0; i < 3; i++) {
jobLauncher.run(jobLocator.getJob(jobName), MifosBatchJob.createJobParameters(new Date().getTime()));
Thread.sleep(5000);
}
JobExplorer explorer = mifosScheduler.getBatchJobExplorer();
List<JobInstance> jobInstances = explorer.getJobInstances(jobName, 0, 10);
Assert.assertEquals(3, jobInstances.size());
for (JobInstance jobInstance : jobInstances) {
List<JobExecution> jobExecutions = explorer.getJobExecutions(jobInstance);
Assert.assertEquals(1, jobExecutions.size());
Assert.assertEquals(BatchStatus.FAILED, jobExecutions.get(0).getStatus());
}
mifosScheduler.runIndividualTask(jobName);
Thread.sleep(5000);
explorer = mifosScheduler.getBatchJobExplorer();
jobInstances = explorer.getJobInstances(jobName, 0, 10);
Assert.assertEquals(4, jobInstances.size());
JobInstance jobInstance = jobInstances.get(0);
JobExecution jobExecution = explorer.getJobExecutions(jobInstance).get(0);
Assert.assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
Assert.assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
jobInstance = jobInstances.get(1);
jobExecution = explorer.getJobExecutions(jobInstance).get(0);
Assert.assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
Assert.assertEquals(ExitStatus.FAILED, jobExecution.getExitStatus());
jobInstance = jobInstances.get(2);
jobExecution = explorer.getJobExecutions(jobInstance).get(0);
Assert.assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
Assert.assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
jobInstance = jobInstances.get(3);
jobExecution = explorer.getJobExecutions(jobInstance).get(0);
Assert.assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
Assert.assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
}
use of org.springframework.batch.core.JobInstance in project head by mifos.
the class BatchJobCatchUpIntegrationTest method testIncompleteTaskHandling.
@Test
public void testIncompleteTaskHandling() throws Exception {
mifosScheduler = getMifosScheduler("org/mifos/framework/components/batchjobs/catchUpTask2.xml");
JobLauncher jobLauncher = mifosScheduler.getBatchJobLauncher();
JobLocator jobLocator = mifosScheduler.getBatchJobLocator();
for (int i = 0; i < 3; i++) {
jobLauncher.run(jobLocator.getJob(jobName), MifosBatchJob.createJobParameters(new Date().getTime()));
Thread.sleep(1500);
}
JobExplorer explorer = mifosScheduler.getBatchJobExplorer();
List<JobInstance> jobInstances = explorer.getJobInstances(jobName, 0, 10);
Assert.assertEquals(3, jobInstances.size());
for (JobInstance jobInstance : jobInstances) {
List<JobExecution> jobExecutions = explorer.getJobExecutions(jobInstance);
Assert.assertEquals(1, jobExecutions.size());
Assert.assertEquals(BatchStatus.FAILED, jobExecutions.get(0).getStatus());
}
mifosScheduler.runIndividualTask(jobName);
Thread.sleep(5000);
jobInstances = explorer.getJobInstances(jobName, 0, 10);
Assert.assertEquals(4, jobInstances.size());
for (JobInstance jobInstance : jobInstances) {
List<JobExecution> jobExecutions = explorer.getJobExecutions(jobInstance);
Assert.assertEquals(BatchStatus.COMPLETED, jobExecutions.get(0).getStatus());
}
}
use of org.springframework.batch.core.JobInstance in project head by mifos.
the class ProductStatusHelperIntegrationTest method testExecuteTaskFailure.
@Test
public void testExecuteTaskFailure() throws Exception {
createInactiveLoanOffering();
mifosScheduler = getMifosScheduler("org/mifos/framework/components/batchjobs/productStatusTestTask2.xml");
mifosScheduler.runIndividualTask(jobName);
Thread.sleep(1000);
JobExplorer explorer = mifosScheduler.getBatchJobExplorer();
List<JobInstance> jobInstances = explorer.getJobInstances(jobName, 0, 10);
Assert.assertTrue(jobInstances.size() > 0);
JobInstance lastInstance = jobInstances.get(0);
List<JobExecution> jobExecutions = explorer.getJobExecutions(lastInstance);
Assert.assertEquals(1, jobExecutions.size());
JobExecution lastExecution = jobExecutions.get(0);
Assert.assertEquals(BatchStatus.FAILED, lastExecution.getStatus());
product = (LoanOfferingBO) TestObjectFactory.getObject(LoanOfferingBO.class, product.getPrdOfferingId());
Assert.assertEquals(PrdStatus.LOAN_INACTIVE, product.getStatus());
}
use of org.springframework.batch.core.JobInstance in project head by mifos.
the class MifosScheduler method getJobsPreviousRunStatus.
public String getJobsPreviousRunStatus(String jobName) {
JobExplorer explorer = getBatchJobExplorer();
List<JobInstance> jobInstances = explorer.getJobInstances(jobName, 0, 1);
if (jobInstances.size() == 0) {
return "Never executed yet";
}
List<JobExecution> jobExecutions = explorer.getJobExecutions(jobInstances.get(0));
if (jobExecutions.size() == 0) {
return "Never executed yet";
}
String runStatus = jobExecutions.get(0).getStatus().toString();
runStatus = runStatus.substring(0, 1) + runStatus.substring(1).toLowerCase();
return runStatus;
}
use of org.springframework.batch.core.JobInstance in project head by mifos.
the class MifosBatchJob method checkAndLaunchJob.
/**
* This method is a wrapper around launchJob method. It checks whether previous
* runs of the job executed successfully and attempts to re-run them in case they did not.
* @param job Job class
* @param jobParameters Job parameters
* @param lookUpDepth Counter used to track current recurrence depth
* @return Batch computation status
* @throws BatchJobException when something goes wrong
*/
public BatchStatus checkAndLaunchJob(Job job, JobParameters jobParameters, int lookUpDepth) throws BatchJobException {
List<JobInstance> jobInstances = jobExplorer.getJobInstances(job.getName(), lookUpDepth, lookUpDepth + 1);
if (jobInstances.size() == 0) {
return launchJob(job, jobParameters);
}
JobInstance jobInstance = jobInstances.get(0);
List<JobExecution> jobExecutions = jobExplorer.getJobExecutions(jobInstance);
// latest execution
JobExecution jobExecution = jobExecutions.get(0);
if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
return launchJob(job, jobParameters);
}
checkAndLaunchJob(job, jobExecution.getJobInstance().getJobParameters(), lookUpDepth + 1);
return launchJob(job, jobParameters);
}
Aggregations