コード例 #1
0
        public virtual async Task Start()
        {
            _sent      = new TestSendObserver(TestTimeout);
            _consumed  = new BusTestConsumeObserver(TestTimeout);
            _published = new BusTestPublishObserver(TestTimeout);

            PreCreateBus?.Invoke(this);

            _bus = CreateBus();

            ConnectObservers(_bus);

            _busHandle = await _bus.StartAsync().ConfigureAwait(false);

            BusSendEndpoint = await GetSendEndpoint(_bus.Address).ConfigureAwait(false);

            InputQueueSendEndpoint = await GetSendEndpoint(InputQueueAddress).ConfigureAwait(false);

            _inputQueueSendObserver = InputQueueSendEndpoint.ConnectSendObserver(_sent);

            _busConsumeObserver = _bus.ConnectConsumeObserver(_consumed);

            _busPublishObserver = _bus.ConnectPublishObserver(_published);

            _busSendObserver = _bus.ConnectSendObserver(_sent);
        }
コード例 #2
0
        public RabbitMqTestFixture()
        {
            _hostAddress       = new Uri("rabbitmq://[::1]/test/");
            _inputQueueAddress = new Uri(_hostAddress, "input_queue");

            _sendObserver = new TestSendObserver(TestTimeout);
        }
コード例 #3
0
        public async Task Should_contain_the_same_payloads()
        {
            EndpointConvention.Map <B>(InputQueueAddress);

            var sendObserver = new TestSendObserver(TimeSpan.FromSeconds(3));

            using (Bus.ConnectSendObserver(sendObserver))
            {
                await InputQueueSendEndpoint.Send(new A());

                ISentMessage <A> a = sendObserver.Messages.Select <A>().FirstOrDefault();
                ISentMessage <B> b = sendObserver.Messages.Select <B>().FirstOrDefault();

                a.ShouldNotBeNull();
                b.ShouldNotBeNull();

                Dictionary <string, object> ah = a.Context.Headers.GetAll().ToDictionary(x => x.Key, x => x.Value);
                Dictionary <string, object> bh = b.Context.Headers.GetAll().ToDictionary(x => x.Key, x => x.Value);

                ah.ShouldContainKey("x-send-filter");
                ah.ShouldContainKey("x-send-message-filter");
                ah["x-send-filter"].ShouldBe("send-filter");
                ah["x-send-message-filter"].ShouldBe("send-message-filter");

                bh.ShouldContainKey("x-send-filter");
                bh.ShouldContainKey("x-send-message-filter");

                // those fails, as while they DO have ",has-consume-context" they don't have access to SomePayload
                bh["x-send-filter"].ShouldBe("send-filter,has-consume-context,has-some-payload:hello");
                bh["x-send-message-filter"].ShouldBe("send-message-filter,has-consume-context,has-some-payload:hello");
            }
        }
コード例 #4
0
        public RabbitMqTestFixture()
        {
            _hostAddress = new Uri("rabbitmq://[::1]/test/");
            _inputQueueAddress = new Uri(_hostAddress, "input_queue");

            _sendObserver = new TestSendObserver(TestTimeout);
        }
コード例 #5
0
ファイル: BusTestScenario.cs プロジェクト: zagyar/MassTransit
        public BusTestScenario(TimeSpan timeout, IBusControl busControl)
        {
            _timeout    = timeout;
            _busControl = busControl;

            Received   = new ReceivedMessageList(timeout);
            _skipped   = new ReceivedMessageList(timeout);
            _published = new PublishedMessageList(timeout);

            _tokenSource      = new CancellationTokenSource(timeout);
            CancellationToken = _tokenSource.Token;


            var testSendObserver = new TestSendObserver(timeout);

            Sent = testSendObserver.Messages;

            _subjectSendEndpoint = GetSendEndpoint(testSendObserver);

            var consumeObserver = new TestConsumeObserver(timeout);

            Received = consumeObserver.Messages;
            busControl.ConnectConsumeObserver(consumeObserver);

            _busHandle = _busControl.Start();
        }
コード例 #6
0
ファイル: BusTestScenario.cs プロジェクト: zagyar/MassTransit
        async Task <ISendEndpoint> GetSendEndpoint(TestSendObserver testSendObserver)
        {
            var endpoint = await _busControl.GetSendEndpoint(new Uri("loopback://localhost/input_queue")).ConfigureAwait(false);

            endpoint.ConnectSendObserver(testSendObserver);

            return(endpoint);
        }
コード例 #7
0
        public AzureServiceBusTestFixture()
        {
            ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Http;

            TestTimeout = Debugger.IsAttached ? TimeSpan.FromMinutes(5) : TimeSpan.FromSeconds(60);

            _serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", "masstransit-build", "MassTransit.AzureServiceBusTransport.Tests");

            _sendObserver = new TestSendObserver(TestTimeout);
        }
コード例 #8
0
        public AzureServiceBusTestFixture()
        {
            ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Http;

            TestTimeout = Debugger.IsAttached ? TimeSpan.FromMinutes(5) : TimeSpan.FromSeconds(60);

            _serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", "masstransit-build", "MassTransit.AzureServiceBusTransport.Tests");

            _sendObserver = new TestSendObserver(TestTimeout);
        }
コード例 #9
0
        public async Task Should_call_PreSend_and_PostSend_on_message_SendAsync()
        {
            var sendObserver = new TestSendObserver();
            var address      = Guid.NewGuid().ToString();

            await using var testFixture = await TestFixture.CreateAsync(_testOutputHelper, builder =>
            {
                builder.Services.AddSingleton(sendObserver);
                builder.AddProducer <TestProducer>(address)
                .AddSendObserver <TestSendObserver>();
            });

            var testProducer = testFixture.Services.GetService <TestProducer>();
            await testProducer.Producer.SendAsync(new Message("foo"), testFixture.CancellationToken);

            Assert.True(sendObserver.PreSendCalled);
            Assert.True(sendObserver.PostSendCalled);
        }
コード例 #10
0
        public BusTestScenario(TimeSpan timeout, IBusControl busControl)
        {
            _timeout = timeout;
            _busControl = busControl;

            Received = new ReceivedMessageList(timeout);
            _skipped = new ReceivedMessageList(timeout);
            _published = new PublishedMessageList(timeout);

            _tokenSource = new CancellationTokenSource(timeout);
            CancellationToken = _tokenSource.Token;


            var testSendObserver = new TestSendObserver(timeout);
            Sent = testSendObserver.Messages;

            _subjectSendEndpoint = GetSendEndpoint(testSendObserver);

            var consumeObserver = new TestConsumeObserver(timeout);
            Received = consumeObserver.Messages;
            busControl.ConnectConsumeObserver(consumeObserver);

            _busHandle = _busControl.StartAsync();
        }
コード例 #11
0
        public BusTestScenario(TimeSpan timeout, IBusControl busControl)
        {
            _timeout = timeout;
            _busControl = busControl;

            Received = new ReceivedMessageList(timeout);
            _skipped = new ReceivedMessageList(timeout);
            _published = new PublishedMessageList(timeout);

            _tokenSource = new CancellationTokenSource(timeout);
            CancellationToken = _tokenSource.Token;

            _subjectSendEndpoint = _busControl.GetSendEndpoint(new Uri("loopback://localhost/input_queue")).Result;

            var testSendObserver = new TestSendObserver(timeout);
            Sent = testSendObserver.Messages;
            _subjectSendEndpoint.ConnectSendObserver(testSendObserver);

            var consumeObserver = new TestConsumeObserver(timeout);
            Received = consumeObserver.Messages;
            busControl.ConnectConsumeObserver(consumeObserver);

            _busHandle = _busControl.Start();
        }
コード例 #12
0
        async Task<ISendEndpoint> GetSendEndpoint(TestSendObserver testSendObserver)
        {
            var endpoint = await _busControl.GetSendEndpoint(new Uri("loopback://localhost/input_queue")).ConfigureAwait(false);

            endpoint.ConnectSendObserver(testSendObserver);

            return endpoint;
        }
コード例 #13
0
 public HttpBusTestFixture()
 {
     _sendObserver = new TestSendObserver(TestTimeout);
     _hostAddress  = new Uri("http://localhost:8080");
 }