public WhenThereAreNoSubscribers(ITestOutputHelper testOutputHelper) { _outputHelper = testOutputHelper; var loggerFactory = testOutputHelper.ToLoggerFactory(); MiddlewareBase <ReceiveMessagesContext, IList <Message> > sqsMiddleware = new DelegateMiddleware <ReceiveMessagesContext, IList <Message> >(); var messages = new List <Message> { new TestMessage() }; var queue = new FakeSqsQueue(ct => { Interlocked.Increment(ref _callCount); return(Task.FromResult(messages.AsEnumerable())); }); var monitor = new TrackingLoggingMonitor( loggerFactory.CreateLogger <TrackingLoggingMonitor>()); _messageReceiveBuffer = new MessageReceiveBuffer( 10, 10, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), queue, sqsMiddleware, monitor, loggerFactory.CreateLogger <IMessageReceiveBuffer>()); }
public WhenSqsIsSlow(ITestOutputHelper testOutputHelper) { var loggerFactory = testOutputHelper.ToLoggerFactory(); MiddlewareBase <ReceiveMessagesContext, IList <Message> > sqsMiddleware = new DelegateMiddleware <ReceiveMessagesContext, IList <Message> >(); var messages = new List <Message> { new TestMessage() }; var queue = new FakeSqsQueue(async ct => { await Task.Delay(100); Interlocked.Increment(ref _callCount); return(messages); }); var monitor = new TrackingLoggingMonitor( loggerFactory.CreateLogger <TrackingLoggingMonitor>()); _messageReceiveBuffer = new MessageReceiveBuffer( 10, 10, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), queue, sqsMiddleware, monitor, loggerFactory.CreateLogger <IMessageReceiveBuffer>()); }
/// <summary> /// Chains instances of <see cref="MiddlewareBase{TContext, TOut}"/> together using /// <see cref="DelegateMiddleware{TContext, TOut}"/> as the inner middleware. /// </summary> /// <param name="middleware">The instances of <see cref="MiddlewareBase{TContext, TOut}"/> to add to the /// returned composite <see cref="MiddlewareBase{TContext, TOut}"/>.</param> /// <returns>A composite <see cref="MiddlewareBase{TContext, TOut}"/>.</returns> public static MiddlewareBase <TContext, TOut> BuildAsync <TContext, TOut>( params MiddlewareBase <TContext, TOut>[] middleware) { if (middleware == null) { throw new ArgumentNullException(nameof(middleware)); } MiddlewareBase <TContext, TOut> policy = new DelegateMiddleware <TContext, TOut>(); return(policy.WithAsync(middleware)); }
public WhenSqsIsSlow(ITestOutputHelper testOutputHelper) { var loggerFactory = testOutputHelper.ToLoggerFactory(); MiddlewareBase <ReceiveMessagesContext, IList <Message> > sqsMiddleware = new DelegateMiddleware <ReceiveMessagesContext, IList <Message> >(); var sqsClient = Substitute.For <IAmazonSQS>(); var queue = Substitute.For <ISqsQueue>(); queue.Uri.Returns(new Uri("http://test.com")); queue.Client.Returns(sqsClient); var monitor = new TrackingLoggingMonitor( loggerFactory.CreateLogger <TrackingLoggingMonitor>()); sqsClient.ReceiveMessageAsync(Arg.Any <ReceiveMessageRequest>(), Arg.Any <CancellationToken>()) .Returns(_ => { Thread.Sleep(TimeSpan.FromMilliseconds(100)); Interlocked.Increment(ref _callCount); var messages = new List <Message> { new TestMessage() }; return(new ReceiveMessageResponse { Messages = messages }); }); _messageReceiveBuffer = new MessageReceiveBuffer( 10, 10, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), queue, sqsMiddleware, monitor, loggerFactory.CreateLogger <IMessageReceiveBuffer>()); }