public void Resume_two_parallel_waiting_workflow_items_when_two_signals_are_received() { var l1 = Identity.Lambda("LambdaA1").ScheduleId(); var l2 = Identity.Lambda("LambdaB1").ScheduleId(); var w1 = _graphBuilder.LambdaCompletedEventGraph(l1, "input", "result"); _builder.AddProcessedEvents(w1); _builder.AddProcessedEvents(_graphBuilder.WaitForSignalEvent(l1, w1.First().EventId, new[] { "Confirmed" }, SignalWaitType.Any)); var w2 = _graphBuilder.LambdaCompletedEventGraph(l2, "input", "result"); _builder.AddProcessedEvents(w2); _builder.AddProcessedEvents(_graphBuilder.WaitForSignalEvent(l2, w2.First().EventId, new[] { "Confirmed" }, SignalWaitType.Any)); var s1 = _graphBuilder.WorkflowSignaledEvent("Confirmed", ""); _builder.AddNewEvents(s1); var s2 = _graphBuilder.WorkflowSignaledEvent("Confirmed", ""); _builder.AddNewEvents(s2); var workflow = new MultipleWorkflowItemsWaitingForSameSignal(); var decision = workflow.Decisions(_builder.Result()); Assert.That(decision, Is.EquivalentTo(new WorkflowDecision[] { new ScheduleLambdaDecision(Identity.Lambda("LambdaA2").ScheduleId(), "input"), new WorkflowItemSignalledDecision(l1, w1.First().EventId, "Confirmed", s1.EventId), new ScheduleLambdaDecision(Identity.Lambda("LambdaB2").ScheduleId(), "input"), new WorkflowItemSignalledDecision(l2, w2.First().EventId, "Confirmed", s2.EventId), })); }
public void Continue_the_executions_of_both_branches_when_two_similar_signals_are_received_along_with_two_wait_for_signal_decisions() { var l1 = Identity.Lambda("LambdaA1").ScheduleId(); var l2 = Identity.Lambda("LambdaB1").ScheduleId(); var w1 = _graphBuilder.LambdaCompletedEventGraph(l1, "input", "result"); _builder.AddNewEvents(w1); var s1 = _graphBuilder.WorkflowSignaledEvent("Confirmed", ""); _builder.AddNewEvents(s1); var w2 = _graphBuilder.LambdaCompletedEventGraph(l2, "input", "result"); _builder.AddNewEvents(w2); var s2 = _graphBuilder.WorkflowSignaledEvent("Confirmed", ""); _builder.AddNewEvents(s2); var workflow = new MultipleWorkflowItemsWaitingForSameSignal(); var decision = workflow.Decisions(_builder.Result()); Assert.That(decision, Is.EqualTo(new WorkflowDecision[] { new WaitForSignalsDecision(new WaitForSignalData { ScheduleId = l1, TriggerEventId = w1.First().EventId }), new ScheduleLambdaDecision(Identity.Lambda("LambdaA2").ScheduleId(), "input"), new WorkflowItemSignalledDecision(l1, w1.First().EventId, "Confirmed", s1.EventId), new WaitForSignalsDecision(new WaitForSignalData { ScheduleId = l2, TriggerEventId = w2.First().EventId }), new ScheduleLambdaDecision(Identity.Lambda("LambdaB2").ScheduleId(), "input"), new WorkflowItemSignalledDecision(l2, w2.First().EventId, "Confirmed", s2.EventId), })); }