public void CanSafelyDisposeMoreThanOnce()
 {
     using (var dispatcher = new TimeoutDispatcher(new Lazy <IStoreSagas>(() => new Mock <IStoreSagas>().Object), new Lazy <IPublishEvents>(() => new Mock <IPublishEvents>().Object)))
     {
         dispatcher.Dispose();
         dispatcher.Dispose();
     }
 }
 public void CanSafelyDisposeMoreThanOnce()
 {
     using (var dispatcher = new TimeoutDispatcher(new Lazy<IStoreSagas>(() => new Mock<IStoreSagas>().Object), new Lazy<IPublishEvents>(() => new Mock<IPublishEvents>().Object)))
     {
         dispatcher.Dispose();
         dispatcher.Dispose();
     }
 }
Ejemplo n.º 3
0
 public MainLoop(string name)
 {
     dispatcher          = new TimeoutDispatcher(name + " : dispatcher");
     thread              = new Thread(Loop);
     thread.IsBackground = true;
     thread.Name         = name;
     thread.Start();
 }
            public void RescheduleTimer()
            {
                var dispatcher = new TimeoutDispatcher(new Lazy <IStoreSagas>(() => sagaStore.Object), new Lazy <IPublishEvents>(() => eventPublisher.Object), callback => timer = new FakeTimer(callback));

                sagaStore.Setup(mock => mock.GetScheduledTimeouts(It.IsAny <DateTime>())).Returns(new SagaTimeout[0]);
                eventPublisher.Setup(mock => mock.Publish(It.IsAny <IEnumerable <Header> >(), It.IsAny <EventEnvelope>())).Throws(new InvalidOperationException());
                dispatcher.EnsureElapsedTimeoutsDispatched();
                timer.InvokeCallback();

                Assert.True(timer.Changed);
                sagaStore.Verify(mock => mock.GetScheduledTimeouts(It.IsAny <DateTime>()), Times.Once());
            }
            public WhenDispatchingCommits()
            {
                now            = DateTime.UtcNow;
                sagaStore      = new Mock <IStoreSagas>();
                eventPublisher = new Mock <IPublishEvents>();
                sagaTimeout    = new SagaTimeout(typeof(FakeSaga), GuidStrategy.NewGuid(), now.AddMinutes(-5));

                SystemTime.OverrideWith(() => now);

                timeoutDispatcher = new TimeoutDispatcher(new Lazy <IStoreSagas>(() => sagaStore.Object), new Lazy <IPublishEvents>(() => eventPublisher.Object), callback => timer = new FakeTimer(callback));
                sagaStore.Setup(mock => mock.GetScheduledTimeouts(It.IsAny <DateTime>())).Returns(new[] { sagaTimeout });
            }
            public OnPostSave()
            {
                now = DateTime.UtcNow;
                sagaStore = new Mock<IStoreSagas>();
                eventPublisher = new Mock<IPublishEvents>();
                timeoutDispatcher = new TimeoutDispatcher(new Lazy<IStoreSagas>(() => sagaStore.Object), new Lazy<IPublishEvents>(() => eventPublisher.Object), callback => timer = new FakeTimer(callback));
                sagaTimeout = new SagaTimeout(typeof(FakeSaga), GuidStrategy.NewGuid(), now.AddMinutes(5));

                SystemTime.OverrideWith(() => now);

                sagaStore.Setup(mock => mock.GetScheduledTimeouts(It.IsAny<DateTime>())).Returns(new[] { sagaTimeout });

                timer.InvokeCallback();
                timer.Reset();
            }
            public void RescheduleTimer()
            {
                var dispatcher = new TimeoutDispatcher(new Lazy<IStoreSagas>(() => sagaStore.Object), new Lazy<IPublishEvents>(() => eventPublisher.Object), callback => timer = new FakeTimer(callback));

                sagaStore.Setup(mock => mock.GetScheduledTimeouts(It.IsAny<DateTime>())).Returns(new SagaTimeout[0]);
                eventPublisher.Setup(mock => mock.Publish(It.IsAny<IEnumerable<Header>>(), It.IsAny<EventEnvelope>())).Throws(new InvalidOperationException());
                dispatcher.EnsureElapsedTimeoutsDispatched();
                timer.InvokeCallback();

                Assert.True(timer.Changed);
                sagaStore.Verify(mock => mock.GetScheduledTimeouts(It.IsAny<DateTime>()), Times.Once());
            }