public async Task WhenMessageIsLockedByAnotherHandler_MessageWillBeLeftInTheQueue()
        {
            var messageLock = new FakeMessageLock(false);

            var testResolver = new InMemoryServiceResolver(sc => sc
                .AddLogging(l =>
                    l.AddXUnit(_outputHelper))
                .AddSingleton<IMessageLockAsync>(messageLock));

            var monitor = new TrackingLoggingMonitor(LoggerFactory.Create(lf => lf.AddXUnit()).CreateLogger<TrackingLoggingMonitor>());
            var handler = new InspectableHandler<OrderAccepted>();

            var middleware = new HandlerMiddlewareBuilder(testResolver, testResolver)
                .UseExactlyOnce<OrderAccepted>(nameof(InspectableHandler<OrderAccepted>),
                    TimeSpan.FromSeconds(1))
                .UseHandler(ctx => handler)
                .Build();

            var context = TestHandleContexts.From<OrderAccepted>();

            var result = await middleware.RunAsync(context, null, CancellationToken.None);

            handler.ReceivedMessages.ShouldBeEmpty();
            result.ShouldBeFalse();
        }
Exemple #2
0
        public StopwatchMiddlewareTests(ITestOutputHelper outputHelper)
        {
            var loggerFactory = LoggerFactory.Create(lf => lf.AddXUnit(outputHelper));

            _handler = new InspectableHandler <OrderAccepted>();
            _monitor = new TrackingLoggingMonitor(loggerFactory.CreateLogger <TrackingLoggingMonitor>());
            var serviceResolver = new InMemoryServiceResolver(c =>
                                                              c.AddSingleton <IHandlerAsync <OrderAccepted> >(_handler)
                                                              .AddSingleton <IMessageMonitor>(_monitor));

            _middleware = new HandlerMiddlewareBuilder(serviceResolver, serviceResolver)
                          .UseHandler <OrderAccepted>()
                          .UseStopwatch(_handler.GetType())
                          .Build();
        }
Exemple #3
0
            protected override void Given()
            {
                base.Given();

                var handler = new InspectableHandler <SimpleMessage>();

                var testResolver = new InMemoryServiceResolver(_outputHelper,
                                                               _messageMonitor,
                                                               sc => sc.AddSingleton <IHandlerAsync <SimpleMessage> >(handler));

                var middleware = new HandlerMiddlewareBuilder(testResolver, testResolver)
                                 .UseBackoff(MessageBackoffStrategy)
                                 .UseDefaults <SimpleMessage>(handler.GetType())
                                 .Build();

                _middlewareMap.Add <OrderAccepted>(_queue.QueueName, middleware);
            }
        private void GivenInternal()
        {
            Queues  = new List <ISqsQueue>();
            Handler = new InspectableHandler <SimpleMessage>();
            Monitor = new TrackingLoggingMonitor(LoggerFactory.CreateLogger <TrackingLoggingMonitor>());
            SerializationRegister = new FakeSerializationRegister();
            MiddlewareMap         = new MiddlewareMap();
            CompletionMiddleware  = new AwaitableMiddleware(OutputHelper);

            var testResolver = new InMemoryServiceResolver(OutputHelper, Monitor,
                                                           sc => sc.AddSingleton <IHandlerAsync <SimpleMessage> >(Handler));

            Middleware = new HandlerMiddlewareBuilder(testResolver, testResolver)
                         .Use(CompletionMiddleware)
                         .UseDefaults <SimpleMessage>(typeof(InspectableHandler <SimpleMessage>))
                         .Build();

            Given();
        }
Exemple #5
0
    protected override void Given()
    {
        _queue = CreateSuccessfulTestQueue(Guid.NewGuid().ToString(), new TestMessage());
        Queues.Add(_queue);
        _messageLock = new FakeMessageLock();

        var serviceResolver = new InMemoryServiceResolver(sc =>
                                                          sc.AddSingleton <IMessageLockAsync>(_messageLock)
                                                          .AddSingleton <IHandlerAsync <SimpleMessage> >(Handler)
                                                          .AddLogging(x => x.AddXUnit(OutputHelper)));

        var middlewareBuilder = new HandlerMiddlewareBuilder(serviceResolver, serviceResolver);

        var middleware = middlewareBuilder.Configure(pipe =>
        {
            pipe.UseExactlyOnce <SimpleMessage>("a-unique-lock-key");
            pipe.UseHandler <SimpleMessage>();
        }).Build();

        Middleware = middleware;
    }
Exemple #6
0
            protected override void Given()
            {
                base.Given();

                var handler = new InspectableHandler <SimpleMessage>()
                {
                    OnHandle = msg => throw _expectedException
                };

                var testResolver = new InMemoryServiceResolver(_outputHelper,
                                                               _messageMonitor,
                                                               sc => sc.AddSingleton <IHandlerAsync <SimpleMessage> >(handler));

                var middleware = new HandlerMiddlewareBuilder(testResolver, testResolver)
                                 .UseBackoff(MessageBackoffStrategy)
                                 .UseDefaults <SimpleMessage>(handler.GetType())
                                 .Build();

                _middlewareMap.Add <OrderAccepted>(_queue.QueueName, middleware);

                MessageBackoffStrategy.GetBackoffDuration(_typedMessage, 1, _expectedException).Returns(_expectedBackoffTimeSpan);
                _sqsMessage.Attributes.Add(MessageSystemAttributeName.ApproximateReceiveCount, ExpectedReceiveCount.ToString(CultureInfo.InvariantCulture));
            }
 public HandlerMiddlewareBuilderTests()
 {
     _resolver = new InMemoryServiceResolver();
 }