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