new CoordMaterializeTransitionXCommand(job.getId(), 3600).call();
// Set push missing dependency
JPAService jpaService = Services.get().get(JPAService.class);
CoordinatorActionBean action = jpaService
.execute(new CoordActionGetForInputCheckJPAExecutor(job.getId() + "@1"));
final String pushMissingDependency = getTestCaseFileUri("2009/02/05");
action.setPushMissingDependencies(pushMissingDependency);
CoordActionQueryExecutor.getInstance().executeUpdate(
CoordActionQueryExecutor.CoordActionQuery.UPDATE_COORD_ACTION_FOR_PUSH_INPUTCHECK,
action);
// 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")) ;
new CoordActionInputCheckXCommand(job.getId() + "@1", job.getId()).call();
new CoordPushDependencyCheckXCommand(job.getId() + "@1").call();
action = jpaService.execute(new CoordActionGetForInputCheckJPAExecutor(job.getId() + "@1"));
assertEquals(CoordCommandUtils.RESOLVED_UNRESOLVED_SEPARATOR + "${coord:latestRange(-3,0)}",
action.getMissingDependencies());
assertEquals(pushMissingDependency, action.getPushMissingDependencies());
// 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/01/22/_SUCCESS".split("/"));
createTestCaseSubDir("2009/01/08/_SUCCESS".split("/"));
createTestCaseSubDir("2009/01/05/_SUCCESS".split("/"));
// Run input check after making latest available
new CoordActionInputCheckXCommand(job.getId() + "@1", job.getId()).call();
action = jpaService.execute(new CoordActionGetForInputCheckJPAExecutor(job.getId() + "@1"));
assertEquals(CoordCommandUtils.RESOLVED_UNRESOLVED_SEPARATOR + "${coord:latestRange(-3,0)}",
action.getMissingDependencies());
assertEquals(pushMissingDependency, action.getPushMissingDependencies());
// Run input check after making push dependencies available
createTestCaseSubDir("2009/02/05/_SUCCESS".split("/"));
new CoordPushDependencyCheckXCommand(job.getId() + "@1").call();
action = jpaService.execute(new CoordActionGetForInputCheckJPAExecutor(job.getId() + "@1"));
assertEquals("", action.getPushMissingDependencies());
checkCoordAction(job.getId() + "@1", CoordCommandUtils.RESOLVED_UNRESOLVED_SEPARATOR
+ "${coord:latestRange(-3,0)}", CoordinatorAction.Status.WAITING);
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 CoordActionGetForInputCheckJPAExecutor(job.getId() + "@1"));
assertEquals("", action.getMissingDependencies());
actionXML = action.getActionXml();
// 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