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(); } }
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()); }