public static Condition fromJson(final Object obj) throws Exception { if (checkerLoader == null) { throw new Exception("Condition Checker loader not initialized!"); } final Map<String, Object> jsonObj = (HashMap<String, Object>) obj; Condition cond = null; try { final Map<String, ConditionChecker> checkers = new HashMap<>(); final List<Object> checkersJson = (List<Object>) jsonObj.get("checkers"); for (final Object oneCheckerJson : checkersJson) { final Map<String, Object> oneChecker = (HashMap<String, Object>) oneCheckerJson; final String type = (String) oneChecker.get("type"); final ConditionChecker ck = checkerLoader.createCheckerFromJson(type, oneChecker.get("checkerJson")); checkers.put(ck.getId(), ck); } final String expr = (String) jsonObj.get("expression"); final Long nextCheckTime = Long.valueOf((String) jsonObj.get("nextCheckTime")); cond = new Condition(checkers, expr, nextCheckTime); } catch (final Exception e) { e.printStackTrace(); logger.error("Failed to recreate condition from json.", e); throw new Exception("Failed to recreate condition from json.", e); } return cond; }
private Condition createExpireCondition(final Schedule s) { final Map<String, ConditionChecker> checkers = new HashMap<>(); final ConditionChecker checker = new BasicTimeChecker("EndTimeChecker_1", s.getFirstSchedTime(), s.getTimezone(), s.getEndSchedTime(), false, false, null, null); checkers.put(checker.getId(), checker); final String expr = checker.getId() + ".eval()"; return new Condition(checkers, expr); }
private Condition getCondition(final BasicTimeChecker timeChecker) { final Map<String, ConditionChecker> checkers = new HashMap<>(); checkers.put(timeChecker.getId(), timeChecker); final String expr = timeChecker.getId() + ".eval()"; return new Condition(checkers, expr); }
private Condition createTriggerCondition(final Schedule s) { final Map<String, ConditionChecker> checkers = new HashMap<>(); final ConditionChecker checker = new BasicTimeChecker("BasicTimeChecker_1", s.getFirstSchedTime(), s.getTimezone(), s.isRecurring(), s.skipPastOccurrences(), s.getPeriod(), s.getCronExpression()); checkers.put(checker.getId(), checker); final String expr = checker.getId() + ".eval()"; final Condition cond = new Condition(checkers, expr); return cond; }
private Trigger createDummyTrigger() { final ConditionChecker alwaysOnChecker = new AlwaysOnChecker("alwaysOn", Boolean.TRUE); final String triggerExpr = alwaysOnChecker.getId() + ".eval()"; final Map<String, ConditionChecker> triggerCheckers = new HashMap<>(); triggerCheckers.put(alwaysOnChecker.getId(), alwaysOnChecker); final Condition triggerCond = new Condition(triggerCheckers, triggerExpr); final TriggerAction triggerAct = new DummyTriggerAction("howdy!"); final List<TriggerAction> actions = new ArrayList<>(); actions.add(triggerAct); final ConditionChecker alwaysOffChecker = new AlwaysOnChecker("alwaysOff", Boolean.FALSE); final String expireExpr = alwaysOffChecker.getId() + ".eval()"; final Map<String, ConditionChecker> expireCheckers = new HashMap<>(); expireCheckers.put(alwaysOffChecker.getId(), alwaysOffChecker); final Condition expireCond = new Condition(expireCheckers, expireExpr); final Trigger t = new Trigger.TriggerBuilder("azkaban", "azkabanTest", triggerCond, expireCond, actions).build(); return t; }
private Trigger createTrigger(final String projName, final String flowName, final String source) { final DateTime now = DateTime.now(); final ConditionChecker checker1 = new BasicTimeChecker("timeChecker1", now.getMillis(), now.getZone(), true, true, Utils.parsePeriodString("1h"), null); final Map<String, ConditionChecker> checkers1 = new HashMap<>(); checkers1.put(checker1.getId(), checker1); final String expr1 = checker1.getId() + ".eval()"; final Condition triggerCond = new Condition(checkers1, expr1); final Condition expireCond = new Condition(checkers1, expr1); final List<TriggerAction> actions = new ArrayList<>(); final TriggerAction action = new ExecuteFlowAction("executeAction", 1, projName, flowName, "azkaban", new ExecutionOptions(), null); actions.add(action); return new Trigger.TriggerBuilder("azkaban", source, triggerCond, expireCond, actions) .build(); }
private Trigger createSelfRegenTrigger() { final ConditionChecker alwaysOnChecker = new AlwaysOnChecker("alwaysOn", Boolean.TRUE); final String triggerExpr = alwaysOnChecker.getId() + ".eval()"; final Map<String, ConditionChecker> triggerCheckers = new HashMap<>(); triggerCheckers.put(alwaysOnChecker.getId(), alwaysOnChecker); final Condition triggerCond = new Condition(triggerCheckers, triggerExpr); final TriggerAction triggerAct = new CreateTriggerAction("dummyTrigger", createDummyTrigger()); final List<TriggerAction> actions = new ArrayList<>(); actions.add(triggerAct); final ConditionChecker alwaysOffChecker = new AlwaysOnChecker("alwaysOff", Boolean.FALSE); final String expireExpr = alwaysOffChecker.getId() + ".eval()"; final Map<String, ConditionChecker> expireCheckers = new HashMap<>(); expireCheckers.put(alwaysOffChecker.getId(), alwaysOffChecker); final Condition expireCond = new Condition(expireCheckers, expireExpr); final Trigger t = new Trigger.TriggerBuilder("azkaban", "azkabanTest", triggerCond, expireCond, actions).build(); return t; }
private Trigger createNeverExpireTrigger(final String source, final int threshold) { final Map<String, ConditionChecker> triggerCheckers = new HashMap<>(); final Map<String, ConditionChecker> expireCheckers = new HashMap<>(); final ConditionChecker triggerChecker = new ThresholdChecker(ThresholdChecker.type, threshold); final ConditionChecker endTimeChecker = new BasicTimeChecker("EndTimeCheck_1", 111L, DateTimeZone.UTC, 2536871155000L, false, false, null, null); triggerCheckers.put(triggerChecker.getId(), triggerChecker); expireCheckers.put(endTimeChecker.getId(), endTimeChecker); final String triggerExpr = triggerChecker.getId() + ".eval()"; final String expireExpr = endTimeChecker.getId() + ".eval()"; final Condition triggerCond = new Condition(triggerCheckers, triggerExpr); final Condition expireCond = new Condition(expireCheckers, expireExpr); final Trigger fakeTrigger = new Trigger.TriggerBuilder("azkaban", source, triggerCond, expireCond, getTriggerActions()).build(); fakeTrigger.setResetOnTrigger(false); fakeTrigger.setResetOnExpire(true); return fakeTrigger; }
private Trigger createPeriodAndEndCheckerTrigger(final long currMillis) { final Map<String, ConditionChecker> triggerCheckers = new HashMap<>(); final Map<String, ConditionChecker> expireCheckers = new HashMap<>(); // TODO kunkun-tang: 1 second is the minimum unit for {@link org.joda.time.ReadablePeriod}. // In future, we should use some smaller alternative. final ConditionChecker triggerChecker = new BasicTimeChecker("BasicTimeChecker_1", currMillis, DateTimeZone.UTC, true, true, Utils.parsePeriodString("1s"), null); // End time is 3 seconds past now. final ConditionChecker endTimeChecker = new BasicTimeChecker("EndTimeChecker_1", 111L, DateTimeZone.UTC, currMillis + 3000L, false, false, null, null); triggerCheckers.put(triggerChecker.getId(), triggerChecker); expireCheckers.put(endTimeChecker.getId(), endTimeChecker); final String triggerExpr = triggerChecker.getId() + ".eval()"; final String expireExpr = endTimeChecker.getId() + ".eval()"; final Condition triggerCond = new Condition(triggerCheckers, triggerExpr); final Condition expireCond = new Condition(expireCheckers, expireExpr); final Trigger timeTrigger = new Trigger.TriggerBuilder("azkaban", "", triggerCond, expireCond, getTriggerActions()).build(); timeTrigger.setResetOnTrigger(false); timeTrigger.setResetOnExpire(true); return timeTrigger; }
checkers1.put(checker1.getId(), checker1); final String expr1 = checker1.getId() + ".eval()"; final Condition triggerCond = new Condition(checkers1, expr1); final Condition expireCond = new Condition(checkers1, expr1); final List<TriggerAction> actions = new ArrayList<>(); final TriggerAction action =
final String expr = timeChecker.getId() + ".eval()"; final Condition cond = new Condition(checkers, expr);
@Test public void conditionTest() { final Map<String, ConditionChecker> checkers = new HashMap<>(); final ThresholdChecker fake1 = new ThresholdChecker("thresholdchecker1", 10); final ThresholdChecker fake2 = new ThresholdChecker("thresholdchecker2", 20); ThresholdChecker.setVal(15); checkers.put(fake1.getId(), fake1); checkers.put(fake2.getId(), fake2); final String expr1 = "( " + fake1.getId() + ".eval()" + " && " + fake2.getId() + ".eval()" + " )" + " || " + "( " + fake1.getId() + ".eval()" + " && " + "!" + fake2.getId() + ".eval()" + " )"; final String expr2 = "( " + fake1.getId() + ".eval()" + " && " + fake2.getId() + ".eval()" + " )" + " || " + "( " + fake1.getId() + ".eval()" + " && " + fake2.getId() + ".eval()" + " )"; final Condition cond = new Condition(checkers, expr1); System.out.println("Setting expression " + expr1); assertTrue(cond.isMet()); cond.setExpression(expr2); System.out.println("Setting expression " + expr2); assertFalse(cond.isMet()); }
Long nextCheckTime = Long.valueOf((String) jsonObj.get("nextCheckTime")); cond = new Condition(checkers, expr, nextCheckTime);
public static Condition fromJson(final Object obj) throws Exception { if (checkerLoader == null) { throw new Exception("Condition Checker loader not initialized!"); } final Map<String, Object> jsonObj = (HashMap<String, Object>) obj; Condition cond = null; try { final Map<String, ConditionChecker> checkers = new HashMap<>(); final List<Object> checkersJson = (List<Object>) jsonObj.get("checkers"); for (final Object oneCheckerJson : checkersJson) { final Map<String, Object> oneChecker = (HashMap<String, Object>) oneCheckerJson; final String type = (String) oneChecker.get("type"); final ConditionChecker ck = checkerLoader.createCheckerFromJson(type, oneChecker.get("checkerJson")); checkers.put(ck.getId(), ck); } final String expr = (String) jsonObj.get("expression"); final Long nextCheckTime = Long.valueOf((String) jsonObj.get("nextCheckTime")); cond = new Condition(checkers, expr, nextCheckTime); } catch (final Exception e) { e.printStackTrace(); logger.error("Failed to recreate condition from json.", e); throw new Exception("Failed to recreate condition from json.", e); } return cond; }
private Condition createExpireCondition(final Schedule s) { final Map<String, ConditionChecker> checkers = new HashMap<>(); final ConditionChecker checker = new BasicTimeChecker("EndTimeChecker_1", s.getFirstSchedTime(), s.getTimezone(), s.getEndSchedTime(), false, false, null, null); checkers.put(checker.getId(), checker); final String expr = checker.getId() + ".eval()"; return new Condition(checkers, expr); }
private Condition createTriggerCondition (Schedule s) { Map<String, ConditionChecker> checkers = new HashMap<String, ConditionChecker>(); ConditionChecker checker = new BasicTimeChecker("BasicTimeChecker_1", s.getFirstSchedTime(), s.getTimezone(), s.isRecurring(), s.skipPastOccurrences(), s.getPeriod()); checkers.put(checker.getId(), checker); String expr = checker.getId() + ".eval()"; Condition cond = new Condition(checkers, expr); return cond; }
private static Condition createTimeExpireCondition (azkaban.scheduler.Schedule s) { Map<String, ConditionChecker> checkers = new HashMap<String, ConditionChecker>(); ConditionChecker checker = new BasicTimeChecker("BasicTimeChecker_2", s.getFirstSchedTime(), s.getTimezone(), s.isRecurring(), s.skipPastOccurrences(), s.getPeriod()); checkers.put(checker.getId(), checker); String expr = checker.getId() + ".eval()"; Condition cond = new Condition(checkers, expr); return cond; }
private Condition createExpireCondition (Schedule s) { Map<String, ConditionChecker> checkers = new HashMap<String, ConditionChecker>(); ConditionChecker checker = new BasicTimeChecker("BasicTimeChecker_2", s.getFirstSchedTime(), s.getTimezone(), s.isRecurring(), s.skipPastOccurrences(), s.getPeriod()); checkers.put(checker.getId(), checker); String expr = checker.getId() + ".eval()"; Condition cond = new Condition(checkers, expr); return cond; }
private static Condition createTimeTriggerCondition (azkaban.scheduler.Schedule s) { Map<String, ConditionChecker> checkers = new HashMap<String, ConditionChecker>(); ConditionChecker checker = new BasicTimeChecker("BasicTimeChecker_1", s.getFirstSchedTime(), s.getTimezone(), s.isRecurring(), s.skipPastOccurrences(), s.getPeriod()); checkers.put(checker.getId(), checker); String expr = checker.getId() + ".eval()"; Condition cond = new Condition(checkers, expr); return cond; }
private Condition createTriggerCondition(final Schedule s) { final Map<String, ConditionChecker> checkers = new HashMap<>(); final ConditionChecker checker = new BasicTimeChecker("BasicTimeChecker_1", s.getFirstSchedTime(), s.getTimezone(), s.isRecurring(), s.skipPastOccurrences(), s.getPeriod(), s.getCronExpression()); checkers.put(checker.getId(), checker); final String expr = checker.getId() + ".eval()"; final Condition cond = new Condition(checkers, expr); return cond; }