ALF-4346 & ALF-4348 - More work on schedulable actions, and start to expose this through to the replication service

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@22019 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Nick Burch
2010-08-26 13:36:37 +00:00
parent 5e8c77a99b
commit 61583adef0
10 changed files with 430 additions and 70 deletions

View File

@@ -32,9 +32,9 @@ import org.alfresco.repo.action.ActionServiceImplTest.SleepActionExecuter;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.action.scheduled.SchedulableAction.IntervalPeriod;
import org.alfresco.service.cmr.action.scheduled.ScheduledPersistedAction;
import org.alfresco.service.cmr.action.scheduled.ScheduledPersistedActionService;
import org.alfresco.service.cmr.action.scheduled.ScheduledPersistedAction.IntervalPeriod;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
@@ -94,11 +94,11 @@ public class ScheduledPersistedActionServiceTest extends TestCase
SleepActionExecuter.registerIfNeeded(ctx);
// Zap all test schedules
// List<ScheduledPersistedAction> schedules = service.listSchedules();
// for (ScheduledPersistedAction schedule : schedules)
// {
// service.deleteSchedule(schedule);
// }
List<ScheduledPersistedAction> schedules = service.listSchedules();
for (ScheduledPersistedAction schedule : schedules)
{
service.deleteSchedule(schedule);
}
// Persist an action that uses the test executor
testAction = new TestAction(actionService.createAction(SleepActionExecuter.NAME));
@@ -145,6 +145,10 @@ public class ScheduledPersistedActionServiceTest extends TestCase
/**
* Tests that the to-trigger stuff works properly
*/
public void testActionToTrigger() throws Exception
{
// TODO
}
/**
* Tests that we can create, save, edit, delete etc the scheduled persisted
@@ -180,7 +184,10 @@ public class ScheduledPersistedActionServiceTest extends TestCase
schedule.setScheduleStart(now);
schedule.setScheduleIntervalCount(2);
schedule.setScheduleIntervalPeriod(ScheduledPersistedAction.IntervalPeriod.Day);
assertNull( ((ScheduledPersistedActionImpl)schedule).getPersistedAtNodeRef() );
service.saveSchedule(schedule);
assertNotNull( ((ScheduledPersistedActionImpl)schedule).getPersistedAtNodeRef() );
// Load it again, should have the same details still
ScheduledPersistedAction retrieved = serviceImpl.loadPersistentSchedule(((ScheduledPersistedActionImpl)schedule).getPersistedAtNodeRef());
@@ -189,6 +196,7 @@ public class ScheduledPersistedActionServiceTest extends TestCase
assertEquals(now, retrieved.getScheduleStart());
assertEquals(new Integer(2), retrieved.getScheduleIntervalCount());
assertEquals(ScheduledPersistedAction.IntervalPeriod.Day, retrieved.getScheduleIntervalPeriod());
assertNotNull( ((ScheduledPersistedActionImpl)schedule).getPersistedAtNodeRef() );
// Load a 2nd copy, won't be any changes
ScheduledPersistedAction second = serviceImpl.loadPersistentSchedule(((ScheduledPersistedActionImpl)schedule).getPersistedAtNodeRef());
@@ -197,6 +205,28 @@ public class ScheduledPersistedActionServiceTest extends TestCase
assertEquals(now, second.getScheduleStart());
assertEquals(new Integer(2), second.getScheduleIntervalCount());
assertEquals(ScheduledPersistedAction.IntervalPeriod.Day, second.getScheduleIntervalPeriod());
// Now ensure we can create for an action that didn't have a noderef
// when we started
Action testAction3 = new TestAction(actionService.createAction(SleepActionExecuter.NAME));
schedule = service.createSchedule(testAction3);
assertNull(schedule.getActionNodeRef());
assertNull( ((ScheduledPersistedActionImpl)schedule).getPersistedAtNodeRef() );
runtimeActionService.createActionNodeRef(
//
testAction3, ScheduledPersistedActionServiceImpl.SCHEDULED_ACTION_ROOT_NODE_REF,
ContentModel.ASSOC_CONTAINS, QName.createQName("TestAction3"));
assertNotNull(schedule.getActionNodeRef());
assertNull( ((ScheduledPersistedActionImpl)schedule).getPersistedAtNodeRef() );
service.saveSchedule(schedule);
assertNotNull(schedule.getActionNodeRef());
assertNotNull( ((ScheduledPersistedActionImpl)schedule).getPersistedAtNodeRef() );
}
/**
@@ -290,6 +320,7 @@ public class ScheduledPersistedActionServiceTest extends TestCase
ScheduledPersistedAction retrieved = service.getSchedule(testAction2);
assertNull(retrieved);
// and from one which does
retrieved = service.getSchedule(testAction);
assertNotNull(retrieved);
assertEquals(testAction.getNodeRef(), retrieved.getActionNodeRef());
@@ -437,8 +468,13 @@ public class ScheduledPersistedActionServiceTest extends TestCase
Thread.sleep(4000);
// Ensure it did properly run twice times
assertEquals(2, sleepActionExec.getTimesExecuted());
// Ensure it did properly run two times
// (Depending on timing of tests, might actually slip in 3 runs)
if(sleepActionExec.getTimesExecuted() == 3) {
assertEquals(3, sleepActionExec.getTimesExecuted());
} else {
assertEquals(2, sleepActionExec.getTimesExecuted());
}
// Zap it
service.deleteSchedule(schedule);