Search in sources :

Example 6 with CoordActionGetForInputCheckJPAExecutor

use of org.apache.oozie.executor.jpa.CoordActionGetForInputCheckJPAExecutor in project oozie by apache.

the class TestCoordActionInputCheckXCommand method testActionInputCheckLatestCurrentTime.

public void testActionInputCheckLatestCurrentTime() throws Exception {
    Services.get().getConf().setBoolean(CoordELFunctions.LATEST_EL_USE_CURRENT_TIME, true);
    String jobId = "0000000-" + new Date().getTime() + "-TestCoordActionInputCheckXCommand-C";
    Date startTime = DateUtils.parseDateOozieTZ("2009-02-15T23:59" + TZ);
    Date endTime = DateUtils.parseDateOozieTZ("2009-02-16T23:59" + TZ);
    CoordinatorJobBean job = addRecordToCoordJobTable(jobId, startTime, endTime, "latest");
    new CoordMaterializeTransitionXCommand(job.getId(), 3600).call();
    JPAService jpaService = Services.get().get(JPAService.class);
    CoordinatorActionBean action = jpaService.execute(new CoordActionGetForInputCheckJPAExecutor(job.getId() + "@1"));
    assertEquals(CoordCommandUtils.RESOLVED_UNRESOLVED_SEPARATOR + "${coord:latestRange(-3,0)}", action.getMissingDependencies());
    // Update action creation time
    String actionXML = action.getActionXml();
    String actionCreationTime = "2009-02-15T01:00" + TZ;
    actionXML = actionXML.replaceAll("action-actual-time=\".*\">", "action-actual-time=\"" + actionCreationTime + "\">");
    action.setActionXml(actionXML);
    action.setCreatedTime(DateUtils.parseDateOozieTZ(actionCreationTime));
    CoordActionQueryExecutor.getInstance().executeUpdate(CoordActionQueryExecutor.CoordActionQuery.UPDATE_COORD_ACTION_FOR_INPUTCHECK, action);
    action = jpaService.execute(new CoordActionGetForInputCheckJPAExecutor(job.getId() + "@1"));
    assertTrue(action.getActionXml().contains("action-actual-time=\"2009-02-15T01:00"));
    // providing some of the dataset dirs required as per coordinator
    // specification with holes
    // before and after action creation time
    createTestCaseSubDir("2009/03/05/_SUCCESS".split("/"));
    createTestCaseSubDir("2009/02/19/_SUCCESS".split("/"));
    createTestCaseSubDir("2009/02/12/_SUCCESS".split("/"));
    createTestCaseSubDir("2009/02/05/_SUCCESS".split("/"));
    createTestCaseSubDir("2009/01/22/_SUCCESS".split("/"));
    createTestCaseSubDir("2009/01/08/_SUCCESS".split("/"));
    new CoordActionInputCheckXCommand(job.getId() + "@1", job.getId()).call();
    // Sleep for sometime as it gets requeued with 10ms delay on failure to acquire write lock
    Thread.sleep(1000);
    action = jpaService.execute(new CoordActionGetJPAExecutor(job.getId() + "@1"));
    actionXML = action.getActionXml();
    assertEquals("", action.getMissingDependencies());
    // Datasets should be picked up based on current time and not action creation/actual time.
    String resolvedList = getTestCaseFileUri("2009/03/05") + CoordELFunctions.INSTANCE_SEPARATOR + getTestCaseFileUri("2009/02/19") + CoordELFunctions.INSTANCE_SEPARATOR + getTestCaseFileUri("2009/02/12") + CoordELFunctions.INSTANCE_SEPARATOR + getTestCaseFileUri("2009/02/05");
    assertEquals(resolvedList, actionXML.substring(actionXML.indexOf("<uris>") + 6, actionXML.indexOf("</uris>")));
}
Also used : CoordinatorJobBean(org.apache.oozie.CoordinatorJobBean) CoordinatorActionBean(org.apache.oozie.CoordinatorActionBean) CoordActionGetJPAExecutor(org.apache.oozie.executor.jpa.CoordActionGetJPAExecutor) CoordActionGetForInputCheckJPAExecutor(org.apache.oozie.executor.jpa.CoordActionGetForInputCheckJPAExecutor) JPAService(org.apache.oozie.service.JPAService) Date(java.util.Date)

Aggregations

CoordActionGetForInputCheckJPAExecutor (org.apache.oozie.executor.jpa.CoordActionGetForInputCheckJPAExecutor)6 JPAService (org.apache.oozie.service.JPAService)6 Date (java.util.Date)4 CoordinatorActionBean (org.apache.oozie.CoordinatorActionBean)4 CoordinatorJobBean (org.apache.oozie.CoordinatorJobBean)4 CommandException (org.apache.oozie.command.CommandException)2 JPAExecutorException (org.apache.oozie.executor.jpa.JPAExecutorException)2 CoordActionGetJPAExecutor (org.apache.oozie.executor.jpa.CoordActionGetJPAExecutor)1 CoordJobGetJPAExecutor (org.apache.oozie.executor.jpa.CoordJobGetJPAExecutor)1