@Override public ProgramStatusTrigger build(String namespace, String applicationName, String applicationVersion) { // Inherit environment attributes from the deployed application ProgramId programId = new ApplicationId(namespace, applicationName, applicationVersion).program(programType, programName); return new ProgramStatusTrigger(programId, programStatuses); } }
@Override public boolean isSatisfied(ProgramSchedule schedule, List<Notification> notifications) { return getTriggerSatisfiedResult(notifications, false, new Function<ProgramRunInfo, Boolean>() { @Override public Boolean apply(ProgramRunInfo input) { return true; } }); }
Assert.assertEquals(trigger.getProgramId().getProgram(), ConfigTestApp.WORKFLOW_NAME);
@Override public ProgramStatusTrigger build(String namespace, String applicationName, String applicationVersion) { // Inherit environment attributes from the deployed application ProgramId programId = new ApplicationId(namespace, applicationName, applicationVersion).program(programType, programName); return new ProgramStatusTrigger(programId, programStatuses); } }
@Override public boolean isSatisfied(ProgramSchedule schedule, List<Notification> notifications) { return getTriggerSatisfiedResult(notifications, false, new Function<ProgramRunInfo, Boolean>() { @Override public Boolean apply(ProgramRunInfo input) { return true; } }); }
@Override public Trigger onProgramStatus(String namespace, String application, String appVersion, ProgramType programType, String program, ProgramStatus... programStatuses) { return new ProgramStatusTrigger(new ApplicationId(namespace, application, appVersion) .program(co.cask.cdap.proto.ProgramType.valueOf(programType.name()), program), programStatuses); }
@Override public List<TriggerInfo> getTriggerInfos(final TriggerInfoContext context) { Function<ProgramRunInfo, List<TriggerInfo>> function = new Function<ProgramRunInfo, List<TriggerInfo>>() { @Override public List<TriggerInfo> apply(ProgramRunInfo runInfo) { Map<String, String> runtimeArgs = context.getProgramRuntimeArguments(runInfo.getProgramRunId()); TriggerInfo triggerInfo = new DefaultProgramStatusTriggerInfo(programId.getNamespace(), context.getApplicationSpecification(programId.getParent()), ProgramType.valueOf(programId.getType().name()), programId.getProgram(), RunIds.fromString(runInfo.getProgramRunId().getRun()), runInfo.getProgramStatus(), context.getWorkflowToken(runInfo.getProgramRunId()), runtimeArgs); return Collections.singletonList(triggerInfo); } }; return getTriggerSatisfiedResult(context.getNotifications(), ImmutableList.<TriggerInfo>of(), function); }
@Override public Trigger onProgramStatus(String programNamespace, String application, ProgramType programType, String program, ProgramStatus... programStatuses) { return new ProgramStatusTrigger(new ApplicationId(programNamespace, application) .program(co.cask.cdap.proto.ProgramType.valueOf(programType.name()), program), programStatuses); }
@Override public List<TriggerInfo> getTriggerInfos(final TriggerInfoContext context) { Function<ProgramRunInfo, List<TriggerInfo>> function = new Function<ProgramRunInfo, List<TriggerInfo>>() { @Override public List<TriggerInfo> apply(ProgramRunInfo runInfo) { Map<String, String> runtimeArgs = context.getProgramRuntimeArguments(runInfo.getProgramRunId()); TriggerInfo triggerInfo = new DefaultProgramStatusTriggerInfo(programId.getNamespace(), context.getApplicationSpecification(programId.getParent()), ProgramType.valueOf(programId.getType().name()), programId.getProgram(), RunIds.fromString(runInfo.getProgramRunId().getRun()), runInfo.getProgramStatus(), context.getWorkflowToken(runInfo.getProgramRunId()), runtimeArgs); return Collections.singletonList(triggerInfo); } }; return getTriggerSatisfiedResult(context.getNotifications(), ImmutableList.<TriggerInfo>of(), function); }
@Override public Trigger onProgramStatus(String programNamespace, String application, ProgramType programType, String program, ProgramStatus... programStatuses) { return new ProgramStatusTrigger(new ApplicationId(programNamespace, application) .program(co.cask.cdap.proto.ProgramType.valueOf(programType.name()), program), programStatuses); }
@Override public Trigger onProgramStatus(String application, ProgramType programType, String program, ProgramStatus... programStatuses) { return new ProgramStatusTrigger(new ProgramId(namespaceId.getNamespace(), application, co.cask.cdap.proto.ProgramType.valueOf(programType.name()), program), programStatuses); }
@Override public Trigger onProgramStatus(String namespace, String application, String appVersion, ProgramType programType, String program, ProgramStatus... programStatuses) { return new ProgramStatusTrigger(new ApplicationId(namespace, application, appVersion) .program(co.cask.cdap.proto.ProgramType.valueOf(programType.name()), program), programStatuses); }
@Override public Trigger onProgramStatus(String application, ProgramType programType, String program, ProgramStatus... programStatuses) { return new ProgramStatusTrigger(new ProgramId(namespaceId.getNamespace(), application, co.cask.cdap.proto.ProgramType.valueOf(programType.name()), program), programStatuses); }
final ProgramSchedule sched31 = new ProgramSchedule("sched31", "a program status trigger", PROG3_ID, ImmutableMap.of("propper", "popper"), new ProgramStatusTrigger(PROG1_ID, ProgramStatus.COMPLETED, ProgramStatus.FAILED, ProgramStatus.KILLED), final ProgramSchedule sched22New = new ProgramSchedule(sched22.getName(), "program3 failed schedule", PROG2_ID, ImmutableMap.of("ss", "s"), new ProgramStatusTrigger(PROG3_ID, ProgramStatus.FAILED), ImmutableList.<Constraint>of()); final ProgramSchedule sched31New = new ProgramSchedule(sched31.getName(), "program1 failed schedule", PROG3_ID, ImmutableMap.of("abcd", "efgh"), new ProgramStatusTrigger(PROG1_ID, ProgramStatus.FAILED), ImmutableList.<Constraint>of());
Assert.assertNotNull(store); TransactionExecutor txExecutor = txExecutorFactory.createExecutor(Collections.singleton((TransactionAware) store)); SatisfiableTrigger prog1Trigger = new ProgramStatusTrigger(PROG1_ID, ProgramStatus.COMPLETED, ProgramStatus.FAILED, ProgramStatus.KILLED); SatisfiableTrigger prog2Trigger = new ProgramStatusTrigger(PROG2_ID, ProgramStatus.COMPLETED, ProgramStatus.FAILED, ProgramStatus.KILLED); final ProgramSchedule sched1 = new ProgramSchedule("sched1", "a program status trigger", PROG3_ID,
@Test public void testTriggerCodec() { ProtoTrigger.PartitionTrigger protoPartition = new ProtoTrigger.PartitionTrigger(new DatasetId("test", "myds"), 4); PartitionTrigger partitionTrigger = new PartitionTrigger(new DatasetId("test", "myds"), 4); testSerDeserYieldsTrigger(protoPartition, partitionTrigger); ProtoTrigger.TimeTrigger protoTime = new ProtoTrigger.TimeTrigger("* * * * *"); TimeTrigger timeTrigger = new TimeTrigger("* * * * *"); testSerDeserYieldsTrigger(protoTime, timeTrigger); ProtoTrigger.ProgramStatusTrigger protoProgramStatus = new ProtoTrigger.ProgramStatusTrigger(new ProgramId("test", "myapp", ProgramType.SERVICE, "myprog"), ImmutableSet.of(ProgramStatus.COMPLETED)); ProgramStatusTrigger programStatusTrigger = new ProgramStatusTrigger(new ProgramId("test", "myapp", ProgramType.SERVICE, "myprog"), ImmutableSet.of(ProgramStatus.COMPLETED)); testSerDeserYieldsTrigger(protoProgramStatus, programStatusTrigger); ProtoTrigger.OrTrigger protoOr = ProtoTrigger.or(protoPartition, ProtoTrigger.and(protoTime, protoProgramStatus)); OrTrigger orTrigger = new OrTrigger(partitionTrigger, new AndTrigger(timeTrigger, programStatusTrigger)); testSerDeserYieldsTrigger(protoOr, orTrigger); ProtoTrigger.AndTrigger protoAnd = ProtoTrigger.and(protoOr, protoTime, ProtoTrigger.or(protoPartition, protoProgramStatus)); AndTrigger andTrigger = new AndTrigger(orTrigger, timeTrigger, new OrTrigger(partitionTrigger, programStatusTrigger)); testSerDeserYieldsTrigger(protoAnd, andTrigger); }