use of com.netflix.conductor.common.run.Workflow in project conductor by Netflix.
the class KafkaPublishTaskMapperTest method getMappedTasks_WithoutTaskDef.
@Test
public void getMappedTasks_WithoutTaskDef() {
// Given
WorkflowTask taskToSchedule = new WorkflowTask();
taskToSchedule.setName("kafka_task");
taskToSchedule.setType(TaskType.KAFKA_PUBLISH.name());
String taskId = IDGenerator.generate();
String retriedTaskId = IDGenerator.generate();
Workflow workflow = new Workflow();
WorkflowDef workflowDef = new WorkflowDef();
workflow.setWorkflowDefinition(workflowDef);
TaskDef taskdefinition = new TaskDef();
String testExecutionNameSpace = "testExecutionNameSpace";
taskdefinition.setExecutionNameSpace(testExecutionNameSpace);
String testIsolationGroupId = "testIsolationGroupId";
taskdefinition.setIsolationGroupId(testIsolationGroupId);
TaskMapperContext taskMapperContext = TaskMapperContext.newBuilder().withWorkflowDefinition(workflowDef).withWorkflowInstance(workflow).withTaskDefinition(taskdefinition).withTaskToSchedule(taskToSchedule).withTaskInput(new HashMap<>()).withRetryCount(0).withRetryTaskId(retriedTaskId).withTaskId(taskId).build();
// when
List<Task> mappedTasks = kafkaTaskMapper.getMappedTasks(taskMapperContext);
// Then
assertEquals(1, mappedTasks.size());
assertEquals(TaskType.KAFKA_PUBLISH.name(), mappedTasks.get(0).getTaskType());
assertEquals(testExecutionNameSpace, mappedTasks.get(0).getExecutionNameSpace());
assertEquals(testIsolationGroupId, mappedTasks.get(0).getIsolationGroupId());
}
use of com.netflix.conductor.common.run.Workflow in project conductor by Netflix.
the class SetVariableTaskMapperTest method getMappedTasks.
@Test
public void getMappedTasks() throws Exception {
WorkflowTask taskToSchedule = new WorkflowTask();
taskToSchedule.setType(TaskType.TASK_TYPE_SET_VARIABLE);
String taskId = IDGenerator.generate();
WorkflowDef workflowDef = new WorkflowDef();
Workflow workflow = new Workflow();
workflow.setWorkflowDefinition(workflowDef);
TaskMapperContext taskMapperContext = TaskMapperContext.newBuilder().withWorkflowDefinition(workflowDef).withWorkflowInstance(workflow).withTaskDefinition(new TaskDef()).withTaskToSchedule(taskToSchedule).withRetryCount(0).withTaskId(taskId).build();
List<Task> mappedTasks = new SetVariableTaskMapper().getMappedTasks(taskMapperContext);
Assert.assertNotNull(mappedTasks);
Assert.assertEquals(1, mappedTasks.size());
Assert.assertEquals(TaskType.TASK_TYPE_SET_VARIABLE, mappedTasks.get(0).getTaskType());
}
use of com.netflix.conductor.common.run.Workflow in project conductor by Netflix.
the class SimpleTaskMapperTest method getMappedTasks.
@Test
public void getMappedTasks() throws Exception {
WorkflowTask taskToSchedule = new WorkflowTask();
taskToSchedule.setName("simple_task");
taskToSchedule.setTaskDefinition(new TaskDef("simple_task"));
String taskId = IDGenerator.generate();
String retriedTaskId = IDGenerator.generate();
WorkflowDef wd = new WorkflowDef();
Workflow w = new Workflow();
w.setWorkflowDefinition(wd);
TaskMapperContext taskMapperContext = TaskMapperContext.newBuilder().withWorkflowDefinition(wd).withWorkflowInstance(w).withTaskDefinition(new TaskDef()).withTaskToSchedule(taskToSchedule).withTaskInput(new HashMap<>()).withRetryCount(0).withRetryTaskId(retriedTaskId).withTaskId(taskId).build();
List<Task> mappedTasks = simpleTaskMapper.getMappedTasks(taskMapperContext);
assertNotNull(mappedTasks);
assertEquals(1, mappedTasks.size());
}
use of com.netflix.conductor.common.run.Workflow in project conductor by Netflix.
the class EventTaskMapperTest method getMappedTasks.
@Test
public void getMappedTasks() throws Exception {
ParametersUtils parametersUtils = Mockito.mock(ParametersUtils.class);
EventTaskMapper eventTaskMapper = new EventTaskMapper(parametersUtils);
WorkflowTask taskToBeScheduled = new WorkflowTask();
taskToBeScheduled.setSink("SQSSINK");
String taskId = IDGenerator.generate();
Map<String, Object> eventTaskInput = new HashMap<>();
eventTaskInput.put("sink", "SQSSINK");
when(parametersUtils.getTaskInput(anyMap(), any(Workflow.class), any(TaskDef.class), anyString())).thenReturn(eventTaskInput);
WorkflowDef wd = new WorkflowDef();
Workflow w = new Workflow();
w.setWorkflowDefinition(wd);
TaskMapperContext taskMapperContext = TaskMapperContext.newBuilder().withWorkflowDefinition(wd).withWorkflowInstance(w).withTaskDefinition(new TaskDef()).withTaskToSchedule(taskToBeScheduled).withRetryCount(0).withTaskId(taskId).build();
List<Task> mappedTasks = eventTaskMapper.getMappedTasks(taskMapperContext);
assertEquals(1, mappedTasks.size());
Task eventTask = mappedTasks.get(0);
assertEquals(taskId, eventTask.getTaskId());
}
use of com.netflix.conductor.common.run.Workflow in project conductor by Netflix.
the class ForkJoinDynamicTaskMapperTest method testDynamicTaskDuplicateTaskRefName.
@Test
public void testDynamicTaskDuplicateTaskRefName() {
WorkflowDef def = new WorkflowDef();
def.setName("DYNAMIC_FORK_JOIN_WF");
def.setDescription(def.getName());
def.setVersion(1);
def.setInputParameters(Arrays.asList("param1", "param2"));
Workflow workflowInstance = new Workflow();
workflowInstance.setWorkflowDefinition(def);
WorkflowTask dynamicForkJoinToSchedule = new WorkflowTask();
dynamicForkJoinToSchedule.setType(TaskType.FORK_JOIN_DYNAMIC.name());
dynamicForkJoinToSchedule.setTaskReferenceName("dynamicfanouttask");
dynamicForkJoinToSchedule.setDynamicForkTasksParam("dynamicTasks");
dynamicForkJoinToSchedule.setDynamicForkTasksInputParamName("dynamicTasksInput");
dynamicForkJoinToSchedule.getInputParameters().put("dynamicTasks", "dt1.output.dynamicTasks");
dynamicForkJoinToSchedule.getInputParameters().put("dynamicTasksInput", "dt1.output.dynamicTasksInput");
WorkflowTask join = new WorkflowTask();
join.setType(TaskType.JOIN.name());
join.setTaskReferenceName("dynamictask_join");
def.getTasks().add(dynamicForkJoinToSchedule);
def.getTasks().add(join);
Map<String, Object> input1 = new HashMap<>();
input1.put("k1", "v1");
WorkflowTask wt2 = new WorkflowTask();
wt2.setName("junit_task_2");
wt2.setTaskReferenceName("xdt1");
Map<String, Object> input2 = new HashMap<>();
input2.put("k2", "v2");
WorkflowTask wt3 = new WorkflowTask();
wt3.setName("junit_task_3");
wt3.setTaskReferenceName("xdt2");
HashMap<String, Object> dynamicTasksInput = new HashMap<>();
dynamicTasksInput.put("xdt1", input1);
dynamicTasksInput.put("xdt2", input2);
dynamicTasksInput.put("dynamicTasks", Arrays.asList(wt2, wt3));
dynamicTasksInput.put("dynamicTasksInput", dynamicTasksInput);
// dynamic
when(parametersUtils.getTaskInput(anyMap(), any(Workflow.class), any(), any())).thenReturn(dynamicTasksInput);
when(objectMapper.convertValue(any(), any(TypeReference.class))).thenReturn(Arrays.asList(wt2, wt3));
Task simpleTask1 = new Task();
simpleTask1.setReferenceTaskName("xdt1");
// Empty list, this is a bad state, workflow should terminate
when(deciderService.getTasksToBeScheduled(workflowInstance, wt2, 0)).thenReturn(Lists.newArrayList());
String taskId = IDGenerator.generate();
TaskMapperContext taskMapperContext = TaskMapperContext.newBuilder().withWorkflowDefinition(def).withWorkflowInstance(workflowInstance).withTaskToSchedule(dynamicForkJoinToSchedule).withRetryCount(0).withTaskId(taskId).withDeciderService(deciderService).build();
expectedException.expect(TerminateWorkflowException.class);
forkJoinDynamicTaskMapper.getMappedTasks(taskMapperContext);
}
Aggregations