Пример #1
0
        public static ManagementClient GetManagementClient()
        {
            var hostAddress     = AzureServiceBusEndpointUriCreator.Create(ServiceNamespace);
            var accountSettings = new TestAzureServiceBusAccountSettings();
            var keyName         = accountSettings.KeyName;
            var accessKey       = accountSettings.SharedAccessKey;

            var hostConfigurator = new ServiceBusHostConfigurator(hostAddress);

            hostConfigurator.SharedAccessSignature(s =>
            {
                s.KeyName         = keyName;
                s.SharedAccessKey = accessKey;
                s.TokenTimeToLive = accountSettings.TokenTimeToLive;
                s.TokenScope      = accountSettings.TokenScope;
            });

            var endpoint = new UriBuilder(hostAddress)
            {
                Path = ""
            }.Uri.ToString();

            var managementClient = new ManagementClient(endpoint, hostConfigurator.Settings.TokenProvider);

            return(managementClient);
        }
Пример #2
0
 public AzureServiceBusTestFixture(string inputQueueName = null, Uri serviceUri = null, ServiceBusTokenProviderSettings settings = null)
     : this(new AzureServiceBusTestHarness(
                serviceUri ?? AzureServiceBusEndpointUriCreator.Create(Configuration.ServiceNamespace, "MassTransit.Azure.ServiceBus.Core.Tests"),
                settings?.KeyName ?? ((ServiceBusTokenProviderSettings) new TestAzureServiceBusAccountSettings()).KeyName,
                settings?.SharedAccessKey ?? ((ServiceBusTokenProviderSettings) new TestAzureServiceBusAccountSettings()).SharedAccessKey,
                inputQueueName))
 {
 }
Пример #3
0
        public async Task Should_start_stop_and_start()
        {
            ServiceBusTokenProviderSettings settings = new TestAzureServiceBusAccountSettings();
            var serviceBusNamespace = Configuration.ServiceNamespace;

            var serviceUri = AzureServiceBusEndpointUriCreator.Create(
                serviceBusNamespace,
                "MassTransit.Azure.ServiceBus.Core.Tests"
                );
            var bus = MassTransit.Bus.Factory.CreateUsingAzureServiceBus(x =>
            {
                x.Host(serviceUri, h =>
                {
                    h.SharedAccessSignature(s =>
                    {
                        s.KeyName         = settings.KeyName;
                        s.SharedAccessKey = settings.SharedAccessKey;
                        s.TokenTimeToLive = settings.TokenTimeToLive;
                        s.TokenScope      = settings.TokenScope;
                    });
                });
                ConfigureBusDiagnostics(x);

                x.ReceiveEndpoint("input_queue", e =>
                {
                    e.Handler <PingMessage>(async context =>
                    {
                        await context.RespondAsync(new PongMessage());
                    });
                });
            });

            await bus.StartAsync(TestCancellationToken);

            try
            {
                await bus.CreateRequestClient <PingMessage>().GetResponse <PongMessage>(new PingMessage());
            }
            finally
            {
                await bus.StopAsync(TestCancellationToken);
            }

            await bus.StartAsync(TestCancellationToken);

            try
            {
                await bus.CreateRequestClient <PingMessage>().GetResponse <PongMessage>(new PingMessage());
            }
            finally
            {
                await bus.StopAsync(TestCancellationToken);
            }
        }
Пример #4
0
        public async Task Should_connect_subscription_endpoint()
        {
            ServiceBusTokenProviderSettings settings = new TestAzureServiceBusAccountSettings();

            var serviceUri = AzureServiceBusEndpointUriCreator.Create(Configuration.ServiceNamespace);

            var provider = new ServiceCollection()
                           .AddSingleton <ILoggerFactory>(LoggerFactory)
                           .AddSingleton(typeof(ILogger <>), typeof(Logger <>))
                           .AddMassTransit(x =>
            {
                x.UsingAzureServiceBus((context, cfg) =>
                {
                    cfg.Host(serviceUri, h =>
                    {
                        h.SharedAccessSignature(s =>
                        {
                            s.KeyName         = settings.KeyName;
                            s.SharedAccessKey = settings.SharedAccessKey;
                            s.TokenTimeToLive = settings.TokenTimeToLive;
                            s.TokenScope      = settings.TokenScope;
                        });
                    });
                });
            }).BuildServiceProvider(true);

            var depot = provider.GetRequiredService <IBusDepot>();

            await depot.Start(TestCancellationToken);

            try
            {
                var bus = provider.GetRequiredService <IBus>();

                var connector = provider.GetRequiredService <ISubscriptionEndpointConnector>();

                Task <ConsumeContext <PingMessage> > handled = null;
                var handle = connector.ConnectSubscriptionEndpoint <PingMessage>("my-sub", e =>
                {
                    handled = Handled <PingMessage>(e);
                });

                await handle.Ready;

                await bus.Publish(new PingMessage());

                await handled;
            }
            finally
            {
                await depot.Stop(TimeSpan.FromSeconds(30));
            }
        }
Пример #5
0
        public async Task Should_create_receive_endpoint_and_start()
        {
            ServiceBusTokenProviderSettings settings = new TestAzureServiceBusAccountSettings();

            var serviceUri = AzureServiceBusEndpointUriCreator.Create(Configuration.ServiceNamespace);

            var handled = new TaskCompletionSource <PingMessage>();

            var bus = Bus.Factory.CreateUsingAzureServiceBus(x =>
            {
                BusTestFixture.ConfigureBusDiagnostics(x);
                x.Host(serviceUri, h =>
                {
                    h.SharedAccessSignature(s =>
                    {
                        s.KeyName         = settings.KeyName;
                        s.SharedAccessKey = settings.SharedAccessKey;
                        s.TokenTimeToLive = settings.TokenTimeToLive;
                        s.TokenScope      = settings.TokenScope;
                    });
                });

                x.ReceiveEndpoint(e =>
                {
                    e.RemoveSubscriptions = true;

                    e.Handler <PingMessage>(async context =>
                    {
                        await Task.Delay(TimeSpan.FromSeconds(1));

                        handled.TrySetResult(context.Message);
                    });
                });
            });

            var busHandle = await bus.StartAsync();

            try
            {
                await bus.Publish(new PingMessage());

                await handled.Task.OrTimeout(TimeSpan.FromSeconds(10000));
            }
            finally
            {
                await busHandle.StopAsync(new CancellationTokenSource(TimeSpan.FromSeconds(10)).Token);
            }
        }
Пример #6
0
        public async Task Should_recreate_the_subscription()
        {
            ServiceBusTokenProviderSettings settings = new TestAzureServiceBusAccountSettings();
            var serviceUri = AzureServiceBusEndpointUriCreator.Create(Configuration.ServiceNamespace);
            var busControl = Bus.Factory.CreateUsingAzureServiceBus(x =>
            {
                BusTestFixture.ConfigureBusDiagnostics(x);
                x.Host(serviceUri, h =>
                {
                    h.SharedAccessSignature(s =>
                    {
                        s.KeyName         = settings.KeyName;
                        s.SharedAccessKey = settings.SharedAccessKey;
                        s.TokenTimeToLive = settings.TokenTimeToLive;
                        s.TokenScope      = settings.TokenScope;
                    });
                });

                x.SubscriptionEndpoint("input-subscription", "input-topic", e =>
                {
                });
            });

            var handle = await busControl.StartAsync();

            try
            {
                Console.WriteLine("Waiting for connection...");

                await handle.Ready;

                await Task.Delay(40000);
            }
            finally
            {
                await handle.StopAsync();
            }
        }
Пример #7
0
 public Sending_a_message_to_a_basic_endpoint()
     : base("input_queue", AzureServiceBusEndpointUriCreator.Create(Configuration.ServiceNamespace, "MassTransit.Azure.ServiceBus.Core.Tests"),
            new BasicAzureServiceBusAccountSettings())
 {
 }
Пример #8
0
 public Publishing_a_message_to_an_endpoint_with_a_slash()
     : base(serviceUri: AzureServiceBusEndpointUriCreator.Create(Configuration.ServiceNamespace))
 {
 }
 public TwoScopeAzureServiceBusTestFixture(string scope = default)
 {
     _secondServiceUri = AzureServiceBusEndpointUriCreator.Create(Configuration.ServiceNamespace, scope ?? "MassTransit.Tests.SecondService");
 }
Пример #10
0
        public async Task Should_start_stop_and_start()
        {
            ServiceBusTokenProviderSettings settings = new TestAzureServiceBusAccountSettings();
            var serviceBusNamespace = Configuration.ServiceNamespace;

            var serviceUri = AzureServiceBusEndpointUriCreator.Create(
                serviceBusNamespace,
                "MassTransit.Azure.ServiceBus.Core.Tests"
                );
            var bus = MassTransit.Bus.Factory.CreateUsingAzureServiceBus(cfg =>
            {
                cfg.Host(serviceUri, h =>
                {
                    h.SharedAccessSignature(s =>
                    {
                        s.KeyName         = settings.KeyName;
                        s.SharedAccessKey = settings.SharedAccessKey;
                        s.TokenTimeToLive = settings.TokenTimeToLive;
                        s.TokenScope      = settings.TokenScope;
                    });
                });

                ConfigureBusDiagnostics(cfg);

                cfg.ReceiveEndpoint("queue01", ep => ep.Consumer(() => new Consumer <Foo01>()));
                cfg.ReceiveEndpoint("queue02", ep => ep.Consumer(() => new Consumer <Foo02>()));
                cfg.ReceiveEndpoint("queue03", ep => ep.Consumer(() => new Consumer <Foo03>()));
                cfg.ReceiveEndpoint("queue04", ep => ep.Consumer(() => new Consumer <Foo04>()));
                cfg.ReceiveEndpoint("queue05", ep => ep.Consumer(() => new Consumer <Foo05>()));
                cfg.ReceiveEndpoint("queue06", ep => ep.Consumer(() => new Consumer <Foo06>()));
                cfg.ReceiveEndpoint("queue07", ep => ep.Consumer(() => new Consumer <Foo07>()));
                cfg.ReceiveEndpoint("queue08", ep => ep.Consumer(() => new Consumer <Foo08>()));
                cfg.ReceiveEndpoint("queue09", ep => ep.Consumer(() => new Consumer <Foo09>()));

                cfg.ReceiveEndpoint("queue10", ep => ep.Consumer(() => new Consumer <Foo10>()));
                cfg.ReceiveEndpoint("queue11", ep => ep.Consumer(() => new Consumer <Foo11>()));
                cfg.ReceiveEndpoint("queue12", ep => ep.Consumer(() => new Consumer <Foo12>()));
                cfg.ReceiveEndpoint("queue13", ep => ep.Consumer(() => new Consumer <Foo13>()));
                cfg.ReceiveEndpoint("queue14", ep => ep.Consumer(() => new Consumer <Foo14>()));
                cfg.ReceiveEndpoint("queue15", ep => ep.Consumer(() => new Consumer <Foo15>()));
                cfg.ReceiveEndpoint("queue16", ep => ep.Consumer(() => new Consumer <Foo16>()));
                cfg.ReceiveEndpoint("queue17", ep => ep.Consumer(() => new Consumer <Foo17>()));
                cfg.ReceiveEndpoint("queue18", ep => ep.Consumer(() => new Consumer <Foo18>()));
                cfg.ReceiveEndpoint("queue19", ep => ep.Consumer(() => new Consumer <Foo19>()));

                cfg.ReceiveEndpoint("queue20", ep => ep.Consumer(() => new Consumer <Foo20>()));
                cfg.ReceiveEndpoint("queue21", ep => ep.Consumer(() => new Consumer <Foo21>()));
                cfg.ReceiveEndpoint("queue22", ep => ep.Consumer(() => new Consumer <Foo22>()));
                cfg.ReceiveEndpoint("queue23", ep => ep.Consumer(() => new Consumer <Foo23>()));
                cfg.ReceiveEndpoint("queue24", ep => ep.Consumer(() => new Consumer <Foo24>()));
                cfg.ReceiveEndpoint("queue25", ep => ep.Consumer(() => new Consumer <Foo25>()));
                cfg.ReceiveEndpoint("queue26", ep => ep.Consumer(() => new Consumer <Foo26>()));
                cfg.ReceiveEndpoint("queue27", ep => ep.Consumer(() => new Consumer <Foo27>()));
                cfg.ReceiveEndpoint("queue28", ep => ep.Consumer(() => new Consumer <Foo28>()));
                cfg.ReceiveEndpoint("queue29", ep => ep.Consumer(() => new Consumer <Foo29>()));
                cfg.ReceiveEndpoint("queue30", ep => ep.Consumer(() => new Consumer <Foo30>()));
            });

            await bus.StartAsync(TestCancellationToken);

            try
            {
            }
            finally
            {
                await bus.StopAsync(TestCancellationToken);
            }

            await bus.StartAsync(TestCancellationToken);

            try
            {
            }
            finally
            {
                await bus.StopAsync(TestCancellationToken);
            }
        }
Пример #11
0
        public async Task Should_update_the_filter_expression()
        {
            var topicName        = "masstransit.azure.servicebus.core.tests.topologytesttypes/messagea";
            var subscriptionName = "input-message-a";

            var managementClient = Configuration.GetManagementClient();

            await managementClient.DeleteTopicAsync(topicName);

            ServiceBusTokenProviderSettings settings = new TestAzureServiceBusAccountSettings();

            var serviceUri = AzureServiceBusEndpointUriCreator.Create(Configuration.ServiceNamespace);

            var bus = Bus.Factory.CreateUsingAzureServiceBus(x =>
            {
                BusTestFixture.ConfigureBusDiagnostics(x);
                x.Host(serviceUri, h =>
                {
                    h.SharedAccessSignature(s =>
                    {
                        s.KeyName         = settings.KeyName;
                        s.SharedAccessKey = settings.SharedAccessKey;
                        s.TokenTimeToLive = settings.TokenTimeToLive;
                        s.TokenScope      = settings.TokenScope;
                    });
                });

                x.ReceiveEndpoint("subscription-input-queue", e =>
                {
                    e.Subscribe <MessageA>(subscriptionName, s => s.Filter = new SqlFilter("0 = 1"));
                });
            });

            var busHandle = await bus.StartAsync();

            await busHandle.StopAsync(new CancellationTokenSource(TimeSpan.FromSeconds(10)).Token);

            IList <RuleDescription> rules = await managementClient.GetRulesAsync(topicName, subscriptionName);

            Assert.That(rules.Count, Is.EqualTo(1));
            Assert.That(rules[0].Filter, Is.InstanceOf <SqlFilter>());

            var filter = rules[0].Filter as SqlFilter;

            Assert.That(filter.SqlExpression, Is.EqualTo("0 = 1"));

            bus = Bus.Factory.CreateUsingAzureServiceBus(x =>
            {
                BusTestFixture.ConfigureBusDiagnostics(x);
                x.Host(serviceUri, h =>
                {
                    h.SharedAccessSignature(s =>
                    {
                        s.KeyName         = settings.KeyName;
                        s.SharedAccessKey = settings.SharedAccessKey;
                        s.TokenTimeToLive = settings.TokenTimeToLive;
                        s.TokenScope      = settings.TokenScope;
                    });
                });

                x.ReceiveEndpoint("subscription-input-queue", e =>
                {
                    e.Subscribe <MessageA>(subscriptionName, s => s.Filter = new SqlFilter("1 = 1"));
                });
            });

            busHandle = await bus.StartAsync();

            await busHandle.StopAsync(new CancellationTokenSource(TimeSpan.FromSeconds(10)).Token);

            rules = await managementClient.GetRulesAsync(topicName, subscriptionName);

            Assert.That(rules.Count, Is.EqualTo(1));
            Assert.That(rules[0].Filter, Is.InstanceOf <SqlFilter>());

            filter = rules[0].Filter as SqlFilter;
            Assert.That(filter.SqlExpression, Is.EqualTo("1 = 1"));
        }
Пример #12
0
 public TwoScopeAzureServiceBusTestFixture(string scope)
 {
     _secondServiceUri = AzureServiceBusEndpointUriCreator.Create(Configuration.ServiceNamespace, scope);
 }