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);
        }
Ejemplo n.º 2
0
 public void ConsiderRemainingLockTimeRatioGreaterThanRiskFactorAsASafeFinish()
 {
     behaviour = new BatchSizeGoverningBehaviour(0.5, NullLogger <BatchSizeGoverningBehaviour> .Instance, initialBatchSize: 1);
     Assert.IsTrue(
         behaviour.FinishedWithinSafeTime(
             IncomingMessageBuilder.BuildDefault()));
 }
Ejemplo n.º 3
0
        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);
     }
 }
Ejemplo n.º 5
0
        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);
        }