protected override async Task <CommandMessageDispatcher> Given()
        {
            BusId             = Guid.NewGuid();
            MethodCallCounter = MethodCallCounter.CreateInstance(BusId);

            var clock                 = new SystemClock();
            var logger                = new ConsoleLogger();
            var typeProvider          = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { GetType().Namespace });
            var serializer            = new DataContractSerializer(typeProvider);
            var replyQueueNameSetting = new ReplyQueueNameSetting(
                new ApplicationNameSetting {
                Value = "TestApplication"
            },
                new InstanceNameSetting {
                Value = "TestInstance"
            },
                new PathFactory(new GlobalPrefixSetting()));
            var propertyInjector = new StubPropertyInjector(BusId);

            var handlerMap = new HandlerMapper(typeProvider).GetFullHandlerMap(typeof(IHandleCommand <>));

            _nimbusMessageFactory = new NimbusMessageFactory(new DefaultMessageTimeToLiveSetting(),
                                                             replyQueueNameSetting,
                                                             clock,
                                                             new DispatchContextManager());

            return(new CommandMessageDispatcher(new DependencyResolver(typeProvider),
                                                new NullInboundInterceptorFactory(),
                                                new NullLogger(),
                                                handlerMap,
                                                propertyInjector));
        }
Beispiel #2
0
        protected override Task <BusEventSender> Given()
        {
            _nimbusMessageSender = Substitute.For <INimbusMessageSender>();

            var transport = Substitute.For <INimbusTransport>();

            transport.GetTopicSender(Arg.Any <string>()).Returns(ci => _nimbusMessageSender);

            var clock = new SystemClock();
            var replyQueueNameSetting = new ReplyQueueNameSetting(
                new ApplicationNameSetting {
                Value = "TestApplication"
            },
                new InstanceNameSetting {
                Value = "TestInstance"
            });
            var nimbusMessageFactory = new NimbusMessageFactory(new DefaultMessageTimeToLiveSetting(),
                                                                replyQueueNameSetting,
                                                                clock,
                                                                new DispatchContextManager());
            var logger = Substitute.For <ILogger>();
            var knownMessageTypeVerifier = Substitute.For <IKnownMessageTypeVerifier>();
            var router                     = new DestinationPerMessageTypeRouter();
            var dependencyResolver         = new NullDependencyResolver();
            var outboundInterceptorFactory = new NullOutboundInterceptorFactory();
            var busCommandSender           = new BusEventSender(dependencyResolver,
                                                                knownMessageTypeVerifier,
                                                                logger,
                                                                nimbusMessageFactory,
                                                                transport,
                                                                outboundInterceptorFactory,
                                                                router);

            return(Task.FromResult(busCommandSender));
        }
        protected override async Task <CommandMessageDispatcher> Given()
        {
            var clock                 = new SystemClock();
            var logger                = new ConsoleLogger();
            var typeProvider          = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { GetType().Namespace });
            var serializer            = new DataContractSerializer(typeProvider);
            var replyQueueNameSetting = new ReplyQueueNameSetting(
                new ApplicationNameSetting {
                Value = "TestApplication"
            },
                new InstanceNameSetting {
                Value = "TestInstance"
            });

            var handlerMap = new HandlerMapper(typeProvider).GetFullHandlerMap(typeof(IHandleCommand <>));

            _nimbusMessageFactory = new NimbusMessageFactory(new DefaultMessageTimeToLiveSetting(),
                                                             replyQueueNameSetting,
                                                             clock,
                                                             new DispatchContextManager());

            return(new CommandMessageDispatcher(new DependencyResolver(typeProvider),
                                                new NullInboundInterceptorFactory(),
                                                new NullLogger(),
                                                handlerMap,
                                                Substitute.For <IPropertyInjector>()));
        }
Beispiel #4
0
        public void TheExceptionIsBubbledThroughTheInterceptors()
        {
            var interceptor     = Substitute.For <IInboundInterceptor>();
            var dispatcher      = GetRequestMessageDispatcher <ExceptingRequest, ExceptingResponse, ExceptingRequestHandler>(interceptor);
            var brokeredMessage = NimbusMessageFactory.Create("nullQueue", new ExceptingRequest()).Result;

            dispatcher.Dispatch(brokeredMessage).Wait();

            interceptor
            .Received()
            .OnRequestHandlerError(Arg.Any <ExceptingRequest>(), brokeredMessage, Arg.Any <Exception>());
        }
        public void TheExceptionIsBubbledBackThroughTheInterceptors()
        {
            var interceptor = Substitute.For<IInboundInterceptor>();
            interceptor
                .When(x => x.OnRequestHandlerExecuting(Arg.Any<EmptyRequest>(), Arg.Any<NimbusMessage>()))
                .Do(x => { throw new Exception("Ruh roh"); });
            var dispatcher = GetRequestMessageDispatcher<EmptyRequest, EmptyResponse, EmptyRequestHandler>(interceptor);
            var nimbusMessage = NimbusMessageFactory.Create("someQueue", new EmptyRequest()).Result;

            dispatcher.Dispatch(nimbusMessage).Wait();

            interceptor
                .Received()
                .OnRequestHandlerError(Arg.Any<EmptyRequest>(), nimbusMessage, Arg.Any<Exception>());
        }
Beispiel #6
0
        public void TheExceptionIsBubbledThroughTheInterceptors()
        {
            var interceptor   = Substitute.For <IInboundInterceptor>();
            var dispatcher    = GetEventMessageDispatcher <ExceptingEvent, ExceptingEventHandler>(interceptor);
            var nimbusMessage = NimbusMessageFactory.Create("someQueue", new ExceptingEvent()).Result;

            try
            {
                dispatcher.Dispatch(nimbusMessage).Wait();
            }
            catch (AggregateException)
            {
                // Dispatch rethrows the exception, don't care
            }

            interceptor
            .Received()
            .OnEventHandlerError(Arg.Any <ExceptingEvent>(), nimbusMessage, Arg.Any <Exception>());
        }
Beispiel #7
0
        protected MessageDispatcherTestBase()
        {
            var clock = Substitute.For <IClock>();
            var replyQueueNameSetting = new ReplyQueueNameSetting(
                new ApplicationNameSetting {
                Value = "TestApplication"
            },
                new InstanceNameSetting {
                Value = "TestInstance"
            });

            TypeProvider = new TestHarnessTypeProvider(new[] { GetType().Assembly }, new[] { GetType().Namespace });
            var serializer = new DataContractSerializer(TypeProvider);

            HandlerMapper        = new HandlerMapper(TypeProvider);
            NimbusMessageFactory = new NimbusMessageFactory(new DefaultMessageTimeToLiveSetting(),
                                                            replyQueueNameSetting,
                                                            clock,
                                                            new DispatchContextManager());
        }
        public void TheExceptionIsBubbledBackThroughTheInterceptors()
        {
            var interceptor = Substitute.For <IInboundInterceptor>();

            interceptor
            .When(x => x.OnCommandHandlerExecuting(Arg.Any <EmptyCommand>(), Arg.Any <NimbusMessage>()))
            .Do(x => { throw new Exception("Ruh roh"); });
            var dispatcher    = GetCommandMessageDispatcher <EmptyCommand, EmptyCommandHandler>(interceptor);
            var nimbusMessage = NimbusMessageFactory.Create("someQueue", new EmptyCommand()).Result;

            try
            {
                dispatcher.Dispatch(nimbusMessage).Wait();
            }
            catch (AggregateException)
            {
                // Dispatch rethrows the exception, don't care
            }

            interceptor
            .Received()
            .OnCommandHandlerError(Arg.Any <EmptyCommand>(), nimbusMessage, Arg.Any <Exception>());
        }