public Builder WithTransport <TTransport>() where TTransport : ITransportConfig { var transport = Activator.CreateInstance <TTransport>(); if (null != transport.SenderFactory) { SenderCache.AddFactory(transport.SenderFactory); } if (null != transport.ReceiverFactory) { ReceiverCache.AddFactory(transport.ReceiverFactory); } if (null != transport.PublisherFactory) { PublisherCache.AddFactory(transport.PublisherFactory); } if (null != transport.SubscriberFactory) { SubscriberCache.AddFactory(transport.SubscriberFactory); } return(this); }
public Builder WithTransport <TTransport>(TTransport transport, Action <ITransportSetup> config) where TTransport : ITransportConfig { if (null != transport.SenderFactory) { SenderCache.AddFactory(transport.SenderFactory); } if (null != transport.ReceiverFactory) { ReceiverCache.AddFactory(transport.ReceiverFactory); } if (null != transport.PublisherFactory) { PublisherCache.AddFactory(transport.PublisherFactory); } if (null != transport.SubscriberFactory) { SubscriberCache.AddFactory(transport.SubscriberFactory); } config(transport.Configurer); return(this); }
public void Subscribe_WithNoRouting_ThrowsKeyNotFoundException() { // Arrange var cache = new SubscriberCache(topicRouter, monitorCache, subscriptionsCache); // Act TestDelegate subscribe = () => cache.Subscribe <OtherTopic>(); // Assert Assert.That(subscribe, Throws.TypeOf <KeyNotFoundException>()); }
public void AddFactory_WithFactory_AddsMonitorToMonitorCache() { // Arrange var cache = new SubscriberCache(topicRouter, monitorCache, subscriptionsCache); // Act cache.AddFactory(subscriberFactory); // Assert mockMonitorCache.Verify(m => m.AddMonitor(It.IsIn(monitor)), Times.Once); }
public void Subscribe_WithNoFactory_ThrowsMissingFactoryExcpetion() { // Arrange var cache = new SubscriberCache(topicRouter, monitorCache, subscriptionsCache); // Act TestDelegate subscriberFor = () => cache.Subscribe <Topic>(); // Assert Assert.That(subscriberFor, Throws.TypeOf <MissingFactoryException>()); }
public void AddFactory_WithNullFactory_ThrowsArgumentNullException() { // Arrange var cache = new SubscriberCache(topicRouter, monitorCache, subscriptionsCache); // Act TestDelegate addFactory = () => cache.AddFactory(null); // Assert Assert.That(addFactory, Throws.ArgumentNullException); }
public void AddFactory_WithFactory_AddsToFactoriesCollection() { // Arrange var cache = new SubscriberCache(topicRouter, monitorCache, subscriptionsCache); // Act cache.AddFactory(subscriberFactory); // Assert CollectionAssert.Contains(cache.SubscriberFactories, subscriberFactory); Assert.That(cache.SubscriberFactories.Count, Is.EqualTo(1)); }
public void Unsubscribe_WithFactory_ForwardsToSubscriptionsCache() { // Arrange var cache = new SubscriberCache(topicRouter, monitorCache, subscriptionsCache); cache.AddFactory(subscriberFactory); // Act cache.Unsubscribe <Topic>(); // Assert mockSubscriptionsCache.Verify(m => m.Remove <Topic>(It.IsIn(subscriber)), Times.Once); }
public void Subscribe_WithSubscriber_AddsSubscriptionToSubscriptionsCache() { // Arrange var cache = new SubscriberCache(topicRouter, monitorCache, subscriptionsCache); cache.AddFactory(subscriberFactory); // Act cache.Subscribe <Topic>(); // Assert mockSubscriptionsCache.Verify(m => m.Add <Topic>(It.IsIn(subscriber)), Times.Once); }
public void SubscriberFor_WithRoutingAndFactory_CallsFactoryCreate() { // Arrange var cache = new SubscriberCache(topicRouter, monitorCache, subscriptionsCache); cache.AddFactory(subscriberFactory); // Act var subscriber = cache.SubscriberFor <Topic>(); // Assert mockSubscriberFactory.Verify(m => m.CreateSubscriber(It.IsIn(address)), Times.Once); }
public void AddFactory_WithFactoryAlreadyAdded_DoesNothing() { // Arrange var cache = new SubscriberCache(topicRouter, monitorCache, subscriptionsCache); cache.AddFactory(subscriberFactory); // Act cache.AddFactory(subscriberFactory); // Assert CollectionAssert.Contains(cache.SubscriberFactories, subscriberFactory); Assert.That(cache.SubscriberFactories.Count, Is.EqualTo(1)); mockMonitorCache.Verify(m => m.AddMonitor(It.IsIn(monitor)), Times.Once); }
public Builder(string name) { this.name = name; TopicRouter = new TopicRouter(); MonitorCache = new MonitorCache(); RequestRouter = new RequestRouter(); PackageFactory = new PackageFactory(); TopicDispatcher = new TopicDispatcher(); RequestDispatcher = new RequestDispatcher(); SubscriptionsCache = new SubscriptionsCache(); SerializerCache = new SerializerCache(); SenderCache = new SenderCache(RequestRouter, MonitorCache); ReceiverCache = new ReceiverCache(MonitorCache); PublisherCache = new PublisherCache(MonitorCache); SubscriberCache = new SubscriberCache(TopicRouter, MonitorCache, SubscriptionsCache); }