public async Task Setup() { cancellationTokenSource = new CancellationTokenSource(); pipeline = new IncomingPipeline( mockMessageSource.Object, new[] { mockBehaviour.Object }, mockServiceScopeFactory.Object, mockHandlerInvoker.Object, NullLogger <IncomingPipeline> .Instance, retryOptions); mockBehaviour .Setup( m => m.Process( It.Is <IncomingMessage>(message => ((string)message.Body) == "throw this"), It.IsAny <Context>(), It.IsAny <IncomingPipelineAction>())) .Throws(new InvalidOperationException()); messageCausingException = IncomingMessageBuilder.BuildWithBody("throw this"); normalMessage = IncomingMessageBuilder.BuildDefault(); await pipeline .Initialise(CancellationToken.None) .ConfigureAwait(false); }
public void ConsiderRemainingLockTimeRatioGreaterThanRiskFactorAsASafeFinish() { behaviour = new BatchSizeGoverningBehaviour(0.5, NullLogger <BatchSizeGoverningBehaviour> .Instance, initialBatchSize: 1); Assert.IsTrue( behaviour.FinishedWithinSafeTime( IncomingMessageBuilder.BuildDefault())); }
public async Task InvokeTheNextBehaviourInTheChain() { await behaviour .Process( IncomingMessageBuilder.BuildDefault(), new Context(null), NextAction) .ConfigureAwait(false); Assert.IsTrue(nextActionWasCalled); }
private async Task Process(int count) { for (var index = 0; index < count; index++) { await behaviour .Process( IncomingMessageBuilder.BuildDefault(), new Context(null), NextAction) .ConfigureAwait(false); } }
public async Task GenerateNewCorrelationIdIfIncomingMessageDoesNotIncludeOne() { var message = IncomingMessageBuilder .BuildDefault(); await behaviour.Process(message, new Context(null), NextAction).ConfigureAwait(false); Assert.AreEqual(1, capturedHeaders.Length); Assert.AreEqual(SharedConstants.CorrelationIdHeaderName, capturedHeaders.First().HeaderName); Assert.IsTrue(Guid.TryParse(capturedHeaders.First().Value, out var generatedId)); Assert.AreNotEqual(Guid.Empty, generatedId); }
public async Task CallNextAction(bool loggingEnabled) { behaviour = new LoggingIncomingBehaviour(mockLogger.Object, LogLevel.Warning); var message = IncomingMessageBuilder.BuildDefault(); mockLogger.Setup(m => m.IsEnabled(LogLevel.Warning)).Returns(loggingEnabled); await behaviour.Process(message, new Context(null), NextAction).ConfigureAwait(false); Assert.IsTrue(nextActionWasCalled); }
public async Task LogMessageAtConfiguredLevel(LogLevel level) { behaviour = new LoggingIncomingBehaviour(mockLogger.Object, level); var message = IncomingMessageBuilder.BuildDefault(); mockLogger.Setup(m => m.IsEnabled(level)).Returns(true); await behaviour.Process(message, new Context(null), NextAction).ConfigureAwait(false); mockLogger.VerifyLoggedMessageContains(level, "HANDLING "); }
private List <Task> StartLongRunning(int count) { var tasks = new List <Task>(); for (var index = 0; index < count; index++) { tasks.Add( behaviour .Process( IncomingMessageBuilder.BuildDefault(), new Context(null), LongRunningNextAction)); } return(tasks); }
public async Task NotLogWhenLoggingIsDisabled() { behaviour = new LoggingIncomingBehaviour(mockLogger.Object, LogLevel.Warning); var message = IncomingMessageBuilder.BuildDefault(); mockLogger.Setup(m => m.IsEnabled(LogLevel.Warning)).Returns(false); await behaviour.Process(message, new Context(null), NextAction).ConfigureAwait(false); mockLogger .Verify( m => m.Log <object>( It.IsAny <LogLevel>(), It.IsAny <EventId>(), It.IsAny <object>(), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Never); }