Package org.springframework.batch.admin.service

Source Code of org.springframework.batch.admin.service.SimpleJobServiceTests

/*
* Copyright 2006-2013 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
*
*      http://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.batch.admin.service;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import org.easymock.EasyMock;
import org.junit.Test;
import org.springframework.batch.core.BatchStatus;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobInstance;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersIncrementer;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.configuration.ListableJobLocator;
import org.springframework.batch.core.job.SimpleJob;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.launch.support.RunIdIncrementer;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.repository.dao.ExecutionContextDao;
import org.springframework.batch.core.step.tasklet.TaskletStep;
import org.springframework.batch.item.ExecutionContext;
import org.springframework.batch.test.MetaDataInstanceFactory;

/**
* @author Dave Syer
*
*/
public class SimpleJobServiceTests {

  private SearchableJobInstanceDao jobInstanceDao = EasyMock.createMock(SearchableJobInstanceDao.class);

  private SearchableJobExecutionDao jobExecutionDao = EasyMock.createMock(SearchableJobExecutionDao.class);

  private SearchableStepExecutionDao stepExecutionDao = EasyMock.createMock(SearchableStepExecutionDao.class);

  private JobRepository jobRepository = EasyMock.createMock(JobRepository.class);

  private JobLauncher jobLauncher = EasyMock.createMock(JobLauncher.class);

  private ListableJobLocator jobLocator = EasyMock.createMock(ListableJobLocator.class);

  private ExecutionContextDao executionContextDao = EasyMock.createMock(ExecutionContextDao.class);

  private SimpleJobService service = new SimpleJobService(jobInstanceDao, jobExecutionDao, stepExecutionDao,
      jobRepository, jobLauncher, jobLocator, executionContextDao);

  /**
   * Test method for {@link SimpleJobService#getStepExecutions(Long)}.
   *
   * @throws Exception
   */
  @Test
  public void testGetStepExecutions() throws Exception {
    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecutionWithStepExecutions(12L, Arrays.asList(
        "step1", "step2"));
    EasyMock.expect(jobExecutionDao.getJobExecution(12L)).andReturn(jobExecution);
    stepExecutionDao.addStepExecutions(jobExecution);
    EasyMock.expectLastCall();
    EasyMock.expect(stepExecutionDao.findStepNamesForJobExecution("job", "*:partition*")).andReturn(
        Arrays.asList("step1", "step4"));
    EasyMock.replay(jobExecutionDao, stepExecutionDao);
    List<StepExecution> stepExecutions = new ArrayList<StepExecution>(service.getStepExecutions(12L));
    assertEquals(3, stepExecutions.size());
    assertEquals("step4", stepExecutions.get(2).getStepName());
    assertEquals(BatchStatus.UNKNOWN, stepExecutions.get(2).getStatus());
    EasyMock.verify(jobExecutionDao, stepExecutionDao);
  }

  /**
   * Test method for {@link SimpleJobService#isLaunchable(String)}.
   */
  @Test
  public void testIsLaunchable() throws Exception {
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Arrays.asList("foo", "bar")).anyTimes();
    EasyMock.replay(jobLauncher, jobLocator);
    assertTrue(service.isLaunchable("foo"));
    assertFalse(service.isLaunchable("job"));
    EasyMock.verify(jobLauncher, jobLocator);
  }

  /**
   * Test method for {@link SimpleJobService#isIncrementable(String)}.
   */
  @Test
  public void testIsIncementable() throws Exception {
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Arrays.asList("foo", "bar")).anyTimes();
    EasyMock.expect(jobLocator.getJob("foo")).andReturn(new JobSupport("foo", new RunIdIncrementer())).anyTimes();
    EasyMock.replay(jobLauncher, jobLocator);
    assertTrue(service.isIncrementable("foo"));
    assertFalse(service.isIncrementable("job"));
    EasyMock.verify(jobLauncher, jobLocator);
  }

  /**
   * Test method for {@link SimpleJobService#launch(String, JobParameters)}.
   */
  @Test
  public void testLaunch() throws Exception {
    JobParameters jobParameters = new JobParameters();
    Job job = new JobSupport("job");
    EasyMock.expect(jobLocator.getJob("job")).andReturn(job);
    EasyMock.expect(jobLauncher.run(job, jobParameters)).andReturn(MetaDataInstanceFactory.createJobExecution());
    EasyMock.replay(jobLauncher, jobLocator);
    assertNotNull(service.launch("job", jobParameters));
    EasyMock.verify(jobLauncher, jobLocator);
  }

  /**
   * Test method for {@link SimpleJobService#launch(String, JobParameters)}.
   */
  @Test
  public void testLaunchWithIncrementer() throws Exception {
    JobParameters jobParameters = new JobParameters();
    JobParameters nextJobParameters = new RunIdIncrementer().getNext(jobParameters);
    Job job = new JobSupport("job") {
      @Override
      public JobParametersIncrementer getJobParametersIncrementer() {
        return new RunIdIncrementer();
      }
    };
    EasyMock.expect(jobLocator.getJob("job")).andReturn(job);
    EasyMock.expect(jobLauncher.run(job, nextJobParameters)).andReturn(MetaDataInstanceFactory.createJobExecution());
    EasyMock.replay(jobLauncher, jobLocator);
    assertNotNull(service.launch("job", jobParameters));
    EasyMock.verify(jobLauncher, jobLocator);
  }

  /**
   * Test method for {@link SimpleJobService#launch(String, JobParameters)}.
   */
  @Test
  public void testLaunchFailedExecution() throws Exception {
    JobParameters jobParameters = new JobParameters();
    Job job = new JobSupport("job") {
      @Override
      public JobParametersIncrementer getJobParametersIncrementer() {
        return new RunIdIncrementer();
      }
    };
    EasyMock.expect(jobLocator.getJob("job")).andReturn(job);
    JobExecution failed = MetaDataInstanceFactory.createJobExecution();
    failed.setStatus(BatchStatus.FAILED);
    EasyMock.expect(jobRepository.getLastJobExecution("job", jobParameters)).andReturn(failed);
    EasyMock.expect(jobLauncher.run(job, jobParameters)).andReturn(MetaDataInstanceFactory.createJobExecution());
    EasyMock.replay(jobLauncher, jobLocator, jobRepository);
    assertNotNull(service.launch("job", jobParameters));
    EasyMock.verify(jobLauncher, jobLocator, jobRepository);
  }

  /**
   * Test method for {@link SimpleJobService#launch(String, JobParameters)}.
   */
  @Test
  public void testRestart() throws Exception {
    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecution();
    EasyMock.expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
    EasyMock.expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(
        MetaDataInstanceFactory.createJobInstance());
    JobParameters jobParameters = new JobParameters();
    Job job = new JobSupport("job");
    EasyMock.expect(jobLocator.getJob("job")).andReturn(job);
    EasyMock.expect(jobLauncher.run(job, jobParameters))
    .andReturn(MetaDataInstanceFactory.createJobExecution(124L));
    EasyMock.replay(jobInstanceDao, jobExecutionDao, jobLauncher, jobLocator);
    assertNotNull(service.restart(123L));
    EasyMock.verify(jobInstanceDao, jobExecutionDao, jobLauncher, jobLocator);
  }

  /**
   * Test method for {@link SimpleJobService#listJobExecutions(int, int)}.
   */
  @Test
  public void testListJobExecutions() throws Exception {
    EasyMock.expect(jobExecutionDao.getJobExecutions(0, 2)).andReturn(
        Arrays.asList(MetaDataInstanceFactory.createJobExecution(123L), MetaDataInstanceFactory
            .createJobExecution(1234L)));
    EasyMock.replay(jobExecutionDao);
    assertEquals(2, service.listJobExecutions(0, 2).size());
    EasyMock.verify(jobExecutionDao);
  }

  /**
   * Test method for {@link SimpleJobService#countJobExecutions() throws Exception}.
   */
  @Test
  public void testCountJobExecutions() throws Exception {
    EasyMock.expect(jobExecutionDao.countJobExecutions()).andReturn(3);
    EasyMock.replay(jobExecutionDao);
    assertEquals(3, service.countJobExecutions());
    EasyMock.verify(jobExecutionDao);
  }

  /**
   * Test method for {@link SimpleJobService#listJobs(int, int)}.
   */
  @Test
  public void testListJobs() throws Exception {
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Arrays.asList("job1", "job2"));
    EasyMock.replay(jobLocator, jobInstanceDao);
    assertEquals(2, service.listJobs(0, 2).size());
    EasyMock.verify(jobLocator, jobInstanceDao);
  }

  /**
   * Test method for {@link SimpleJobService#listJobs(int, int)}.
   */
  @Test
  public void testListJobsNotLaunchable() throws Exception {
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Arrays.asList("job1", "job2"));
    EasyMock.expect(jobInstanceDao.getJobNames()).andReturn(Arrays.asList("job3", "job2"));
    EasyMock.replay(jobLocator, jobInstanceDao);
    assertEquals(3, service.listJobs(0, 4).size());
    EasyMock.verify(jobLocator, jobInstanceDao);
  }

  /**
   * Test method for {@link SimpleJobService#countJobs() throws Exception}.
   */
  @Test
  public void testCountJobs() throws Exception {
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Arrays.asList("job1", "job2"));
    EasyMock.expect(jobInstanceDao.getJobNames()).andReturn(Arrays.asList("job3", "job2"));
    EasyMock.replay(jobLocator, jobInstanceDao);
    assertEquals(3, service.countJobs());
    EasyMock.verify(jobLocator, jobInstanceDao);
  }

  /**
   * Test method for {@link SimpleJobService#abandon(Long)}.
   */
  @Test
  public void testAbort() throws Exception {
    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecution(123L);
    jobExecution.setStatus(BatchStatus.STOPPING);
    EasyMock.expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
    jobRepository.update(jobExecution);
    EasyMock.replay(jobExecutionDao, jobRepository);
    service.abandon(123L);
    assertEquals(BatchStatus.ABANDONED, jobExecution.getStatus());
    assertNotNull(jobExecution.getEndTime());
    EasyMock.verify(jobExecutionDao, jobRepository);
  }

  /**
   * Test method for {@link SimpleJobService#stop(Long)}.
   */
  @Test
  public void testStop() throws Exception {
    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecution(123L);
    EasyMock.expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
    jobRepository.update(jobExecution);
    EasyMock.replay(jobExecutionDao, jobRepository);
    service.stop(123L);
    assertEquals(BatchStatus.STOPPING, jobExecution.getStatus());
    EasyMock.verify(jobExecutionDao, jobRepository);
  }

  /**
   * Test method for {@link SimpleJobService#countJobExecutionsForJob(String)} .
   */
  @Test
  public void testCountJobExecutionsForJob() throws Exception {
    String jobName = "job";
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Collections.<String> emptyList());
    EasyMock.expect(jobInstanceDao.countJobInstances(jobName)).andReturn(1);
    EasyMock.expect(jobExecutionDao.countJobExecutions(jobName)).andReturn(2);
    EasyMock.replay(stepExecutionDao, jobLocator, jobInstanceDao, jobExecutionDao);
    assertEquals(2, service.countJobExecutionsForJob("job"));
    EasyMock.verify(stepExecutionDao, jobLocator, jobInstanceDao, jobExecutionDao);
  }

  /**
   * Test method for {@link SimpleJobService#countJobInstances(String)}.
   */
  @Test
  public void testCountJobInstances() throws Exception {
    EasyMock.expect(jobInstanceDao.countJobInstances("job")).andReturn(3);
    EasyMock.replay(jobInstanceDao);
    assertEquals(3, service.countJobInstances("job"));
    EasyMock.verify(jobInstanceDao);
  }

  /**
   * Test method for {@link SimpleJobService#getJobExecution(Long)}.
   */
  @Test
  public void testGetJobExecution() throws Exception {
    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecution(123L);
    JobInstance jobInstance = jobExecution.getJobInstance();
    jobExecution.setJobInstance(null);
    EasyMock.expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
    EasyMock.expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(jobInstance);
    EasyMock.expect(executionContextDao.getExecutionContext(jobExecution)).andReturn(new ExecutionContext());
    stepExecutionDao.addStepExecutions(jobExecution);
    EasyMock.expectLastCall();
    EasyMock.replay(stepExecutionDao, jobExecutionDao, jobInstanceDao, executionContextDao);
    JobExecution result = service.getJobExecution(123L);
    assertNotNull(result);
    assertNotNull(result.getJobInstance());
    EasyMock.verify(stepExecutionDao, jobExecutionDao, jobInstanceDao, executionContextDao);
  }

  @Test
  public void testGetStepNamesFromJobExecution() throws Exception {
    EasyMock.expect(jobLocator.getJob("job")).andReturn(null);
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Collections.<String> emptyList());
    EasyMock.expect(jobInstanceDao.countJobInstances("job")).andReturn(1);
    EasyMock.expect(jobExecutionDao.getJobExecutions("job", 0, 100)).andReturn(
        Arrays.asList(MetaDataInstanceFactory.createJobExecutionWithStepExecutions(123L, Arrays.asList("foo",
            "bar")), MetaDataInstanceFactory.createJobExecutionWithStepExecutions(124L, Arrays
                .asList("bar"))));
    stepExecutionDao.addStepExecutions(EasyMock.isA(JobExecution.class));
    stepExecutionDao.addStepExecutions(EasyMock.isA(JobExecution.class));
    EasyMock.replay(jobLocator, stepExecutionDao, jobExecutionDao, jobInstanceDao, executionContextDao);
    Collection<String> result = service.getStepNamesForJob("job");
    assertNotNull(result);
    assertEquals("[foo, bar]", result.toString());
    EasyMock.verify(jobLocator, stepExecutionDao, jobExecutionDao, jobInstanceDao, executionContextDao);
  }

  @Test
  public void testGetStepNamesFromStepLocator() throws Exception {
    SimpleJob job = new SimpleJob("job");
    job.addStep(new TaskletStep("foo"));
    EasyMock.expect(jobLocator.getJob("job")).andReturn(job);
    EasyMock.replay(jobLocator);
    Collection<String> result = service.getStepNamesForJob("job");
    assertNotNull(result);
    assertEquals("[foo]", result.toString());
    EasyMock.verify(jobLocator);
  }

  @Test
  public void testGetJobExecutionWithUnserializableExecutionContext() throws Exception {
    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecution(123L);
    JobInstance jobInstance = jobExecution.getJobInstance();
    jobExecution.setJobInstance(null);
    EasyMock.expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
    EasyMock.expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(jobInstance);
    EasyMock.expect(executionContextDao.getExecutionContext(jobExecution)).andThrow(
        new IllegalStateException("Planned"));
    stepExecutionDao.addStepExecutions(jobExecution);
    EasyMock.expectLastCall();
    EasyMock.replay(stepExecutionDao, jobExecutionDao, jobInstanceDao, executionContextDao);
    JobExecution result = service.getJobExecution(123L);
    assertNotNull(result);
    assertNotNull(result.getJobInstance());
    assertNotNull(result.getExecutionContext());
    EasyMock.verify(stepExecutionDao, jobExecutionDao, jobInstanceDao, executionContextDao);
  }

  /**
   * Test method for {@link SimpleJobService#getJobExecutionsForJobInstance(String, Long)}.
   */
  @Test
  public void testGetJobExecutionsForJobInstance() throws Exception {
    String jobName = "job";
    Long jobInstanceId = 12L;
    JobInstance jobInstance = MetaDataInstanceFactory.createJobInstance(jobName, jobInstanceId);
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Collections.<String> emptyList());
    EasyMock.expect(jobInstanceDao.countJobInstances(jobName)).andReturn(1);
    EasyMock.expect(jobInstanceDao.getJobInstance(jobInstanceId)).andReturn(jobInstance);
    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecution();
    EasyMock.expect(jobExecutionDao.findJobExecutions(jobInstance)).andReturn(Arrays.asList(jobExecution));
    stepExecutionDao.addStepExecutions(jobExecution);
    EasyMock.expectLastCall();
    EasyMock.replay(jobLocator, jobInstanceDao, stepExecutionDao, jobExecutionDao);
    assertEquals(1, service.getJobExecutionsForJobInstance("job", jobInstance.getId()).size());
    EasyMock.verify(jobLocator, jobInstanceDao, stepExecutionDao, jobExecutionDao);
  }

  /**
   * Test method for {@link SimpleJobService#getStepExecution(Long, Long)}.
   */
  @Test
  public void testGetStepExecution() throws Exception {
    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecutionWithStepExecutions(123L, Arrays
        .asList("step1"));
    EasyMock.expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
    EasyMock.expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(null);
    EasyMock.expect(executionContextDao.getExecutionContext(jobExecution)).andReturn(new ExecutionContext());
    stepExecutionDao.addStepExecutions(jobExecution);
    StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next();
    Long stepExecutionId = stepExecution.getId();
    EasyMock.expect(stepExecutionDao.getStepExecution(jobExecution, stepExecutionId)).andReturn(stepExecution);
    EasyMock.expect(executionContextDao.getExecutionContext(stepExecution)).andReturn(new ExecutionContext());
    EasyMock.replay(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);
    assertNotNull(service.getStepExecution(123L, 1234L));
    EasyMock.verify(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);
  }

  @Test
  public void testGetStepExecutionWithUnserializableExecutionContent() throws Exception {
    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecutionWithStepExecutions(123L, Arrays
        .asList("step1"));
    EasyMock.expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
    EasyMock.expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(null);
    EasyMock.expect(executionContextDao.getExecutionContext(jobExecution)).andReturn(new ExecutionContext());
    stepExecutionDao.addStepExecutions(jobExecution);
    StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next();
    Long stepExecutionId = stepExecution.getId();
    EasyMock.expect(stepExecutionDao.getStepExecution(jobExecution, stepExecutionId)).andReturn(stepExecution);
    EasyMock.expect(executionContextDao.getExecutionContext(stepExecution)).andThrow(
        new IllegalStateException("Expected"));
    EasyMock.replay(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);
    StepExecution result = service.getStepExecution(123L, 1234L);
    assertNotNull(result);
    // If there is a problem extracting the execution context it will be empty
    assertNotNull(result.getExecutionContext());
    EasyMock.verify(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);
  }

  @Test
  public void testCountStepExecutions() throws Exception {
    stepExecutionDao.countStepExecutions("job", "step");
    EasyMock.expectLastCall().andReturn(2);
    EasyMock.replay(jobExecutionDao, stepExecutionDao);
    service.countStepExecutionsForStep("job", "step");
    EasyMock.verify(jobExecutionDao, stepExecutionDao);
  }

  @Test
  public void testListStepExecutions() throws Exception {
    stepExecutionDao.countStepExecutions("job", "step");
    EasyMock.expectLastCall().andReturn(2);
    stepExecutionDao.findStepExecutions("job", "step", 0, 20);
    EasyMock.expectLastCall().andReturn(new ArrayList<StepExecution>());
    EasyMock.replay(jobExecutionDao, stepExecutionDao);
    service.listStepExecutionsForStep("job", "step", 0, 20);
    EasyMock.verify(jobExecutionDao, stepExecutionDao);
  }

  /**
   * Test method for {@link SimpleJobService#listJobExecutionsForJob(String, int, int)}.
   */
  @Test
  public void testListJobExecutionsForJob() throws Exception {
    String jobName = "job";
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Collections.<String> emptyList());
    EasyMock.expect(jobInstanceDao.countJobInstances(jobName)).andReturn(1);
    EasyMock.expect(jobExecutionDao.getJobExecutions("job", 0, 4)).andReturn(
        Arrays.asList(MetaDataInstanceFactory.createJobExecution(123L), MetaDataInstanceFactory
            .createJobExecution(124L)));
    EasyMock.replay(jobLocator, jobInstanceDao, jobExecutionDao);
    assertEquals(2, service.listJobExecutionsForJob("job", 0, 4).size());
    EasyMock.verify(jobLocator, jobInstanceDao, jobExecutionDao);
  }

  /**
   * Test method for {@link SimpleJobService#listJobInstances(String, int, int)}.
   */
  @Test
  public void testListJobInstances() throws Exception {
    String jobName = "job";
    EasyMock.expect(jobLocator.getJobNames()).andReturn(Collections.<String> emptyList());
    EasyMock.expect(jobInstanceDao.countJobInstances(jobName)).andReturn(1);
    EasyMock.expect(jobInstanceDao.getJobInstances("job", 0, 4)).andReturn(
        Arrays.asList(MetaDataInstanceFactory.createJobInstance("job", 123L), MetaDataInstanceFactory
            .createJobInstance("job", 124L)));
    EasyMock.replay(jobLocator, jobInstanceDao);
    assertEquals(2, service.listJobInstances("job", 0, 4).size());
    EasyMock.verify(jobLocator, jobInstanceDao);
  }

  @Test
  public void testLastJobParameters() throws Exception {

    assertEquals(0, service.getLastJobParameters("job").getParameters().size());
  }

  @Test
  public void testRemoveInactives() throws Exception {

    testLaunch();

    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecution();
    EasyMock.expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
    EasyMock.expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(null);
    EasyMock.expect(executionContextDao.getExecutionContext(jobExecution)).andReturn(new ExecutionContext());
    stepExecutionDao.addStepExecutions(jobExecution);

    EasyMock.replay(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);

    service.removeInactiveExecutions();

    EasyMock.verify(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);
  }

  @Test
  public void testDestroy() throws Exception {

    EasyMock.replay(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);

    service.destroy();

    EasyMock.verify(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);

  }

  @Test
  public void testDestroyWithActives() throws Exception {

    testLaunch();

    JobExecution jobExecution = MetaDataInstanceFactory.createJobExecution();
    jobExecution.setEndTime(new Date());
    assertFalse(jobExecution.isRunning());

    EasyMock.expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution).anyTimes();
    EasyMock.expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(null).anyTimes();
    EasyMock.expect(executionContextDao.getExecutionContext(jobExecution)).andReturn(new ExecutionContext())
    .anyTimes();
    stepExecutionDao.addStepExecutions(jobExecution);
    EasyMock.expectLastCall().anyTimes();

    EasyMock.replay(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);

    service.destroy();

    EasyMock.verify(jobExecutionDao, stepExecutionDao, executionContextDao, jobInstanceDao);

  }

}
TOP

Related Classes of org.springframework.batch.admin.service.SimpleJobServiceTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.