@Test public void testSerDeserScheduleInfo() { BasicWorkflowToken token = new BasicWorkflowToken(1); token.setCurrentNode("node"); token.put("tokenKey", "tokenVal"); List<TriggerInfo> triggerInfos = ImmutableList.of( new DefaultProgramStatusTriggerInfo("ns", Specifications.from(new WorkflowAppWithFork()), ProgramType.WORKFLOW, WorkflowAppWithFork.WorkflowWithFork.class.getSimpleName(), RunIds.generate(), ProgramStatus.COMPLETED, token, Collections.emptyMap()), new DefaultPartitionTriggerInfo("ns", "ds", 10, 11), new DefaultTimeTriggerInfo("1 * * * *", 0L) ); TriggeringScheduleInfo scheduleInfo = new DefaultTriggeringScheduleInfo("schedule", "description", triggerInfos, ImmutableMap.of("key", "value")); String scheduleInfoJson = GSON.toJson(scheduleInfo); TriggeringScheduleInfo deserializedScheduleInfo = GSON.fromJson(scheduleInfoJson, TriggeringScheduleInfo.class); Assert.assertEquals(scheduleInfoJson, GSON.toJson(deserializedScheduleInfo)); DefaultProgramStatusTriggerInfo expectedProgramStatusTriggerInfo = (DefaultProgramStatusTriggerInfo) triggerInfos.get(0); DefaultProgramStatusTriggerInfo deserializedProgramStatusTriggerInfo = (DefaultProgramStatusTriggerInfo) deserializedScheduleInfo.getTriggerInfos().get(0); Assert.assertEquals(expectedProgramStatusTriggerInfo.getApplicationSpecification().getName(), deserializedProgramStatusTriggerInfo.getApplicationSpecification().getName()); Assert.assertEquals(expectedProgramStatusTriggerInfo.getWorkflowToken().getAll(), deserializedProgramStatusTriggerInfo.getWorkflowToken().getAll()); } }
@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); } };
@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); } };