public void By_default_execution_exceptions_are_unhandled() { var workflowTasks = WorkflowTask.Create(DecisionTasksWithSignalEvents("token")); var hostedWorkflows = new WorkflowHost(_domain, new[] { new WorkflowThrowsExceptionOnSignal(new Exception("")) }); Assert.ThrowsAsync <Exception>(async() => await workflowTasks.ExecuteAsync(hostedWorkflows)); }
public async Task Throws_exception_when_workflow_history_events_are_queried_after_execution() { var hostedWorkflow = new WorkflowCompleteOnSignal(); var hostedWorkflows = new WorkflowHost(_domain, new[] { hostedWorkflow }); var workflowTasks = WorkflowTask.Create(DecisionTasksWithSignalEvents("token")); await workflowTasks.ExecuteAsync(hostedWorkflows); Assert.Throws <InvalidOperationException>(() => hostedWorkflow.AccessHistoryEvents()); }
public async Task On_execution_send_decisions_to_amazon_swf() { var hostedWorkflows = new WorkflowHost(_domain, new[] { new WorkflowCompleteOnSignal("result") }); var workflowTasks = WorkflowTask.Create(DecisionTasksWithSignalEvents("token")); await workflowTasks.ExecuteAsync(hostedWorkflows); AssertThatInterpretedDecisionsAreSentOverWorkflowClient("token", Times.Once()); }
public async Task Execution_exception_can_handled_to_retry() { var workflowTasks = WorkflowTask.Create(DecisionTasksWithSignalEvents("token")); var hostedWorkflows = new WorkflowHost(_domain, new[] { new WorkflowThrowsExceptionOnSignal(new Exception("")) }); workflowTasks.OnExecutionError(ErrorHandler.Default(e => ErrorAction.Retry)); await workflowTasks.ExecuteAsync(hostedWorkflows); AssertThatInterpretedDecisionsAreSentOverWorkflowClient("token", Times.Once()); }
public void Invalid_history_events_tests() { var decisionTask = new DecisionTask() { Events = new List <HistoryEvent>(), TaskToken = "token" }; Assert.Throws <ArgumentException>(() => WorkflowTask.Create(decisionTask)); decisionTask.Events = new List <HistoryEvent>(); Assert.Throws <ArgumentException>(() => WorkflowTask.Create(decisionTask)); }
public async Task Response_exception_can_be_handled_to_continue() { _amazonWorkflowClient.SetupSequence(c => c.RespondDecisionTaskCompletedAsync(It.IsAny <RespondDecisionTaskCompletedRequest>(), It.IsAny <CancellationToken>())) .Throws(new UnknownResourceException("msg")) .Returns(Task.FromResult(new RespondDecisionTaskCompletedResponse())); var hostedWorkflows = new WorkflowHost(_domain, new[] { new WorkflowCompleteOnSignal() }); hostedWorkflows.OnResponseError(e => ErrorAction.Continue); var workflowTasks = WorkflowTask.Create(DecisionTasksWithSignalEvents("token")); await workflowTasks.ExecuteAsync(hostedWorkflows); AssertThatInterpretedDecisionsAreSentOverWorkflowClient("token", Times.Once()); }
public WorkflowHistoryEvents Result() { var totalEvents = _newEvents.Concat(_processedEvents).ToList(); var decisionTask = new DecisionTask() { Events = totalEvents, WorkflowExecution = new WorkflowExecution() { RunId = _workflowRunId, WorkflowId = _workflowId }, TaskToken = "dummy token" }; if (_newEvents.Count > 0) { decisionTask.PreviousStartedEventId = _newEvents.Last().EventId - 1; decisionTask.StartedEventId = _newEvents.First().EventId; } return(new WorkflowHistoryEvents(WorkflowTask.Create(decisionTask))); }
public void Setup() { var decisionTask = new DecisionTask() { Events = new List <HistoryEvent>(), TaskToken = "token" }; decisionTask.WorkflowExecution = new WorkflowExecution() { WorkflowId = "wid", RunId = "rid" }; decisionTask.Events.Add(new HistoryEvent() { EventId = 5, EventType = EventType.DecisionTaskStarted }); decisionTask.Events.Add(new HistoryEvent() { EventId = 4 }); decisionTask.Events.Add(new HistoryEvent() { EventId = 3 }); decisionTask.Events.Add(new HistoryEvent() { EventId = 2 }); decisionTask.Events.Add(new HistoryEvent() { EventId = 1 }); decisionTask.PreviousStartedEventId = 2; decisionTask.StartedEventId = 5; _workflowTask = WorkflowTask.Create(decisionTask); }
private async Task ExecuteWorkflowOnSignalEvent(Workflow workflow, string workflowId, string runId) { var hostedWorkflows = new WorkflowHost(_domain, new[] { workflow }); var workflowTasks = WorkflowTask.Create(DecisionTasksWithSignalEvents(workflowId, runId)); await workflowTasks.ExecuteAsync(hostedWorkflows); }
private WorkflowTask WorkflowTaskWithEvents(DateTime decisionTaskTime) { return(WorkflowTask.Create(BuildDecisionTask(decisionTaskTime))); }
private WorkflowTask WorkflowTaskWithEvents(DateTime decisionTaskTime, double downloadFactor) { return(WorkflowTask.Create(BuildDecisionTask(decisionTaskTime), downloadFactor)); }