Esempio n. 1
0
        public void Schedule_next_item_when_total_number_of_timer_scheduling_exceed_allowed_limit()
        {
            _eventsBuilder.AddProcessedEvents(_eventGraphBuilder.WorkflowStartedEvent());
            _eventsBuilder.AddProcessedEvents(TimerFiredEventGraph(TimerName, false));
            _eventsBuilder.AddProcessedEvents(TimerFiredEventGraph(TimerName, true));
            _eventsBuilder.AddProcessedEvents(TimerFiredEventGraph(TimerName, false));
            _eventsBuilder.AddProcessedEvents(TimerFiredEventGraph(TimerName, true));
            _eventsBuilder.AddNewEvents(TimerFiredEventGraph(TimerName, false));
            var workflow = new WorkflowToRescheduleTimerWithTimerUpToLimit(2);

            var decisions = workflow.Decisions(_eventsBuilder.Result());

            Assert.That(decisions, Is.EqualTo(new[] { new CompleteWorkflowDecision("completed") }));
        }
Esempio n. 2
0
        public void Reschedule_timer_when_total_number_of_timer_scheduling_is_less_than_allowed_limit()
        {
            _eventsBuilder.AddProcessedEvents(_eventGraphBuilder.WorkflowStartedEvent());
            _eventsBuilder.AddProcessedEvents(TimerFiredEventGraph(TimerName, false));
            _eventsBuilder.AddProcessedEvents(TimerFiredEventGraph(TimerName, true));
            _eventsBuilder.AddNewEvents(TimerFiredEventGraph(TimerName, false));
            var workflow = new WorkflowToRescheduleTimerWithTimerUpToLimit(2);

            var decisions = workflow.Decisions(_eventsBuilder.Result()).ToArray();

            var scheduleId = Identity.Timer(TimerName).ScheduleId();

            Assert.That(decisions.Length, Is.EqualTo(1));
            decisions[0].AssertRescheduleTimer(scheduleId, TimeSpan.FromSeconds(2));
        }
Esempio n. 3
0
        public void Reschedule_timer_with_reset_id_when_timer_is_fired_with_reset_schedule_id()
        {
            const string runId = "runid";

            _eventsBuilder.AddProcessedEvents(_eventGraphBuilder.WorkflowStartedEvent());
            _eventsBuilder.AddWorkflowRunId(runId);
            var scheduleId = Identity.Timer(TimerName).ScheduleId(runId + "Reset");

            _eventsBuilder.AddNewEvents(_eventGraphBuilder.TimerFiredGraph(scheduleId, TimeSpan.Zero).ToArray());
            var workflow = new WorkflowToRescheduleTimerWithTimerUpToLimit(2);

            var decisions = workflow.Decisions(_eventsBuilder.Result()).ToArray();

            Assert.That(decisions.Length, Is.EqualTo(1));
            decisions[0].AssertRescheduleTimer(scheduleId, TimeSpan.FromSeconds(2));
        }
Esempio n. 4
0
        public void Consider_only_last_similar_events_for_timer_when_counting_the_rescheduled_events()
        {
            _eventsBuilder.AddProcessedEvents(_eventGraphBuilder.WorkflowStartedEvent());
            _eventsBuilder.AddProcessedEvents(TimerFiredEventGraph(TimerName, false));
            _eventsBuilder.AddProcessedEvents(TimerFiredEventGraph(TimerName, true));
            _eventsBuilder.AddProcessedEvents(TimerFiredEventGraph(TimerName, true));
            _eventsBuilder.AddProcessedEvents(TimerFailedEventGraph(TimerName));
            _eventsBuilder.AddNewEvents(TimerFiredEventGraph(TimerName, false));
            var workflow = new WorkflowToRescheduleTimerWithTimerUpToLimit(2);

            var decisions = workflow.Decisions(_eventsBuilder.Result()).ToArray();

            var scheduleId = Identity.Timer(TimerName).ScheduleId();

            Assert.That(decisions.Length, Is.EqualTo(1));
            decisions[0].AssertRescheduleTimer(scheduleId, TimeSpan.FromSeconds(2));
        }