use of org.apache.oozie.command.wf.ActionKillXCommand in project oozie by apache.
the class TestEventGeneration method testWorkflowActionEvent.
@Test
public void testWorkflowActionEvent() throws Exception {
assertEquals(queue.size(), 0);
// avoid noise from other apptype events by setting it to only
// workflow action
ehs.setAppTypes(new HashSet<String>(Arrays.asList("workflow_action")));
WorkflowJobBean job = this.addRecordToWfJobTable(WorkflowJob.Status.RUNNING, WorkflowInstance.Status.RUNNING);
WorkflowActionBean action = this.addRecordToWfActionTable(job.getId(), "1", WorkflowAction.Status.PREP, true);
// adding record sets externalChildID to dummy workflow-id so resetting it
action.setExternalChildIDs(null);
WorkflowActionQueryExecutor.getInstance().executeUpdate(WorkflowActionQuery.UPDATE_ACTION_START, action);
// Starting job
new ActionStartXCommand(action.getId(), "map-reduce").call();
WorkflowActionGetJPAExecutor wfActionGetCmd = new WorkflowActionGetJPAExecutor(action.getId());
action = jpaService.execute(wfActionGetCmd);
assertEquals(WorkflowAction.Status.RUNNING, action.getStatus());
assertEquals(1, queue.size());
WorkflowActionEvent event = (WorkflowActionEvent) queue.poll();
assertNotNull(event);
assertEquals(EventStatus.STARTED, event.getEventStatus());
assertEquals(AppType.WORKFLOW_ACTION, event.getAppType());
assertEquals(action.getId(), event.getId());
assertEquals(job.getUser(), event.getUser());
assertEquals(action.getName(), event.getAppName());
assertEquals(action.getStartTime(), event.getStartTime());
assertEquals(0, queue.size());
// Suspending job
ActionExecutor.Context context = new ActionXCommand.ActionExecutorContext(job, action, false, false);
ActionExecutor executor = Services.get().get(ActionService.class).getExecutor(action.getType());
ActionCheckXCommandForTest dac = new ActionCheckXCommandForTest(context, executor, action.getId());
dac.execute();
action = dac.getAction();
assertEquals(WorkflowAction.Status.START_MANUAL, action.getStatus());
assertEquals(1, queue.size());
event = (WorkflowActionEvent) queue.poll();
assertNotNull(event);
assertEquals(EventStatus.SUSPEND, event.getEventStatus());
assertEquals(AppType.WORKFLOW_ACTION, event.getAppType());
assertEquals(action.getId(), event.getId());
assertEquals(job.getUser(), event.getUser());
assertEquals(action.getName(), event.getAppName());
assertEquals(0, queue.size());
// Killing job
action.setStatus(WorkflowAction.Status.KILLED);
action.setPendingOnly();
// its already set by XTestCase add action record method above
action.setEndTime(null);
WorkflowActionQueryExecutor.getInstance().executeUpdate(WorkflowActionQuery.UPDATE_ACTION_END, action);
new ActionKillXCommand(action.getId()).call();
action = jpaService.execute(wfActionGetCmd);
assertEquals(WorkflowAction.Status.KILLED, action.getStatus());
assertEquals(1, queue.size());
event = (WorkflowActionEvent) queue.poll();
assertNotNull(event);
assertEquals(EventStatus.FAILURE, event.getEventStatus());
assertEquals(AppType.WORKFLOW_ACTION, event.getAppType());
assertEquals(action.getId(), event.getId());
assertEquals(job.getUser(), event.getUser());
assertEquals(action.getName(), event.getAppName());
assertEquals(action.getStartTime(), event.getStartTime());
assertNotNull(action.getEndTime());
assertNotNull(event.getEndTime());
assertEquals(action.getEndTime(), event.getEndTime());
assertEquals(0, queue.size());
}
Aggregations