Search in sources :

Example 1 with ActionKillXCommand

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());
}
Also used : ControlNodeActionExecutor(org.apache.oozie.action.control.ControlNodeActionExecutor) ActionExecutor(org.apache.oozie.action.ActionExecutor) ActionKillXCommand(org.apache.oozie.command.wf.ActionKillXCommand) WorkflowJobBean(org.apache.oozie.WorkflowJobBean) WorkflowActionBean(org.apache.oozie.WorkflowActionBean) ActionStartXCommand(org.apache.oozie.command.wf.ActionStartXCommand) WorkflowActionGetJPAExecutor(org.apache.oozie.executor.jpa.WorkflowActionGetJPAExecutor) ActionService(org.apache.oozie.service.ActionService) Test(org.junit.Test)

Aggregations

WorkflowActionBean (org.apache.oozie.WorkflowActionBean)1 WorkflowJobBean (org.apache.oozie.WorkflowJobBean)1 ActionExecutor (org.apache.oozie.action.ActionExecutor)1 ControlNodeActionExecutor (org.apache.oozie.action.control.ControlNodeActionExecutor)1 ActionKillXCommand (org.apache.oozie.command.wf.ActionKillXCommand)1 ActionStartXCommand (org.apache.oozie.command.wf.ActionStartXCommand)1 WorkflowActionGetJPAExecutor (org.apache.oozie.executor.jpa.WorkflowActionGetJPAExecutor)1 ActionService (org.apache.oozie.service.ActionService)1 Test (org.junit.Test)1