示例#1
0
    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>());
    }
示例#2
0
    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>());
    }
示例#3
0
    /// <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>());
        }