public void ReminderSerializer_must_serialize_Reminder_ScheduleRepeatedly()
        {
            var expected = new Reminder.ScheduleRepeatedly("task-1", TestActor.Path, new TestMessage("hello"), DateTime.UtcNow, TimeSpan.FromMinutes(5), ack: "reply");
            var actual   = Roundtrip(expected);

            actual.Should().Be(expected);
        }
Пример #2
0
        public void when_email_is_scheduled_is_sent_when_is_due_repeatedly()
        {
            var settings = ReminderSettings.Default
                           .WithPersistenceId("email")
                           .WithTickInterval(TimeSpan.FromMilliseconds(500))
                           .WithSnapshotInterval(5);
            var taskId         = Guid.NewGuid().ToString();
            var probe          = CreateTestProbe("email-sender");
            var scheduler      = (TestScheduler)Sys.Scheduler;
            var emailScheduler = Sys.ActorOf(Props.Create(() => new EmailScheduler(settings)).WithDispatcher(CallingThreadDispatcher.Id), "email");
            var when           = DateTime.UtcNow.AddDays(1);
            var job            = new ScheduleEmail("me", "you", "hi");
            var ack            = new Ack(taskId);
            var schedule       = new Reminder.ScheduleRepeatedly(taskId, probe.Ref.Path, job, when, TimeSpan.FromHours(1), ack);

            emailScheduler.Tell(schedule, probe);
            probe.ExpectMsg <Ack>(x => x.Id == taskId);
            scheduler.AdvanceTo(when);

            probe.ExpectMsg <ScheduleEmail>(x => x.Body == job.Body && x.From == job.From && x.To == job.To);

            scheduler.Advance(TimeSpan.FromHours(1));

            probe.ExpectMsg <ScheduleEmail>(x => x.Body == job.Body && x.From == job.From && x.To == job.To);

            scheduler.Advance(TimeSpan.FromHours(1));

            probe.ExpectMsg <ScheduleEmail>(x => x.Body == job.Body && x.From == job.From && x.To == job.To);

            scheduler.Advance(TimeSpan.FromHours(1));

            probe.ExpectMsg <ScheduleEmail>(x => x.Body == job.Body && x.From == job.From && x.To == job.To);
        }