You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by vi...@apache.org on 2013/02/16 02:55:31 UTC
svn commit: r1446835 -
/oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/coord/TestCoordELFunctions.java
Author: virag
Date: Sat Feb 16 01:55:31 2013
New Revision: 1446835
URL: http://svn.apache.org/r1446835
Log:
Adding missing commit from 1028 to hcat-intre
Modified:
oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/coord/TestCoordELFunctions.java
Modified: oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/coord/TestCoordELFunctions.java
URL: http://svn.apache.org/viewvc/oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/coord/TestCoordELFunctions.java?rev=1446835&r1=1446834&r2=1446835&view=diff
==============================================================================
--- oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/coord/TestCoordELFunctions.java (original)
+++ oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/coord/TestCoordELFunctions.java Sat Feb 16 01:55:31 2013
@@ -796,6 +796,109 @@ public class TestCoordELFunctions extend
}
}
+ public void testOffset() throws Exception {
+ init("coord-action-create");
+ String expr = "${coord:offset(-1440, \"MINUTE\")}";
+ assertEquals("2009-09-08T23:59Z", CoordELFunctions.evalAndWrap(eval, expr));
+ expr = "${coord:offset(-24, \"HOUR\")}";
+ assertEquals("2009-09-08T23:59Z", CoordELFunctions.evalAndWrap(eval, expr));
+ expr = "${coord:offset(-1, \"DAY\")}";
+ assertEquals("2009-09-08T23:59Z", CoordELFunctions.evalAndWrap(eval, expr));
+ expr = "${coord:offset(1, \"MONTH\")}";
+ assertEquals("2009-10-09T23:59Z", CoordELFunctions.evalAndWrap(eval, expr));
+ expr = "${coord:offset(1, \"YEAR\")}";
+ assertEquals("2010-09-09T23:59Z", CoordELFunctions.evalAndWrap(eval, expr));
+ expr = "${coord:offset(-10, \"DAY\")}";
+ assertEquals("", CoordELFunctions.evalAndWrap(eval, expr));
+
+ appInst.setNominalTime(DateUtils.parseDateOozieTZ("2015-01-02T00:45Z"));
+ ds.setFrequency(1);
+ ds.setTimeUnit(TimeUnit.YEAR);
+ ds.setInitInstance(DateUtils.parseDateOozieTZ("2010-01-02T00:01Z"));
+ ds.setTimeZone(DateUtils.getTimeZone("America/Los_Angeles"));
+ // Year
+ expr = "${coord:offset(0, \"YEAR\")} ${coord:offset(1, \"YEAR\")} ${coord:offset(-1, \"YEAR\")}"
+ + " ${coord:offset(-3, \"YEAR\")}";
+ assertEquals("2015-01-02T00:01Z 2016-01-02T00:01Z 2014-01-02T00:01Z 2012-01-02T00:01Z", eval.evaluate(expr, String.class));
+ // Month
+ expr = "${coord:offset(0, \"MONTH\")} ${coord:offset(12, \"MONTH\")} ${coord:offset(-12, \"MONTH\")}"
+ + " ${coord:offset(-36, \"MONTH\")}";
+ assertEquals("2015-01-02T00:01Z 2016-01-02T00:01Z 2014-01-02T00:01Z 2012-01-02T00:01Z", eval.evaluate(expr, String.class));
+ // Day
+ expr = "${coord:offset(0, \"DAY\")} ${coord:offset(365, \"DAY\")} ${coord:offset(-365, \"DAY\")}"
+ + " ${coord:offset(-1096, \"DAY\")}"; // its -1096 instead of -1095 because of DST (extra 1 day)
+ assertEquals("2015-01-02T00:01Z 2016-01-02T00:01Z 2014-01-02T00:01Z 2012-01-02T00:01Z", eval.evaluate(expr, String.class));
+ // Hour
+ expr = "${coord:offset(0, \"HOUR\")} ${coord:offset(8760, \"HOUR\")} ${coord:offset(-8760, \"HOUR\")}"
+ + " ${coord:offset(-26304, \"HOUR\")}"; // its -26304 instead of -26280 because of DST (extra 24 hours)
+ assertEquals("2015-01-02T00:01Z 2016-01-02T00:01Z 2014-01-02T00:01Z 2012-01-02T00:01Z", eval.evaluate(expr, String.class));
+ // Minute
+ expr = "${coord:offset(0, \"MINUTE\")} ${coord:offset(525600, \"MINUTE\")} ${coord:offset(-525600, \"MINUTE\")}"
+ + " ${coord:offset(-1578240, \"MINUTE\")}"; // its -1578240 instead of -1576800 because of DST (extra 1440 minutes)
+ assertEquals("2015-01-02T00:01Z 2016-01-02T00:01Z 2014-01-02T00:01Z 2012-01-02T00:01Z", eval.evaluate(expr, String.class));
+
+ appInst.setNominalTime(DateUtils.parseDateOozieTZ("2015-01-02T00:45Z"));
+ ds.setFrequency(1);
+ ds.setTimeUnit(TimeUnit.MINUTE);
+ ds.setInitInstance(DateUtils.parseDateOozieTZ("2010-01-02T00:01Z"));
+ ds.setTimeZone(DateUtils.getTimeZone("America/Los_Angeles"));
+ // Minute
+ expr = "${coord:offset(0, \"MINUTE\")} ${coord:offset(1, \"MINUTE\")} ${coord:offset(-1, \"MINUTE\")}"
+ + " ${coord:offset(-3, \"MINUTE\")}";
+ assertEquals("2015-01-02T00:45Z 2015-01-02T00:46Z 2015-01-02T00:44Z 2015-01-02T00:42Z", eval.evaluate(expr, String.class));
+ // Hour
+ expr = "${coord:offset(0, \"HOUR\")} ${coord:offset(1, \"HOUR\")} ${coord:offset(-1, \"HOUR\")}"
+ + " ${coord:offset(-3, \"HOUR\")}";
+ assertEquals("2015-01-02T00:45Z 2015-01-02T01:45Z 2015-01-01T23:45Z 2015-01-01T21:45Z", eval.evaluate(expr, String.class));
+ // Day
+ expr = "${coord:offset(0, \"DAY\")} ${coord:offset(1, \"DAY\")} ${coord:offset(-1, \"DAY\")}"
+ + " ${coord:offset(-3, \"DAY\")}";
+ assertEquals("2015-01-02T00:45Z 2015-01-03T00:45Z 2015-01-01T00:45Z 2014-12-30T00:45Z", eval.evaluate(expr, String.class));
+ // Month
+ expr = "${coord:offset(0, \"MONTH\")} ${coord:offset(1, \"MONTH\")} ${coord:offset(-1, \"MONTH\")}"
+ + " ${coord:offset(-3, \"MONTH\")}";
+ assertEquals("2015-01-02T00:45Z 2015-02-02T00:45Z 2014-12-02T00:45Z 2014-10-01T23:45Z", eval.evaluate(expr, String.class));
+ // Year
+ expr = "${coord:offset(0, \"YEAR\")} ${coord:offset(1, \"YEAR\")} ${coord:offset(-1, \"YEAR\")}"
+ + " ${coord:offset(-3, \"YEAR\")}";
+ assertEquals("2015-01-02T00:45Z 2016-01-02T00:45Z 2014-01-02T00:45Z 2012-01-02T00:45Z", eval.evaluate(expr, String.class));
+
+ // Test rewinding when the given offset isn't a multiple of the frequency
+ appInst.setNominalTime(DateUtils.parseDateOozieTZ("2015-01-02T00:45Z"));
+ ds.setFrequency(4);
+ ds.setTimeUnit(TimeUnit.HOUR);
+ ds.setInitInstance(DateUtils.parseDateOozieTZ("2010-01-02T00:01Z"));
+ ds.setTimeZone(DateUtils.getTimeZone("America/Los_Angeles"));
+ expr = "${coord:offset(5, \"MINUTE\")}";
+ assertEquals("2015-01-02T00:01Z", CoordELFunctions.evalAndWrap(eval, expr));
+ expr = "${coord:offset(1, \"HOUR\")}";
+ assertEquals("2015-01-02T00:01Z", CoordELFunctions.evalAndWrap(eval, expr));
+ expr = "${coord:offset(7, \"HOUR\")}";
+ assertEquals("2015-01-02T04:01Z", CoordELFunctions.evalAndWrap(eval, expr));
+ expr = "${coord:offset(-2, \"HOUR\")}";
+ assertEquals("2015-01-01T20:01Z", CoordELFunctions.evalAndWrap(eval, expr));
+ expr = "${coord:offset(-43825, \"HOUR\")}";
+ assertEquals("", CoordELFunctions.evalAndWrap(eval, expr));
+
+ // "blah" is not a valid TimeUnit
+ expr = "${coord:offset(1, \"blah\")}";
+ try {
+ CoordELFunctions.evalAndWrap(eval, expr);
+ fail("eval of " + expr + " should have thrown an exception");
+ } catch(Exception e) {
+ assertTrue(e.getMessage().contains("Unable to evaluate"));
+ }
+
+ // 4.5 is not a valid integer
+ expr = "${coord:offset(4.5, \"blah\")}";
+ try {
+ CoordELFunctions.evalAndWrap(eval, expr);
+ fail("eval of " + expr + " should have thrown an exception");
+ } catch(Exception e) {
+ assertTrue(e.getMessage().contains("Unable to evaluate"));
+ }
+ }
+
public void testLatest() throws Exception {
init("coord-action-start");
String expr = "${coord:latest(0)}";