public async Task HandleAsync_OutboundMessage_RelayedToEndpoint()
        {
            var outboundEnvelope = new OutboundEnvelope <TestEventOne>(
                new TestEventOne(),
                Array.Empty <MessageHeader>(),
                new TestProducerEndpoint("test"));

            await _behavior.HandleAsync(
                outboundEnvelope,
                message => Task.FromResult(new[] { message }.AsReadOnlyCollection()) !);

            await _behavior.HandleAsync(
                outboundEnvelope,
                message => Task.FromResult(new[] { message }.AsReadOnlyCollection()) !);

            await _behavior.HandleAsync(
                outboundEnvelope,
                message => Task.FromResult(new[] { message }.AsReadOnlyCollection()) !);

            await _outbox.CommitAsync();

            var queued = await _outbox.ReadAsync(10);

            queued.Should().BeEmpty();
            _broker.ProducedMessages.Should().HaveCount(3);
        }
        public async Task Enqueue_MultipleTimesInParallelAndCommit_QueueFilled()
        {
            Parallel.For(0, 3, _ => { _queue.WriteAsync(_sampleOutboundEnvelope); });

            await _queue.CommitAsync();

            (await _queue.GetLengthAsync()).Should().Be(3);
        }
Beispiel #3
0
        public async Task Enqueue_MultipleTimesInParallelAndCommit_QueueFilled()
        {
            await Task.WhenAll(
                Enumerable.Range(0, 3)
                .Select(
                    _ => _queue.WriteAsync(
                        _sampleOutboundEnvelope.Message,
                        _sampleOutboundEnvelope.RawMessage.ReadAll(),
                        _sampleOutboundEnvelope.Headers,
                        _sampleOutboundEnvelope.Endpoint.Name,
                        _sampleOutboundEnvelope.ActualEndpointName)));

            await _queue.CommitAsync();

            (await _queue.GetLengthAsync()).Should().Be(3);
        }