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); }
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); }