You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by km...@apache.org on 2018/11/14 11:19:50 UTC
oozie git commit: OOZIE-3380 TestCoordMaterializeTransitionXCommand
failure after DST change date (asalamon74 via kmarton)
Repository: oozie
Updated Branches:
refs/heads/master afbc3af8f -> 34289c4c7
OOZIE-3380 TestCoordMaterializeTransitionXCommand failure after DST change date (asalamon74 via kmarton)
Project: http://git-wip-us.apache.org/repos/asf/oozie/repo
Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/34289c4c
Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/34289c4c
Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/34289c4c
Branch: refs/heads/master
Commit: 34289c4c7bb3f3ff4301c5074b5bbc4dad0b35d6
Parents: afbc3af
Author: Julia Kinga Marton <km...@cloudera.com>
Authored: Wed Nov 14 12:13:00 2018 +0100
Committer: Julia Kinga Marton <km...@cloudera.com>
Committed: Wed Nov 14 12:13:00 2018 +0100
----------------------------------------------------------------------
.../TestCoordMaterializeTransitionXCommand.java | 174 ++++++++-----------
release-log.txt | 1 +
2 files changed, 77 insertions(+), 98 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/oozie/blob/34289c4c/core/src/test/java/org/apache/oozie/command/coord/TestCoordMaterializeTransitionXCommand.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/oozie/command/coord/TestCoordMaterializeTransitionXCommand.java b/core/src/test/java/org/apache/oozie/command/coord/TestCoordMaterializeTransitionXCommand.java
index 49b8732..15e9355 100644
--- a/core/src/test/java/org/apache/oozie/command/coord/TestCoordMaterializeTransitionXCommand.java
+++ b/core/src/test/java/org/apache/oozie/command/coord/TestCoordMaterializeTransitionXCommand.java
@@ -43,7 +43,6 @@ import org.apache.oozie.executor.jpa.CoordActionGetJPAExecutor;
import org.apache.oozie.executor.jpa.CoordJobGetActionsJPAExecutor;
import org.apache.oozie.executor.jpa.CoordJobGetJPAExecutor;
import org.apache.oozie.executor.jpa.CoordJobGetRunningActionsCountJPAExecutor;
-import org.apache.oozie.executor.jpa.CoordJobInsertJPAExecutor;
import org.apache.oozie.executor.jpa.CoordJobQueryExecutor;
import org.apache.oozie.executor.jpa.CoordJobQueryExecutor.CoordJobQuery;
import org.apache.oozie.executor.jpa.JPAExecutorException;
@@ -61,7 +60,10 @@ import org.jdom.Element;
@SuppressWarnings("deprecation")
public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
- private int oneHourInSeconds = hoursToSeconds(1);
+ private static final int TIME_IN_MIN = 60 * 1000;
+ private static final int TIME_IN_HOURS = TIME_IN_MIN * 60;
+ private static final int TIME_IN_DAY = TIME_IN_HOURS * 24;
+ private JPAService jpaService;
@Override
protected void setUp() throws Exception {
@@ -69,6 +71,7 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
new Services().init();
Services.get().setService(FakeCallableQueueService.class);
Services.get().get(SchedulerService.class).destroy();
+ jpaService = Services.get().get(JPAService.class);
}
@Override
@@ -146,7 +149,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue(job.isDoneMaterialization());
assertEquals(job.getLastActionNumber(), expectedNominalTimeCount);
@@ -179,7 +181,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue(job.isDoneMaterialization());
assertEquals(job.getLastActionNumber(), expectedNominalTimeCount);
@@ -201,7 +202,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, new Date[]{});
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue(job.isDoneMaterialization());
assertEquals(job.getLastActionNumber(), expectedNominalTimeCount);
@@ -227,7 +227,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue(job.isDoneMaterialization());
assertEquals(job.getLastActionNumber(), expectedNominalTimeCount);
@@ -252,7 +251,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue(job.isDoneMaterialization());
assertEquals(job.getLastActionNumber(), expectedNominalTimeCount);
@@ -277,7 +275,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue(job.isDoneMaterialization());
assertEquals(job.getLastActionNumber(), expectedNominalTimeCount);
@@ -302,7 +299,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue(job.isDoneMaterialization());
assertEquals(expectedNominalTimeCount, job.getLastActionNumber());
@@ -330,7 +326,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertFalse(job.isDoneMaterialization());
assertEquals(expectedNominalTimeCount, job.getLastActionNumber());
@@ -365,7 +360,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- final JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertFalse("coordinator job shouldn't have yet been materialized", job.isDoneMaterialization());
assertEquals("coordinator action count mismatch", expectedNominalTimeCount, job.getLastActionNumber());
@@ -414,7 +408,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
private void checkTwoActionsAfterCatchup(CoordinatorJobBean job, int expectedJobCount, String nextMaterialization)
throws ParseException {
try {
- final JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue("coordinator job should have already been materialized", job.isDoneMaterialization());
assertEquals("coordinator action count mismatch", expectedJobCount, job.getLastActionNumber());
@@ -466,7 +459,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue(job.isDoneMaterialization());
assertEquals(expectedNominalTimeCount, job.getLastActionNumber());
@@ -493,7 +485,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
checkCoordActionsNominalTime(job.getId(), expectedNominalTimeCount, nominalTimes);
try {
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertTrue(job.isDoneMaterialization());
assertEquals(job.getLastActionNumber(), expectedNominalTimeCount);
@@ -504,6 +495,7 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
fail("Job ID " + job.getId() + " was not stored properly in db");
}
}
+
public void testActionMaterWithPauseTime1() throws Exception {
Date startTime = DateUtils.parseDateOozieTZ("2009-03-06T10:00Z");
Date endTime = DateUtils.parseDateOozieTZ("2009-03-06T10:14Z");
@@ -570,6 +562,7 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
/**
* Test a coordinator job that will run in far future,
* materialization should not happen.
+ *
* @throws Exception
*/
public void testMatLookupCommand2() throws Exception {
@@ -583,6 +576,7 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
/**
* Test a coordinator job that will run within 5 minutes from now,
* materilization should happen.
+ *
* @throws Exception
*/
public void testMatLookupCommand3() throws Exception {
@@ -613,7 +607,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
+ "</coordinator-app>";
CoordinatorJobBean job = addRecordToCoordJobTable(coordXml);
new CoordMaterializeTransitionXCommand(job.getId(), hoursToSeconds(1)).call();
- JPAService jpaService = Services.get().get(JPAService.class);
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertEquals(CoordinatorJob.Status.FAILED, job.getStatus());
// GetActions for coord job, should be none
@@ -625,6 +618,7 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
/**
* Test a coordinator job that will run beyond 5 minutes from now,
* materilization should not happen.
+ *
* @throws Exception
*/
public void testMatLookupCommand4() throws Exception {
@@ -640,11 +634,7 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
*
* @throws Exception
*/
- public void testMaterializationLookup() throws Exception {
- long TIME_IN_MIN = 60 * 1000;
- long TIME_IN_HOURS = TIME_IN_MIN * 60;
- long TIME_IN_DAY = TIME_IN_HOURS * 24;
- JPAService jpaService = Services.get().get(JPAService.class);
+ public void testMaterializationLookupDaysFixedDate() throws Exception {
// test with days
Date startTime = DateUtils.parseDateOozieTZ("2009-02-01T01:00Z");
Date endTime = DateUtils.parseDateOozieTZ("2009-05-03T23:59Z");
@@ -658,11 +648,12 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
new CoordMaterializeTransitionXCommand(job.getId(), hoursToSeconds(1)).call();
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertEquals(new Date(startTime.getTime() + TIME_IN_DAY * 3), job.getNextMaterializedTime());
+ }
- // test with hours
- startTime = DateUtils.parseDateOozieTZ("2009-02-01T01:00Z");
- endTime = DateUtils.parseDateOozieTZ("2009-05-03T23:59Z");
- job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
+ public void testMaterializationLookupHours() throws Exception {
+ Date startTime = DateUtils.parseDateOozieTZ("2009-02-01T01:00Z");
+ Date endTime = DateUtils.parseDateOozieTZ("2009-05-03T23:59Z");
+ CoordinatorJobBean job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
job.setNextMaterializedTime(startTime);
job.setMatThrottling(10);
job.setFrequency("1");
@@ -671,11 +662,13 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
new CoordMaterializeTransitionXCommand(job.getId(), hoursToSeconds(1)).call();
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
assertEquals(new Date(startTime.getTime() + TIME_IN_HOURS * 10), job.getNextMaterializedTime());
+ }
- // test with hours, time should not pass the current time.
- startTime = new Date(new Date().getTime() - TIME_IN_DAY * 3);
- endTime = new Date(startTime.getTime() + TIME_IN_DAY * 3);
- job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
+ public void testMaterializationLookupRelativeDays1() throws Exception {
+ Date currentDate = new Date();
+ Date startTime = new Date(currentDate.getTime() - TIME_IN_DAY * 3);
+ Date endTime = new Date(startTime.getTime() + TIME_IN_DAY * 3);
+ CoordinatorJobBean job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
job.setNextMaterializedTime(startTime);
job.setMatThrottling(10);
job.setFrequency("1");
@@ -683,17 +676,15 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB, job);
new CoordMaterializeTransitionXCommand(job.getId(), hoursToSeconds(1)).call();
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
- // If the startTime and endTime straddle a DST shift (the Coord is in "America/Los_Angeles"), then we need to adjust for
- // that because startTime and endTime assume GMT
Date next = new Date(startTime.getTime() + TIME_IN_DAY * 3);
- TimeZone tz = TimeZone.getTimeZone(job.getTimeZone());
- next.setTime(next.getTime() + DaylightOffsetCalculator.getDSTOffset(tz, startTime, next));
+ adjustExpectedMaterializationDateForDSTSwitch(next, startTime, job);
assertEquals(next, job.getNextMaterializedTime());
+ }
- // test with hours, time should not pass the current time.
- startTime = new Date(new Date().getTime());
- endTime = new Date(startTime.getTime() + TIME_IN_DAY * 3);
- job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
+ public void testMaterializationLookupRelativeDays2() throws Exception {
+ Date startTime = new Date(new Date().getTime());
+ Date endTime = new Date(startTime.getTime() + TIME_IN_DAY * 3);
+ CoordinatorJobBean job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
job.setNextMaterializedTime(startTime);
job.setMatThrottling(10);
job.setFrequency("1");
@@ -701,52 +692,46 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB, job);
new CoordMaterializeTransitionXCommand(job.getId(), hoursToSeconds(1)).call();
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
- // If the startTime and endTime straddle a DST shift (the Coord is in "America/Los_Angeles"), then we need to adjust for
- // that because startTime and endTime assume GMT
- next = new Date(startTime.getTime() + TIME_IN_DAY);
- tz = TimeZone.getTimeZone(job.getTimeZone());
- next.setTime(next.getTime() + DaylightOffsetCalculator.getDSTOffset(tz, startTime, next));
+ Date next = new Date(startTime.getTime() + TIME_IN_DAY);
+ adjustExpectedMaterializationDateForDSTSwitch(next, startTime, job);
assertEquals(next, job.getNextMaterializedTime());
+ }
+ public void testMaterializationLookupMinute() throws Exception {
// for current job in min, should not exceed hour windows
- startTime = new Date(new Date().getTime());
- endTime = new Date(startTime.getTime() + TIME_IN_HOURS * 24);
- job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
+ Date startTime = new Date(new Date().getTime());
+ Date endTime = new Date(startTime.getTime() + TIME_IN_HOURS * 24);
+ CoordinatorJobBean job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
job.setMatThrottling(20);
job.setFrequency("5");
job.setTimeUnitStr("MINUTE");
CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB, job);
new CoordMaterializeTransitionXCommand(job.getId(), hoursToSeconds(1)).call();
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
- // If the startTime and endTime straddle a DST shift (the Coord is in "America/Los_Angeles"), then we need to adjust for
- // that because startTime and endTime assume GMT
- next = new Date(startTime.getTime() + TIME_IN_HOURS);
- tz = TimeZone.getTimeZone(job.getTimeZone());
- next.setTime(next.getTime() + DaylightOffsetCalculator.getDSTOffset(tz, startTime, next));
+ Date next = new Date(startTime.getTime() + TIME_IN_HOURS);
+ adjustExpectedMaterializationDateForDSTSwitch(next, startTime, job);
assertEquals(next, job.getNextMaterializedTime());
+ }
- // for current job in hour, should not exceed hour windows
- startTime = new Date(new Date().getTime());
- endTime = new Date(startTime.getTime() + TIME_IN_DAY * 24);
- job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
+ public void testMaterializationLookupRelativeDays3() throws Exception {
+ Date startTime = new Date(new Date().getTime());
+ Date endTime = new Date(startTime.getTime() + TIME_IN_DAY * 24);
+ CoordinatorJobBean job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
job.setMatThrottling(20);
job.setFrequency("1");
job.setTimeUnitStr("DAY");
CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB, job);
new CoordMaterializeTransitionXCommand(job.getId(), hoursToSeconds(1)).call();
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
- // If the startTime and endTime straddle a DST shift (the Coord is in "America/Los_Angeles"), then we need to adjust for
- // that because startTime and endTime assume GMT
- next = new Date(startTime.getTime() + TIME_IN_DAY);
- tz = TimeZone.getTimeZone(job.getTimeZone());
- next.setTime(next.getTime() + DaylightOffsetCalculator.getDSTOffset(tz, startTime, next));
+ Date next = new Date(startTime.getTime() + TIME_IN_DAY);
+ adjustExpectedMaterializationDateForDSTSwitch(next, startTime, job);
assertEquals(next, job.getNextMaterializedTime());
+ }
- // Case: job started in Daylight time, and materialization is in
- // Standard time
- startTime = getDaylightCalendar().getTime();
- endTime = new Date(startTime.getTime() + TIME_IN_DAY * 3);
- job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
+ public void testMaterializationLookupDaylightStartStandardMaterialization() throws Exception {
+ Date startTime = getDaylightCalendar().getTime();
+ Date endTime = new Date(startTime.getTime() + TIME_IN_DAY * 3);
+ CoordinatorJobBean job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
job.setNextMaterializedTime(startTime);
job.setMatThrottling(10);
job.setFrequency("1");
@@ -754,21 +739,17 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB, job);
new CoordMaterializeTransitionXCommand(job.getId(), hoursToSeconds(1)).call();
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
- // If the startTime and endTime straddle a DST shift (the Coord is in
- // "America/Los_Angeles"), then we need to adjust for
- // that because startTime and endTime assume GMT
- next = new Date(startTime.getTime() + TIME_IN_DAY * 3);
- tz = TimeZone.getTimeZone(job.getTimeZone());
- next.setTime(next.getTime() + DaylightOffsetCalculator.getDSTOffset(tz, startTime, next));
+ Date next = new Date(startTime.getTime() + TIME_IN_DAY * 3);
+ adjustExpectedMaterializationDateForDSTSwitch(next, startTime, job);
assertEquals(next, job.getNextMaterializedTime());
+ }
- // Case: job started in Standard time, and materialization is in
- // Daylight time
+ public void testMaterializationLookupStandardTimeStartDaylightMaterialization() throws Exception {
Calendar c = getStandardCalendar();
- startTime = c.getTime();
- endTime = new Date(startTime.getTime() + TIME_IN_DAY * 3);
- job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
+ Date startTime = c.getTime();
+ Date endTime = new Date(startTime.getTime() + TIME_IN_DAY * 3);
+ CoordinatorJobBean job = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, startTime, endTime, false, false, 0);
job.setNextMaterializedTime(startTime);
job.setMatThrottling(10);
job.setFrequency("1");
@@ -776,24 +757,32 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB, job);
new CoordMaterializeTransitionXCommand(job, hoursToSeconds(1), startTime, endTime).call();
job = jpaService.execute(new CoordJobGetJPAExecutor(job.getId()));
- // If the startTime and endTime straddle a DST shift (the Coord is in
- // "America/Los_Angeles"), then we need to adjust for
- // that because startTime and endTime assume GMT
- next = new Date(startTime.getTime() + TIME_IN_DAY * 4);
- tz = TimeZone.getTimeZone(job.getTimeZone());
- next.setTime(next.getTime() + DaylightOffsetCalculator.getDSTOffset(tz, startTime, next));
+ Date next = new Date(startTime.getTime() + TIME_IN_DAY * 4);
+ adjustExpectedMaterializationDateForDSTSwitch(next, startTime, job);
assertEquals(next, job.getNextMaterializedTime());
+ }
+ private void adjustExpectedMaterializationDateForDSTSwitch(Date date, Date startTime, CoordinatorJobBean job) {
+ // If the startTime and endTime straddle a DST shift (the Coord is in "America/Los_Angeles"), then we need to adjust for
+ // that because startTime and endTime assume GMT
+ TimeZone tz = TimeZone.getTimeZone(job.getTimeZone());
+ long offset = DaylightOffsetCalculator.getDSTOffset(tz, startTime, date);
+ Date currentDate = new Date();
+ Date shiftedDate = new Date(date.getTime() + offset);
+ if (offset>0 && date.before(currentDate) && shiftedDate.after(currentDate)) {
+ offset -= TIME_IN_DAY;
+ }
+ date.setTime(date.getTime() + offset);
}
- Calendar getDaylightCalendar() {
+ private Calendar getDaylightCalendar() {
final Calendar daylight = Calendar.getInstance();
daylight.set(2012, 10, 2, 15, 28, 00);
return daylight;
}
- Calendar getStandardCalendar() {
+ private Calendar getStandardCalendar() {
final Calendar standard = Calendar.getInstance();
standard.set(2013, 2, 9, 15, 28, 00);
@@ -1033,11 +1022,8 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
CoordinatorJobBean cronJob = addRecordToCoordJobTable(CoordinatorJob.Status.RUNNING, startTime, endTime, null,
cronFrequency);
- new CoordMaterializeTransitionXCommand(elJob.getId(), oneHourInSeconds).call();
- new CoordMaterializeTransitionXCommand(cronJob.getId(), oneHourInSeconds).call();
-
-
- JPAService jpaService = Services.get().get(JPAService.class);
+ new CoordMaterializeTransitionXCommand(elJob.getId(), TIME_IN_HOURS).call();
+ new CoordMaterializeTransitionXCommand(cronJob.getId(), TIME_IN_HOURS).call();
elJob = jpaService.execute(new CoordJobGetJPAExecutor(elJob.getId()));
cronJob = jpaService.execute(new CoordJobGetJPAExecutor(cronJob.getId()));
@@ -1052,9 +1038,8 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
private void testCronNominalTimes (Date startTime, Date endTime, Date[] nominalTimes, String cronFrequency) throws Exception {
CoordinatorJobBean cronJob = addRecordToCoordJobTable(CoordinatorJob.Status.RUNNING, startTime, endTime, null,
cronFrequency);
- new CoordMaterializeTransitionXCommand(cronJob.getId(), oneHourInSeconds).call();
+ new CoordMaterializeTransitionXCommand(cronJob.getId(), TIME_IN_HOURS).call();
- JPAService jpaService = Services.get().get(JPAService.class);
cronJob = jpaService.execute(new CoordJobGetJPAExecutor(cronJob.getId()));
checkCoordActionsNominalTime(cronJob.getId(), nominalTimes.length, nominalTimes);
assertTrue("Cron job materialization should be complete", cronJob.isDoneMaterialization());
@@ -1064,9 +1049,8 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
throws Exception {
CoordinatorJobBean elJob = addRecordToCoordJobTable(CoordinatorJob.Status.RUNNING, startTime, endTime, null,
elFrequency, elTimeUnit);
- new CoordMaterializeTransitionXCommand(elJob.getId(), oneHourInSeconds).call();
+ new CoordMaterializeTransitionXCommand(elJob.getId(), TIME_IN_HOURS).call();
- JPAService jpaService = Services.get().get(JPAService.class);
elJob = jpaService.execute(new CoordJobGetJPAExecutor(elJob.getId()));
checkCoordActionsNominalTime(elJob.getId(), nominalTimes.length, nominalTimes);
assertTrue("EL job materialization should be complete", elJob.isDoneMaterialization());
@@ -1228,7 +1212,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
private void checkCoordJobs(String jobId, CoordinatorJob.Status expectedStatus) {
try {
- JPAService jpaService = Services.get().get(JPAService.class);
CoordinatorJobBean job = jpaService.execute(new CoordJobGetJPAExecutor(jobId));
if (job.getStatus() != expectedStatus) {
fail("CoordJobMatLookupCommand didn't work because the status for job id"
@@ -1242,7 +1225,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
private void checkCoordWaiting(String jobId, int expectedValue) {
try {
- JPAService jpaService = Services.get().get(JPAService.class);
int numWaitingActions = jpaService.execute(new CoordJobGetRunningActionsCountJPAExecutor(jobId));
assert (numWaitingActions <= expectedValue);
}
@@ -1253,7 +1235,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
private CoordinatorActionBean checkCoordAction(String actionId) throws JPAExecutorException {
long lastSeqId[] = new long[1];
- JPAService jpaService = Services.get().get(JPAService.class);
List<SLAEventBean> slaEventList = jpaService.execute(new SLAEventsGetForSeqIdJPAExecutor(-1, 10, lastSeqId));
if (slaEventList.size() == 0) {
@@ -1268,15 +1249,14 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
}
private CoordinatorActionBean getCoordAction(String actionId) throws JPAExecutorException {
- JPAService jpaService = Services.get().get(JPAService.class);
CoordinatorActionBean actionBean;
+ jpaService = Services.get().get(JPAService.class);
actionBean = jpaService.execute(new CoordActionGetJPAExecutor(actionId));
return actionBean;
}
private void checkCoordActionsNominalTime(String jobId, int number, Date[] nominalTimes) {
try {
- JPAService jpaService = Services.get().get(JPAService.class);
List<CoordinatorActionBean> actions = jpaService.execute(new CoordJobGetActionsSubsetJPAExecutor(jobId,
null, 1, 1000, false));
@@ -1297,7 +1277,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
private void checkCoordActionsStatus(String jobId, CoordinatorActionBean.Status[] statuses) {
try {
- JPAService jpaService = Services.get().get(JPAService.class);
List<CoordinatorActionBean> actions = jpaService.execute(new CoordJobGetActionsSubsetJPAExecutor(jobId,
null, 1, 1000, false));
@@ -1318,7 +1297,6 @@ public class TestCoordMaterializeTransitionXCommand extends XDataTestCase {
private void checkCoordActionsTimeout(String actionId, int expected) {
try {
- JPAService jpaService = Services.get().get(JPAService.class);
CoordinatorActionBean action = jpaService.execute(new CoordActionGetJPAExecutor(actionId));
assertEquals(action.getTimeOut(), expected);
}
http://git-wip-us.apache.org/repos/asf/oozie/blob/34289c4c/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 7ed83bd..ae54814 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
-- Oozie 5.2.0 release (trunk - unreleased)
+OOZIE-3380 TestCoordMaterializeTransitionXCommand failure after DST change date (asalamon74 via kmarton)
OOZIE-3338 [build] Remove SVN references (asalamon74 via andras.piros)
OOZIE-3378 [core] Coordinator action's status is SUBMITTED after E1003 error (asalamon74 via andras.piros)
OOZIE-3373 [core] Logging of lock information is inconsistent (Prabhu Joseph via andras.piros)