Ejemplo n.º 1
0
        private async Task <Bus> BuildMeABus(IConfigurationScenario <TransportConfiguration> scenario)
        {
            var typeProvider = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { GetType().Namespace });

            using (var instance = scenario.CreateInstance())
            {
                var transportConfiguration = instance.Configuration;

                var configuration = new BusBuilder().Configure()
                                    .WithTransport(transportConfiguration)
                                    .WithRouter(new DestinationPerMessageTypeRouter())
                                    .WithSerializer(new JsonSerializer())
                                    .WithDeliveryRetryStrategy(new ImmediateRetryDeliveryStrategy())
                                    .WithDependencyResolver(new DependencyResolver(typeProvider))
                                    .WithNames("MyTestSuite", Environment.MachineName)
                                    .WithTypesFrom(typeProvider)
                                    .WithDefaultTimeout(TimeSpan.FromSeconds(10))
                                    .WithHeartbeatInterval(TimeSpan.MaxValue)
                                    .WithLogger(_logger)
                ;

                var bus = configuration.Build();
                await bus.Start();

                await bus.Stop();

                return(bus);
            }
        }
Ejemplo n.º 2
0
        private async Task ClearMeABus()
        {
            // Filter types we care about to only our own test's namespace. It's a performance optimisation because creating and
            // deleting queues and topics is slow.
            var typeProvider = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { "Some.Namespace.That.Does.Not.Exist" });

            var logger = TestHarnessLoggerFactory.Create();

            var busBuilder = new BusBuilder().Configure()
                             .WithNames("IntegrationTestHarness", Environment.MachineName)
                             .WithConnectionString(CommonResources.ServiceBusConnectionString)
                             .WithTypesFrom(typeProvider)
                             .WithDefaultTimeout(TimeSpan.FromSeconds(10))
                             .WithLogger(logger)
                             .WithDebugOptions(
                dc =>
                dc.RemoveAllExistingNamespaceElementsOnStartup(
                    "I understand this will delete EVERYTHING in my namespace. I promise to only use this for test suites."))
            ;

            using (var bus = busBuilder.Build())
            {
                await bus.Start();
            }
        }
Ejemplo n.º 3
0
        public IServiceBus CreateServiceBus()
        {
            _log.InfoFormat("MassTransit v{0}, .NET Framework v{1}",
                            typeof(ServiceBusFactory).Assembly.GetName().Version,
                            Environment.Version);

            IEndpointCache endpointCache = CreateEndpointCache();

            _settings.EndpointCache = endpointCache;

            BusBuilder builder = _builderFactory(_settings);

            _subscriptionRouterConfigurator.SetNetwork(_settings.Network);

            // run through all configurators that have been set and let
            // them do their magic
            foreach (BusBuilderConfigurator configurator in _configurators)
            {
                builder = configurator.Configure(builder);
            }

            IServiceBus bus = builder.Build();

            return(bus);
        }
Ejemplo n.º 4
0
        private async Task ClearMeABus(IConfigurationScenario <TransportConfiguration> scenario)
        {
            using (var instance = scenario.CreateInstance())
            {
                // We want a namespace that doesn't exist here so that all the queues and topics are removed.
                var typeProvider           = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { "Some.Namespace.That.Does.Not.Exist" });
                var transportConfiguration = instance.Configuration;

                var busBuilder = new BusBuilder().Configure()
                                 .WithTransport(transportConfiguration)
                                 .WithRouter(new DestinationPerMessageTypeRouter())
                                 .WithSerializer(new JsonSerializer())
                                 .WithDeliveryRetryStrategy(new ImmediateRetryDeliveryStrategy())
                                 .WithDependencyResolver(new DependencyResolver(typeProvider))
                                 .WithNames("MyTestSuite", Environment.MachineName)
                                 .WithTypesFrom(typeProvider)
                                 .WithDefaultTimeout(TimeSpan.FromSeconds(TimeoutSeconds))
                                 .WithHeartbeatInterval(TimeSpan.MaxValue)
                                 .WithLogger(_logger)
                                 .WithDebugOptions(
                    dc =>
                    dc.RemoveAllExistingNamespaceElementsOnStartup(
                        "I understand this will delete EVERYTHING in my namespace. I promise to only use this for test suites."))
                ;

                using (var bus = busBuilder.Build())
                {
                    await bus.Start();

                    await bus.Stop();
                }
            }
        }
        public static IWebHost  SubscribeToEvent <TEvent>(this BusBuilder busBuilder) where TEvent : IEvent
        {
            var handler = (IEventHandler <TEvent>)busBuilder.WebHost.Services
                          .GetService(typeof(IEventHandler <TEvent>));

            busBuilder.BusClient.WithEventHandlerAsync(handler);

            return(busBuilder.Build().Webhost);
        }
        public void WhenCreateGivenSameMessageTypeConfiguredTwiceForTopicAndForQueueThenConfigurationExceptionThrown()
        {
            // arrange
            BusBuilder.Produce <SomeMessage>(x => x.ToTopic());
            BusBuilder.Produce <SomeMessage>(x => x.ToQueue());

            // act
            Func <IMessageBus> creation = () => BusBuilder.Build();

            // assert
            creation.Should().Throw <ConfigurationMessageBusException>()
            .WithMessage($"The produced message type '{typeof(SomeMessage).FullName}' was declared more than once*");
        }
        public void WhenCreateGivenSameDefaultNameUsedForTopicAndForQueueThenConfigurationExceptionThrown()
        {
            // arrange
            const string name = "the-same-name";

            BusBuilder.Produce <SomeMessage>(x => x.DefaultTopic(name));
            BusBuilder.Produce <OtherMessage>(x => x.DefaultQueue(name));

            // act
            Func <IMessageBus> creation = () => BusBuilder.Build();

            // assert
            creation.Should().Throw <ConfigurationMessageBusException>()
            .WithMessage($"The same name '{name}' was used for queue and topic*");
        }
Ejemplo n.º 8
0
        public IServiceBus CreateServiceBus()
        {
            LogAssemblyVersionInformation();

            IEndpointCache endpointCache = CreateEndpointCache();

            _settings.EndpointCache = endpointCache;

            BusBuilder builder = _builderFactory(_settings);

            _subscriptionRouterConfigurator.SetNetwork(_settings.Network);

            // run through all configurators that have been set and let
            // them do their magic
            foreach (BusBuilderConfigurator configurator in _configurators)
            {
                builder = configurator.Configure(builder);
            }

            IServiceBus bus = builder.Build();

            return(bus);
        }
        public ServiceBusMessageBusTests()
        {
            BusBuilder.WithSerializer(new Mock <IMessageSerializer>().Object);
            BusBuilder.WithDependencyResolver(new Mock <IDependencyResolver>().Object);

            ProviderBusSettings = new ServiceBusMessageBusSettings("connection-string")
            {
                QueueClientFactory = queue =>
                {
                    var m = new Mock <IQueueClient>();
                    QueueClientMockByName.Add(queue, m);
                    return(m.Object);
                },
                TopicClientFactory = topic =>
                {
                    var m = new Mock <ITopicClient>();
                    TopicClientMockByName.Add(topic, m);
                    return(m.Object);
                }
            };
            BusBuilder.WithProvider(mbSettings => new WrappedProviderMessageBus(mbSettings, ProviderBusSettings));
            ProviderBus = new Lazy <WrappedProviderMessageBus>(() => (WrappedProviderMessageBus)BusBuilder.Build());
        }