public void SecondServiceLocatorResolves()
        {
            var bus = new Bus();

            #region composition root

            var catalog = new AggregateCatalog();
            catalog.Catalogs.Add(new AssemblyCatalog(typeof(Message2Consumer).GetTypeInfo().Assembly));
            var compositionContainer = new CompositionContainer(catalog);
            var message2Consumer     = new Message2Consumer();
            ServiceLocator.SetLocatorProvider(() => new MefServiceLocator(compositionContainer));

            #endregion

            bus.SetServiceLocator(new MefServiceLocator(compositionContainer));
            compositionContainer.ComposeExportedValue(message2Consumer);
#if SUPPORT_ASYNC_CONSUMER
            var message3AsyncConsumer = new Message3AsyncConsumer();
            compositionContainer.ComposeExportedValue(message3AsyncConsumer);
#endif
            compositionContainer.ComposeExportedValue(new Pipe());
            compositionContainer.ComposeExportedValue(new Pipe23());
            bus.SetServiceLocator(new MefServiceLocator(compositionContainer));

            var directory = Path.GetDirectoryName(new Uri(GetType().GetTypeInfo().Assembly.CodeBase).LocalPath);
            bus.AddHandlersAndTranslators(directory, "Tests*.dll", "Tests.Mocks");

            bus.Handle(new Message2());

            Assert.Equal(1, message2Consumer.MessageReceivedCount);
        }
        public void CompareCapacity()
        {
            var message1 = new Message1 {
                CorrelationId = "1234"
            };

            var bus = new Bus();

            bus.AddHandler(new Message2Consumer());
            bus.AddTranslator(new Pipe());
            var stopwatch = Stopwatch.StartNew();

            for (var i = 0; i < 53000000; ++i)
            {
                bus.Handle(message1);
            }
            Console.WriteLine(stopwatch.Elapsed.ToEnglishString());

            var bus1      = new Bus();
            var directory = Path.GetDirectoryName(new Uri(GetType().Assembly.CodeBase).LocalPath);

            bus1.AddHandlersAndTranslators(directory, "Tests*.dll", GetType().Namespace);

            stopwatch = Stopwatch.StartNew();
            for (var i = 0; i < 53000000; ++i)
            {
                bus1.Handle(message1);
            }
            Console.WriteLine(stopwatch.Elapsed.ToEnglishString());
        }
        public void CanFindConsumers()
        {
            var bus       = new Bus();
            var directory = Path.GetDirectoryName(new Uri(GetType().Assembly.CodeBase).LocalPath);

            bus.AddHandlersAndTranslators(directory, "Tests*.dll", "Tests.Mocks");

            Assert.AreEqual(3, bus._consumerInvokers.Count);
        }
예제 #4
0
        public void CorrectConsumersFound()
        {
            var bus       = new Bus();
            var directory = Path.GetDirectoryName(new Uri(GetType().Assembly.CodeBase).LocalPath);

            bus.AddHandlersAndTranslators(directory, "Tests*.dll", GetType().Namespace);

            Assert.IsTrue(bus._consumerInvokers.ContainsKey(typeof(Message2).GUID));
            Assert.IsTrue(bus._consumerInvokers.ContainsKey(typeof(Message1).GUID));
        }
        public void CanFindConsumers()
        {
            var bus       = new Bus();
            var directory = Path.GetDirectoryName(new Uri(GetType().GetTypeInfo().Assembly.CodeBase).LocalPath);

            bus.AddHandlersAndTranslators(directory, "Tests*.dll", "Tests.Mocks");

#if SUPPORT_ASYNC_CONSUMER
            Assert.Equal(3, bus._consumerInvokers.Count);
#else
            Assert.Equal(2, bus._consumerInvokers.Count);
#endif
        }
        public async Task DiscoveredBusAsynchronousConsumerAsynchronouslyConsumesCorrectly()
        {
            var bus       = new Bus();
            var directory = Path.GetDirectoryName(new Uri(GetType().GetTypeInfo().Assembly.CodeBase).LocalPath);

            bus.AddHandlersAndTranslators(directory, "Tests*.dll", GetType().Namespace);

            var message3 = new Message3 {
                CorrelationId = "1234"
            };
            await bus.HandleAsync(message3);

            Assert.NotNull(Message3AsyncConsumer.LastMessageReceived);
            Assert.Equal(message3.CorrelationId, Message3AsyncConsumer.LastMessageReceived.CorrelationId);
        }
        public void CorrectConsumersFound()
        {
            var bus       = new Bus();
            var directory = Path.GetDirectoryName(new Uri(GetType().GetTypeInfo().Assembly.CodeBase).LocalPath);

            bus.AddHandlersAndTranslators(directory, "Tests*.dll", GetType().Namespace);

            // ReSharper disable AssignNullToNotNullAttribute
#if SUPPORT_ASYNC_CONSUMER
            Assert.True(bus._consumerInvokers.ContainsKey(typeof(Message3).AssemblyQualifiedName));
#endif
            Assert.True(bus._consumerInvokers.ContainsKey(typeof(Message2).AssemblyQualifiedName));
            Assert.True(bus._consumerInvokers.ContainsKey(typeof(Message1).AssemblyQualifiedName));
            // ReSharper restore AssignNullToNotNullAttribute
        }
        public void HandlerResolverIsInvoked()
        {
            var bus         = new Bus();
            var calledCount = 0;

            bus.AddResolver(() =>
            {
                calledCount++;
                return(new Message2Consumer());
            });
            var directory = Path.GetDirectoryName(new Uri(GetType().GetTypeInfo().Assembly.CodeBase).LocalPath);

            bus.AddHandlersAndTranslators(directory, "Tests*.dll", "Tests.Mocks");

            Assert.Equal(1, calledCount);
        }
        public void DiscoveredBusConsumesMessageCorrectly()
        {
            var bus       = new Bus();
            var directory = Path.GetDirectoryName(new Uri(GetType().GetTypeInfo().Assembly.CodeBase).LocalPath);

            bus.AddHandlersAndTranslators(directory, "Tests*.dll", GetType().Namespace);

            var message1 = new Message1 {
                CorrelationId = "1234"
            };

            bus.Handle(message1);

            Assert.Same(message1, Pipe.LastMessageProcessed);
            Assert.NotNull(Message2Consumer.LastMessageReceived);
            Assert.Equal(message1.CorrelationId, Message2Consumer.LastMessageReceived.CorrelationId);
        }
        public void TranslatorResolverIsInvoked()
        {
            var bus         = new Bus();
            var calledCount = 0;

            bus.AddResolver(() =>
            {
                calledCount++;
                return(new Pipe());
            });
            var directory            = Path.GetDirectoryName(new Uri(GetType().GetTypeInfo().Assembly.CodeBase).LocalPath);
            IEnumerable <Type> types = typeof(IConsumer <>).ByImplementedInterfaceInDirectory(directory, "Tests*.dll", "Tests.Mocks");

            bus.AddHandlersAndTranslators(types);

            Assert.Equal(1, calledCount);
        }