use of org.apache.oozie.service.JPAService in project oozie by apache.
the class TestCoordChangeXCommand method testCoordStatus_Failed.
// Status change from failed- successful
public void testCoordStatus_Failed() throws Exception {
Date start = new Date();
// 5 hrs
Date end = new Date(start.getTime() + (5 * HOURS_IN_MS));
String status = "status=RUNNING";
final CoordinatorJobBean job = addRecordToCoordJobTableForPauseTimeTest(CoordinatorJob.Status.FAILED, start, end, end, true, false, 4);
addRecordToCoordActionTable(job.getId(), 1, CoordinatorAction.Status.SUCCEEDED, "coord-action-get.xml", 0);
addRecordToCoordActionTable(job.getId(), 2, CoordinatorAction.Status.SUCCEEDED, "coord-action-get.xml", 0);
addRecordToCoordActionTable(job.getId(), 3, CoordinatorAction.Status.RUNNING, "coord-action-get.xml", 0);
addRecordToCoordActionTable(job.getId(), 4, CoordinatorAction.Status.WAITING, "coord-action-get.xml", 0);
try {
new CoordChangeXCommand(job.getId(), status).call();
JPAService jpaService = Services.get().get(JPAService.class);
CoordJobGetJPAExecutor coordGetCmd = new CoordJobGetJPAExecutor(job.getId());
CoordinatorJobBean coordJob = jpaService.execute(coordGetCmd);
assertEquals(coordJob.getStatusStr(), "RUNNING");
} catch (CommandException e) {
e.printStackTrace();
if (e.getErrorCode() != ErrorCode.E1022) {
fail("Error code should be E1022");
}
}
}
use of org.apache.oozie.service.JPAService in project oozie by apache.
the class TestCoordChangeXCommand method testCoordChangeEndTime3.
/**
* Testcase when changing end-time to after original end-time
* but before nextMaterializedTime should not cause unnecessary changes
*
* @throws Exception
*/
public void testCoordChangeEndTime3() throws Exception {
JPAService jpaService = Services.get().get(JPAService.class);
Date startTime = new Date();
Date endTime = new Date(startTime.getTime() + (10 * 60 * 1000));
CoordinatorJobBean coordJob = addRecordToCoordJobTable(CoordinatorJob.Status.RUNNING, startTime, endTime, true, true, 1);
coordJob.setNextMaterializedTime(new Date(startTime.getTime() + (40 * 60 * 1000)));
CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB, coordJob);
addRecordToCoordActionTable(coordJob.getId(), 1, CoordinatorAction.Status.SUCCEEDED, "coord-action-get.xml", 0);
Runnable runnable = new StatusTransitService.StatusTransitRunnable();
runnable.run();
CoordJobGetJPAExecutor coordGetCmd = new CoordJobGetJPAExecutor(coordJob.getId());
coordJob = jpaService.execute(coordGetCmd);
assertEquals(Job.Status.SUCCEEDED, coordJob.getStatus());
assertFalse(coordJob.isPending());
assertTrue(coordJob.isDoneMaterialization());
String newEndTime = convertDateToString(startTime.getTime() + 20 * 60 * 1000);
try {
new CoordChangeXCommand(coordJob.getId(), "endtime=" + newEndTime).call();
} catch (Exception e) {
assertTrue(e.getMessage().contains("Didn't change endtime. Endtime is in between coord end time and next materialization time"));
}
coordJob = jpaService.execute(coordGetCmd);
assertFalse(Job.Status.RUNNING == coordJob.getStatus());
assertFalse(coordJob.isPending());
assertTrue(coordJob.isDoneMaterialization());
}
use of org.apache.oozie.service.JPAService in project oozie by apache.
the class TestCoordChangeXCommand method testProcessLookaheadActions.
// Testcase to test deletion of lookahead action in case of end-date change
// Added one more test case to test processLookaheadActions with day frequency and SUSPENDED status.
public void testProcessLookaheadActions() throws Exception {
Date startTime = DateUtils.parseDateOozieTZ("2013-08-01T00:00Z");
Date endTime = DateUtils.parseDateOozieTZ("2013-08-29T00:00Z");
Date changeEndTime = DateUtils.parseDateOozieTZ("2013-08-05T00:00Z");
String endTimeChangeStr = "endtime=" + DateUtils.formatDateOozieTZ(changeEndTime);
final CoordinatorJobBean job = addRecordToCoordJobTableForPauseTimeTest(CoordinatorJob.Status.SUSPENDED, startTime, endTime, endTime, true, false, 6);
addRecordToCoordActionTable(job.getId(), 1, CoordinatorAction.Status.SUCCEEDED, "coord-action-get.xml", 0, DateUtils.parseDateOozieTZ("2013-08-01T00:00Z"));
addRecordToCoordActionTable(job.getId(), 2, CoordinatorAction.Status.RUNNING, "coord-action-get.xml", 0, DateUtils.parseDateOozieTZ("2013-08-02T00:00Z"));
addRecordToCoordActionTable(job.getId(), 3, CoordinatorAction.Status.WAITING, "coord-action-get.xml", 0, DateUtils.parseDateOozieTZ("2013-08-03T00:00Z"));
addRecordToCoordActionTable(job.getId(), 4, CoordinatorAction.Status.WAITING, "coord-action-get.xml", 0, DateUtils.parseDateOozieTZ("2013-08-04T00:00Z"));
addRecordToCoordActionTable(job.getId(), 5, CoordinatorAction.Status.WAITING, "coord-action-get.xml", 0, DateUtils.parseDateOozieTZ("2013-08-05T00:00Z"));
addRecordToCoordActionTable(job.getId(), 6, CoordinatorAction.Status.WAITING, "coord-action-get.xml", 0, DateUtils.parseDateOozieTZ("2013-08-06T00:00Z"));
job.setFrequency("1");
job.setTimeUnit(Timeunit.DAY);
CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB, job);
JPAService jpaService = Services.get().get(JPAService.class);
new CoordChangeXCommand(job.getId(), endTimeChangeStr).call();
CoordJobGetJPAExecutor coordGetCmd = new CoordJobGetJPAExecutor(job.getId());
CoordinatorJobBean coordJob = jpaService.execute(coordGetCmd);
assertEquals(coordJob.getEndTime(), changeEndTime);
assertEquals(Job.Status.SUSPENDED, coordJob.getStatus());
assertEquals(4, coordJob.getLastActionNumber());
assertEquals(DateUtils.parseDateOozieTZ("2013-08-05T00:00Z"), coordJob.getNextMaterializedTime());
assertEquals(DateUtils.parseDateOozieTZ("2013-08-05T00:00Z"), coordJob.getLastActionTime());
assertEquals(changeEndTime, coordJob.getEndTime());
}
use of org.apache.oozie.service.JPAService in project oozie by apache.
the class TestCoordChangeXCommand method addRecordToCoordJobTableForPauseTimeTest.
protected CoordinatorJobBean addRecordToCoordJobTableForPauseTimeTest(CoordinatorJob.Status status, Date start, Date end, Date lastActionTime, boolean pending, boolean doneMatd, int lastActionNum) throws Exception {
CoordinatorJobBean coordJob = createCoordJob(status, start, end, pending, doneMatd, lastActionNum);
coordJob.setFrequency("1");
coordJob.setTimeUnit(Timeunit.HOUR);
coordJob.setLastActionNumber(lastActionNum);
coordJob.setLastActionTime(lastActionTime);
try {
JPAService jpaService = Services.get().get(JPAService.class);
assertNotNull(jpaService);
CoordJobInsertJPAExecutor coordInsertCmd = new CoordJobInsertJPAExecutor(coordJob);
jpaService.execute(coordInsertCmd);
} catch (JPAExecutorException je) {
je.printStackTrace();
fail("Unable to insert the test coord job record to table");
throw je;
}
return coordJob;
}
use of org.apache.oozie.service.JPAService in project oozie by apache.
the class TestCoordChangeXCommand method testCoordChangeEndTime1.
/**
* Testcase when changing end-time == nextMaterializedTime
* reflects correct job status via StatusTransit
*
* @throws Exception
*/
public void testCoordChangeEndTime1() throws Exception {
JPAService jpaService = Services.get().get(JPAService.class);
Date startTime = new Date();
Date endTime = new Date(startTime.getTime() + (50 * 60 * 1000));
CoordinatorJobBean coordJob = addRecordToCoordJobTable(CoordinatorJob.Status.RUNNING, startTime, endTime, true, true, 1);
coordJob.setNextMaterializedTime(new Date(startTime.getTime() + (30 * 60 * 1000)));
CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB, coordJob);
addRecordToCoordActionTable(coordJob.getId(), 1, CoordinatorAction.Status.SUCCEEDED, "coord-action-get.xml", 0);
Runnable runnable = new StatusTransitService.StatusTransitRunnable();
// dummy run so we get to the interval check following coord job change
runnable.run();
sleep(1000);
// checking before change
assertEquals(endTime.getTime(), coordJob.getEndTime().getTime());
String newEndTime = convertDateToString(startTime.getTime() + 30 * 60 * 1000);
new CoordChangeXCommand(coordJob.getId(), "endtime=" + newEndTime).call();
try {
checkCoordJobs(coordJob.getId(), DateUtils.parseDateOozieTZ(newEndTime), null, null, false);
} catch (Exception ex) {
ex.printStackTrace();
fail("Invalid date" + ex);
}
CoordJobGetJPAExecutor coordGetCmd = new CoordJobGetJPAExecutor(coordJob.getId());
coordJob = jpaService.execute(coordGetCmd);
assertEquals(Job.Status.RUNNING, coordJob.getStatus());
// checking after change
assertEquals(newEndTime, convertDateToString(coordJob.getEndTime().getTime()));
assertTrue(coordJob.isPending());
assertTrue(coordJob.isDoneMaterialization());
runnable.run();
sleep(1000);
coordJob = jpaService.execute(coordGetCmd);
assertEquals(Job.Status.SUCCEEDED, coordJob.getStatus());
assertFalse(coordJob.isPending());
assertTrue(coordJob.isDoneMaterialization());
}
Aggregations