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());
        }
Beispiel #7
0
        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));
 }