diff --git a/modules/activiti-engine/src/test/java/org/activiti/engine/test/db/ProcessInstanceSuspensionTest.java b/modules/activiti-engine/src/test/java/org/activiti/engine/test/db/ProcessInstanceSuspensionTest.java index 8a6dc1e371c225123eabb0237386def6044de7dc..02c4e8111d9747d3e8d9edae676346e9134ee246 100644 --- a/modules/activiti-engine/src/test/java/org/activiti/engine/test/db/ProcessInstanceSuspensionTest.java +++ b/modules/activiti-engine/src/test/java/org/activiti/engine/test/db/ProcessInstanceSuspensionTest.java @@ -1,9 +1,15 @@ package org.activiti.engine.test.db; +import java.util.Date; + import org.activiti.engine.impl.cmd.AcquireJobsCmd; +import org.activiti.engine.impl.interceptor.Command; +import org.activiti.engine.impl.interceptor.CommandContext; import org.activiti.engine.impl.jobexecutor.AcquiredJobs; import org.activiti.engine.impl.test.PluggableActivitiTestCase; +import org.activiti.engine.impl.util.ClockUtil; import org.activiti.engine.repository.ProcessDefinition; +import org.activiti.engine.runtime.Job; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.test.Deployment; @@ -20,8 +26,12 @@ public class ProcessInstanceSuspensionTest extends PluggableActivitiTestCase { ProcessInstance pi = runtimeService.startProcessInstanceByKey(pd.getKey()); // now there is one job: - assertNotNull(managementService.createJobQuery() - .singleResult()); + // now there is one job: + Job job = managementService.createJobQuery() + .singleResult(); + assertNotNull(job); + + makeSureJobDue(job); // the acquirejobs command sees the job: AcquiredJobs acquiredJobs = executeAcquireJobsCommand(); @@ -32,7 +42,7 @@ public class ProcessInstanceSuspensionTest extends PluggableActivitiTestCase { // now, the acquirejobs command does not see the job: acquiredJobs = executeAcquireJobsCommand(); - assertEquals(0, acquiredJobs.size()); + assertEquals(0, acquiredJobs.size()); } @Deployment(resources={"org/activiti/engine/test/db/oneJobProcess.bpmn20.xml"}) @@ -41,9 +51,12 @@ public class ProcessInstanceSuspensionTest extends PluggableActivitiTestCase { ProcessDefinition pd = repositoryService.createProcessDefinitionQuery().singleResult(); runtimeService.startProcessInstanceByKey(pd.getKey()); // now there is one job: - assertNotNull(managementService.createJobQuery() - .singleResult()); + Job job = managementService.createJobQuery() + .singleResult(); + assertNotNull(job); + makeSureJobDue(job); + // the acquirejobs command sees the job: AcquiredJobs acquiredJobs = executeAcquireJobsCommand(); assertEquals(1, acquiredJobs.size()); @@ -56,6 +69,20 @@ public class ProcessInstanceSuspensionTest extends PluggableActivitiTestCase { assertEquals(0, acquiredJobs.size()); } + protected void makeSureJobDue(final Job job) { + processEngineConfiguration.getCommandExecutorTxRequired() + .execute(new Command() { + public Void execute(CommandContext commandContext) { + Date currentTime = ClockUtil.getCurrentTime(); + commandContext.getJobManager() + .findJobById(job.getId()) + .setDuedate(new Date(currentTime.getTime() - 10000)); + return null; + } + + }); + } + private AcquiredJobs executeAcquireJobsCommand() { return processEngineConfiguration.getCommandExecutorTxRequired() .execute(new AcquireJobsCmd(processEngineConfiguration.getJobExecutor()));