public void SetUp() { breaker = new FakeBreaker(); dispatcher = new RecordingFakeDispatcher(); timeouts = new InMemoryTimeoutPersister(() => currentTime); poller = new ExpiredTimeoutsPoller(timeouts, dispatcher, "test", breaker, () => currentTime); }
public void SetUp() { breaker = new FakeBreaker(); dispatcher = new RecordingFakeDispatcher(); timeouts = new InMemoryTimeoutPersister(() => currentTime); poller = new ExpiredTimeoutsPoller(timeouts, dispatcher, "test", breaker, () => currentTime); }
public void TestNextQueryTimeIsResetWhenNewTimeoutIsInserted() { // Arrange var expiredTimeoutsPoller = new ExpiredTimeoutsPoller(_mockBus.Object);// todo: pass time provider to make testing easier var nextTimeoutQueryTime = DateTime.UtcNow.AddSeconds(-10); // Act _mockProcessManagerFinder.Raise(e => e.TimeoutInserted += null, nextTimeoutQueryTime); // Assert Assert.Equal(expiredTimeoutsPoller.NextQueryUtc, nextTimeoutQueryTime); }
public void TestDispatchedTimeoutMessageIsRemoved() { // Arrange SetupProcessManagerFinderMock(DateTime.UtcNow.AddSeconds(30)); var expiredTimeoutsPoller = new ExpiredTimeoutsPoller(_mockBus.Object); // Act expiredTimeoutsPoller.InnerPoll(new CancellationToken(false)); // Assert _mockProcessManagerFinder.Verify(i => i.RemoveDispatchedTimeout(_tdId), Times.Once); }
public void TestTimeoutMessageIsDispatched() { // Arrange SetupProcessManagerFinderMock(DateTime.UtcNow.AddSeconds(30)); var expiredTimeoutsPoller = new ExpiredTimeoutsPoller(_mockBus.Object); // Act expiredTimeoutsPoller.InnerPoll(new CancellationToken(false)); // Assert _mockBus.Verify(i => i.Send("TestDest", It.Is <TimeoutMessage>(p => p.CorrelationId == _pmId), null), Times.Once); }
public void TestNextQueryTimeIsResetToMaxAlowedValue() { // Arrange var nextTimeoutQueryTime = DateTime.UtcNow.AddDays(1); SetupProcessManagerFinderMock(nextTimeoutQueryTime); var expiredTimeoutsPoller = new ExpiredTimeoutsPoller(_mockBus.Object); // Act expiredTimeoutsPoller.InnerPoll(new CancellationToken(false)); // Assert Assert.True(expiredTimeoutsPoller.NextQueryUtc < nextTimeoutQueryTime); }
public void TestNextQueryTimeIsResetToNextTimeoutDue() { // Arrange var nextTimeoutQueryTime = DateTime.UtcNow.AddSeconds(30); SetupProcessManagerFinderMock(nextTimeoutQueryTime); var expiredTimeoutsPoller = new ExpiredTimeoutsPoller(_mockBus.Object); // Act expiredTimeoutsPoller.InnerPoll(new CancellationToken(false)); // Assert Assert.Equal(nextTimeoutQueryTime, expiredTimeoutsPoller.NextQueryUtc); }
public Bus(IConfiguration configuration) { _busState = new BusState(); Configuration = configuration; _logger = configuration.GetLogger(); _container = configuration.GetContainer(); _producer = configuration.GetProducer(); _processMessagePipeline = configuration.GetProcessMessagePipeline(_busState); _sendMessagePipeline = configuration.GetSendMessagePipeline(); _container.Initialize(); if (configuration.AddBusToContainer) { _container.AddBus(this); } if (configuration.ScanForMesssageHandlers) { _container.ScanForHandlers(); } if (configuration.TransportSettings.AuditingEnabled) { StartHeartbeatTimer(); } if (configuration.AutoStartConsuming) { StartConsuming(); } if (configuration.EnableProcessManagerTimeouts) { _expiredTimeoutsPoller = new ExpiredTimeoutsPoller(this); _expiredTimeoutsPoller.Start(); } }
public async Task Poll_with_same_start_slice_from_last_failed_dispatch() { var failingDispatcher = new FailableDispatcher(); poller = new ExpiredTimeoutsPoller(timeouts, failingDispatcher, "test", breaker, () => currentTime); RegisterNewTimeout(currentTime.Subtract(TimeSpan.FromMinutes(5))); var dispatchCalls = 0; var unicastTransportOperations = new List <UnicastTransportOperation>(); failingDispatcher.DispatcherAction = m => { if (++dispatchCalls == 1) { // fail first dispatch throw new Exception("transport error"); } // succeed second dispatch unicastTransportOperations = m.UnicastTransportOperations; return(Task.CompletedTask); }; try { await poller.SpinOnce(CancellationToken.None); } catch (Exception) { // ignore. An exception will cause another polling attempt. } await poller.SpinOnce(CancellationToken.None); Assert.AreEqual(1, unicastTransportOperations.Count); }
public TimeoutPollerRunner(ExpiredTimeoutsPoller poller) { this.poller = poller; }
public TimeoutPollerRunner(ExpiredTimeoutsPoller poller) { this.poller = poller; }