Search in sources :

Example 46 with JPAService

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");
        }
    }
}
Also used : CoordinatorJobBean(org.apache.oozie.CoordinatorJobBean) CoordJobGetJPAExecutor(org.apache.oozie.executor.jpa.CoordJobGetJPAExecutor) CommandException(org.apache.oozie.command.CommandException) JPAService(org.apache.oozie.service.JPAService) Date(java.util.Date)

Example 47 with JPAService

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());
}
Also used : CoordinatorJobBean(org.apache.oozie.CoordinatorJobBean) CoordJobGetJPAExecutor(org.apache.oozie.executor.jpa.CoordJobGetJPAExecutor) JPAService(org.apache.oozie.service.JPAService) Date(java.util.Date) JPAExecutorException(org.apache.oozie.executor.jpa.JPAExecutorException) StoreException(org.apache.oozie.store.StoreException) CommandException(org.apache.oozie.command.CommandException)

Example 48 with JPAService

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());
}
Also used : CoordinatorJobBean(org.apache.oozie.CoordinatorJobBean) CoordJobGetJPAExecutor(org.apache.oozie.executor.jpa.CoordJobGetJPAExecutor) JPAService(org.apache.oozie.service.JPAService) Date(java.util.Date)

Example 49 with JPAService

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;
}
Also used : CoordinatorJobBean(org.apache.oozie.CoordinatorJobBean) JPAExecutorException(org.apache.oozie.executor.jpa.JPAExecutorException) CoordJobInsertJPAExecutor(org.apache.oozie.executor.jpa.CoordJobInsertJPAExecutor) JPAService(org.apache.oozie.service.JPAService)

Example 50 with JPAService

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());
}
Also used : CoordinatorJobBean(org.apache.oozie.CoordinatorJobBean) CoordJobGetJPAExecutor(org.apache.oozie.executor.jpa.CoordJobGetJPAExecutor) JPAService(org.apache.oozie.service.JPAService) Date(java.util.Date) JPAExecutorException(org.apache.oozie.executor.jpa.JPAExecutorException) StoreException(org.apache.oozie.store.StoreException) CommandException(org.apache.oozie.command.CommandException)

Aggregations

JPAService (org.apache.oozie.service.JPAService)449 JPAExecutorException (org.apache.oozie.executor.jpa.JPAExecutorException)156 CoordinatorJobBean (org.apache.oozie.CoordinatorJobBean)152 CoordinatorActionBean (org.apache.oozie.CoordinatorActionBean)113 Date (java.util.Date)95 WorkflowJobBean (org.apache.oozie.WorkflowJobBean)94 CoordJobGetJPAExecutor (org.apache.oozie.executor.jpa.CoordJobGetJPAExecutor)84 BundleJobBean (org.apache.oozie.BundleJobBean)78 WorkflowActionBean (org.apache.oozie.WorkflowActionBean)78 ArrayList (java.util.ArrayList)76 CommandException (org.apache.oozie.command.CommandException)66 List (java.util.List)59 BundleJobGetJPAExecutor (org.apache.oozie.executor.jpa.BundleJobGetJPAExecutor)54 CoordActionGetJPAExecutor (org.apache.oozie.executor.jpa.CoordActionGetJPAExecutor)54 WorkflowJobGetJPAExecutor (org.apache.oozie.executor.jpa.WorkflowJobGetJPAExecutor)49 WorkflowActionGetJPAExecutor (org.apache.oozie.executor.jpa.WorkflowActionGetJPAExecutor)47 HashMap (java.util.HashMap)41 BundleActionBean (org.apache.oozie.BundleActionBean)35 Configuration (org.apache.hadoop.conf.Configuration)32 EntityManager (javax.persistence.EntityManager)31