public void By_default_it_is_not_reschedulable_timer()
        {
            var scheduleTimerDecision = new ScheduleTimerDecision(Identity.Timer("timer"), TimeSpan.FromSeconds(2.6));

            var swfDecision = scheduleTimerDecision.Decision();

            Assert.That(swfDecision.StartTimerDecisionAttributes.Control.FromJson <TimerScheduleData>().IsARescheduleTimer, Is.EqualTo(false));
        }
        public static void AssertRescheduleTimer(this WorkflowDecision decision, ScheduleId scheduleId, TimeSpan timeout)
        {
            Assert.That(decision, Is.EqualTo(ScheduleTimerDecision.RescheduleTimer(scheduleId, timeout)));
            var swfDecision = decision.SwfDecision();
            var timerData   = swfDecision.StartTimerDecisionAttributes.Control.As <TimerScheduleData>();

            Assert.That(timerData.TimerType, Is.EqualTo(TimerType.Reschedule));
            Assert.That(swfDecision.StartTimerDecisionAttributes.StartToFireTimeout, Is.EqualTo(timeout.TotalSeconds.ToString()));
        }
        public void Should_round_up_time_to_fire_duration()
        {
            var scheduleTimerDecision = new ScheduleTimerDecision(Identity.Timer("timer"), TimeSpan.FromSeconds(2.6), true);

            var swfDecision = scheduleTimerDecision.Decision();

            Assert.That(swfDecision.DecisionType, Is.EqualTo(DecisionType.StartTimer));
            Assert.That(swfDecision.StartTimerDecisionAttributes.StartToFireTimeout, Is.EqualTo("3"));
        }
        public static void AssertSignalTimer(this WorkflowDecision decision, ScheduleId scheduleId, long triggerId, TimeSpan timeout)
        {
            Assert.That(decision, Is.EqualTo(ScheduleTimerDecision.SignalTimer(scheduleId, triggerId, timeout)));
            var swfDecision = decision.SwfDecision();
            var timerData   = swfDecision.StartTimerDecisionAttributes.Control.As <TimerScheduleData>();

            Assert.That(timerData.TimerType, Is.EqualTo(TimerType.SignalTimer));
            Assert.That(timerData.SignalTriggerEventId, Is.EqualTo(triggerId));
            var startToFireTimeout = TimeSpan.FromSeconds(Double.Parse(swfDecision.StartTimerDecisionAttributes.StartToFireTimeout));

            Assert.That((startToFireTimeout - timeout).Duration(), Is.LessThan(TimeSpan.FromSeconds(1)));
        }
Пример #5
0
 private IEnumerable <WorkflowDecision> AllNonCompletingDecisions()
 {
     return(new WorkflowDecision[]
     {
         new ScheduleActivityDecision(Identity.New("id", "1.0").ScheduleId()),
         ScheduleTimerDecision.WorkflowItem(Identity.Timer("timer").ScheduleId(), TimeSpan.FromSeconds(2)),
         new CancelActivityDecision(Identity.New("newid", "1.0").ScheduleId()),
         new CancelTimerDecision(Identity.Timer("first").ScheduleId()),
         new ScheduleLambdaDecision(Identity.Lambda("name").ScheduleId(), "input"),
         new ScheduleChildWorkflowDecision(Identity.New("w", "v").ScheduleId(), "input"),
     });
 }
        public void Should_return_aws_decision_to_schedule_timer()
        {
            var timerIdentity         = Identity.Timer("timer");
            var scheduleTimerDecision = new ScheduleTimerDecision(timerIdentity, TimeSpan.FromSeconds(2), true);

            var swfDecision = scheduleTimerDecision.Decision();

            Assert.That(swfDecision.DecisionType, Is.EqualTo(DecisionType.StartTimer));
            Assert.That(swfDecision.StartTimerDecisionAttributes.TimerId, Is.EqualTo(timerIdentity.Id.ToString()));
            Assert.That(swfDecision.StartTimerDecisionAttributes.StartToFireTimeout, Is.EqualTo("2"));
            Assert.That(swfDecision.StartTimerDecisionAttributes.Control.FromJson <TimerScheduleData>().IsARescheduleTimer, Is.EqualTo(true));
            Assert.That(swfDecision.StartTimerDecisionAttributes.Control.FromJson <TimerScheduleData>().TimerName, Is.EqualTo("timer"));
        }
Пример #7
0
        public void AWS_decision_for_workflow_item_timer()
        {
            var scheduleId            = Identity.Timer("timer").ScheduleId();
            var scheduleTimerDecision = ScheduleTimerDecision.WorkflowItem(scheduleId, TimeSpan.FromSeconds(2));

            var swfDecision = scheduleTimerDecision.SwfDecision();

            Assert.That(swfDecision.DecisionType, Is.EqualTo(DecisionType.StartTimer));
            Assert.That(swfDecision.StartTimerDecisionAttributes.TimerId, Is.EqualTo(scheduleId.ToString()));
            Assert.That(swfDecision.StartTimerDecisionAttributes.StartToFireTimeout, Is.EqualTo("2"));
            Assert.That(swfDecision.StartTimerDecisionAttributes.Control.As <TimerScheduleData>().TimerType, Is.EqualTo(TimerType.WorkflowItem));
            Assert.That(swfDecision.StartTimerDecisionAttributes.Control.As <TimerScheduleData>().TimerName, Is.EqualTo("timer"));
        }
Пример #8
0
        public void Hashcode_test()
        {
            var retimer  = ScheduleTimerDecision.RescheduleTimer(Identity.Timer("timer1").ScheduleId(), TimeSpan.FromSeconds(2));
            var wtimer   = ScheduleTimerDecision.WorkflowItem(Identity.Timer("timer1").ScheduleId(), TimeSpan.FromSeconds(2));
            var sitimer  = ScheduleTimerDecision.SignalTimer(Identity.Timer("timer1").ScheduleId(), 1, TimeSpan.FromSeconds(2));
            var retimer2 = ScheduleTimerDecision.RescheduleTimer(Identity.Timer("timer2").ScheduleId(), TimeSpan.FromSeconds(2));



            Assert.That(retimer.GetHashCode(), Is.EqualTo(wtimer.GetHashCode()));
            Assert.That(retimer.GetHashCode(), Is.EqualTo(sitimer.GetHashCode()));
            Assert.That(retimer.GetHashCode(), Is.Not.EqualTo(retimer2.GetHashCode()));
        }
Пример #9
0
        public void AWS_decision_for_signal_timer()
        {
            var  scheduleId            = Identity.Timer("timer").ScheduleId();
            long triggerEventId        = 10;
            var  scheduleTimerDecision = ScheduleTimerDecision.SignalTimer(scheduleId, triggerEventId, TimeSpan.FromSeconds(2));

            var swfDecision = scheduleTimerDecision.SwfDecision();

            Assert.That(swfDecision.DecisionType, Is.EqualTo(DecisionType.StartTimer));
            Assert.That(swfDecision.StartTimerDecisionAttributes.TimerId, Is.EqualTo(scheduleId.ToString()));
            Assert.That(swfDecision.StartTimerDecisionAttributes.StartToFireTimeout, Is.EqualTo("2"));
            var timerScheduleData = swfDecision.StartTimerDecisionAttributes.Control.As <TimerScheduleData>();

            Assert.That(timerScheduleData.TimerType, Is.EqualTo(TimerType.SignalTimer));
            Assert.That(timerScheduleData.TimerName, Is.EqualTo("timer"));
            Assert.That(timerScheduleData.SignalTriggerEventId, Is.EqualTo(triggerEventId));
        }
Пример #10
0
        public void Equality_tests()
        {
            var scheduleId1 = Identity.Timer("timer1").ScheduleId();
            var scheduleId2 = Identity.Timer("timer2").ScheduleId();

            Assert.IsTrue(ScheduleTimerDecision.RescheduleTimer(scheduleId1, TimeSpan.FromSeconds(2))
                          .Equals(ScheduleTimerDecision.RescheduleTimer(scheduleId1, TimeSpan.FromSeconds(3))));

            Assert.IsTrue(ScheduleTimerDecision.WorkflowItem(scheduleId1, TimeSpan.FromSeconds(2))
                          .Equals(ScheduleTimerDecision.RescheduleTimer(scheduleId1, TimeSpan.FromSeconds(2))));

            Assert.IsTrue(ScheduleTimerDecision.SignalTimer(scheduleId1, 0, TimeSpan.FromSeconds(2))
                          .Equals(ScheduleTimerDecision.RescheduleTimer(scheduleId1, TimeSpan.FromSeconds(2))));

            Assert.IsFalse(ScheduleTimerDecision.RescheduleTimer(scheduleId1, TimeSpan.FromSeconds(2))
                           .Equals(ScheduleTimerDecision.RescheduleTimer(scheduleId2, TimeSpan.FromSeconds(2))));

            Assert.IsFalse(ScheduleTimerDecision.RescheduleTimer(scheduleId1, TimeSpan.FromSeconds(2))
                           .Equals(ScheduleTimerDecision.WorkflowItem(scheduleId2, TimeSpan.FromSeconds(2))));
        }