public void SetUp() { Builder = new FuncBuilder(); InMemoryFaultManager = new Faults.InMemory.FaultManager(); FakeReceiver = new FakeReceiver(); var configurationBuilder = new BusConfiguration(); configurationBuilder.EndpointName("xyz"); configurationBuilder.AssembliesToScan(new Assembly[0]); Transport = new TransportReceiver(new TransactionSettings(true, TimeSpan.FromSeconds(30), IsolationLevel.ReadCommitted, 5, false, false), 1, 0, FakeReceiver, InMemoryFaultManager, new SettingsHolder(), configurationBuilder.BuildConfiguration()); RegisterTypes(); Builder.Register <IManageMessageFailures>(() => InMemoryFaultManager); Builder.Register <TransportReceiver>(() => Transport); //var configurer = new SatelliteConfigurer(); //configurer.Customize(configure); var launcher = new SatelliteLauncher(Builder); BeforeRun(); launcher.Start(); }
public void Verify_order() { var builder = new FuncBuilder(); var unitOfWork1 = new CountingUnitOfWork(); var unitOfWork2 = new CountingUnitOfWork(); var unitOfWork3 = new CountingUnitOfWork(); builder.Register <IManageUnitsOfWork>(() => unitOfWork1); builder.Register <IManageUnitsOfWork>(() => unitOfWork2); builder.Register <IManageUnitsOfWork>(() => unitOfWork3); var runner = new UnitOfWorkRunner { Builder = builder }; runner.Begin(); runner.End(); Assert.AreEqual(1, unitOfWork1.BeginCallIndex); Assert.AreEqual(2, unitOfWork2.BeginCallIndex); Assert.AreEqual(3, unitOfWork3.BeginCallIndex); Assert.AreEqual(3, unitOfWork1.EndCallIndex); Assert.AreEqual(2, unitOfWork2.EndCallIndex); Assert.AreEqual(1, unitOfWork3.EndCallIndex); }
public void SetUp() { Builder = new FuncBuilder(); InMemoryFaultManager = new NServiceBus.Faults.InMemory.FaultManager(); FakeReceiver = new FakeReceiver(); var configurationBuilder = new BusConfiguration(); configurationBuilder.EndpointName("xyz"); configurationBuilder.AssembliesToScan(new Assembly[0]); Transport = new TransportReceiver(new TransactionSettings(true, TimeSpan.FromSeconds(30), IsolationLevel.ReadCommitted, 5, false, false), 1, 0, FakeReceiver, InMemoryFaultManager, new SettingsHolder(), configurationBuilder.BuildConfiguration()); RegisterTypes(); Builder.Register<IManageMessageFailures>(() => InMemoryFaultManager); Builder.Register<TransportReceiver>(() => Transport); //var configurer = new SatelliteConfigurer(); //configurer.Customize(configure); var launcher = new SatelliteLauncher(Builder); BeforeRun(); launcher.Start(); }
public void Verify_order() { var builder = new FuncBuilder(); var unitOfWork1 = new CountingUnitOfWork(); var unitOfWork2 = new CountingUnitOfWork(); var unitOfWork3 = new CountingUnitOfWork(); builder.Register<IManageUnitsOfWork>(() => unitOfWork1); builder.Register<IManageUnitsOfWork>(() => unitOfWork2); builder.Register<IManageUnitsOfWork>(() => unitOfWork3); var runner = new UnitOfWorkRunner { Builder = builder }; runner.Begin(); runner.End(); Assert.AreEqual(1, unitOfWork1.BeginCallIndex); Assert.AreEqual(2, unitOfWork2.BeginCallIndex); Assert.AreEqual(3, unitOfWork3.BeginCallIndex); Assert.AreEqual(3, unitOfWork1.EndCallIndex); Assert.AreEqual(2, unitOfWork2.EndCallIndex); Assert.AreEqual(1, unitOfWork3.EndCallIndex); }
public void SetUp() { Builder = new FuncBuilder(); InMemoryFaultManager = new Faults.InMemory.FaultManager(); FakeReceiver = new FakeReceiver(); Transport = new TransportReceiver { Receiver = FakeReceiver, TransactionSettings = TransactionSettings.Default }; Configure.With(new Assembly[0]) .DefineEndpointName("Test") .DefaultBuilder(); Configure.Instance.Builder = Builder; RegisterTypes(); Builder.Register <IManageMessageFailures>(() => InMemoryFaultManager); Builder.Register <TransportReceiver>(() => Transport); var configurer = new SatelliteConfigurer(); configurer.Init(); var launcher = new SatelliteLauncher { Builder = Builder, }; BeforeRun(); launcher.Start(); }
public void SetUp() { Builder = new FuncBuilder(); InMemoryFaultManager = new Faults.InMemory.FaultManager(); FakeReceiver = new FakeReceiver(); Transport = new TransportReceiver { Receiver = FakeReceiver, TransactionSettings = TransactionSettings.Default }; Configure.With(new Assembly[0]) .DefineEndpointName("Test") .DefaultBuilder(); Configure.Instance.Builder = Builder; RegisterTypes(); Builder.Register<IManageMessageFailures>(() => InMemoryFaultManager); Builder.Register<TransportReceiver>(() => Transport); var configurer = new SatelliteConfigurer(); configurer.Init(); var launcher = new SatelliteLauncher(); BeforeRun(); launcher.Start(); }
public void Should_pass_exception_to_cleanup() { var builder = new FuncBuilder(); var unitOfWork = new CaptureExceptionPassedToEndUnitOfWork(); var throwingUoW = new UnitOfWorkThatThrowsFromEnd(); builder.Register <IManageUnitsOfWork>(() => unitOfWork); builder.Register <IManageUnitsOfWork>(() => throwingUoW); var aggregateException = Assert.Throws <AggregateException>(() => InvokeBehavior(builder)); Assert.AreSame(throwingUoW.ExceptionThrownFromEnd, unitOfWork.Exception); Assert.AreSame(throwingUoW.ExceptionThrownFromEnd, aggregateException.InnerExceptions.Single()); }
public void Should_pass_exception_to_cleanup() { var builder = new FuncBuilder(); var unitOfWork = new CaptureExceptionPassedToEndUnitOfWork(); var throwingUoW = new UnitOfWorkThatThrowsFromEnd(); builder.Register<IManageUnitsOfWork>(() => unitOfWork); builder.Register<IManageUnitsOfWork>(() => throwingUoW); var aggregateException = Assert.Throws<AggregateException>(() => InvokeBehavior(builder)); Assert.AreSame(throwingUoW.ExceptionThrownFromEnd, unitOfWork.Exception); Assert.AreSame(throwingUoW.ExceptionThrownFromEnd, aggregateException.InnerExceptions.Single()); }
public void Should_pass_exception_to_cleanup() { var builder = new FuncBuilder(); var unitOfWork = new CaptureExceptionPassedToEndUnitOfWork(); var throwingUoW = new UnitOfWorkThatThrowsFromEnd(); builder.Register <IManageUnitsOfWork>(() => unitOfWork); builder.Register <IManageUnitsOfWork>(() => throwingUoW); //since it is a single exception then it will not be an AggregateException var exception = Assert.Throws <InvalidOperationException>(() => InvokeBehavior(builder)); Assert.AreSame(throwingUoW.ExceptionThrownFromEnd, unitOfWork.Exception); Assert.AreSame(throwingUoW.ExceptionThrownFromEnd, exception); }
public void When_first_throw_second_is_cleaned_up() { var builder = new FuncBuilder(); var unitOfWorkThatThrowsFromEnd = new UnitOfWorkThatThrowsFromEnd(); var unitOfWork = new UnitOfWork(); builder.Register <IManageUnitsOfWork>(() => unitOfWorkThatThrowsFromEnd); builder.Register <IManageUnitsOfWork>(() => unitOfWork); Assert.Throws <AggregateException>(() => InvokeBehavior(builder)); Assert.IsTrue(unitOfWorkThatThrowsFromEnd.BeginCalled); Assert.IsTrue(unitOfWorkThatThrowsFromEnd.EndCalled); Assert.IsTrue(unitOfWork.BeginCalled); Assert.IsTrue(unitOfWork.EndCalled); }
public new void SetUp() { persister = new InMemorySagaPersister(); FuncBuilder.Register <ISagaPersister>(() => persister); Features.Sagas.Clear(); }
public void Should_invoke_begin_and_end_message() { var endCalled = false; var messageModule = new StubMessageModule(); bool beginCalled = false; messageModule.OnBegin = () => { Assert.False(endCalled); beginCalled = true; }; messageModule.OnEnd = () => { Assert.True(beginCalled); endCalled = true; }; FuncBuilder.Register <IMessageModule>(() => messageModule); SimulateMessageBeeingAbortedDueToRetryCountExceeded(Helpers.Helpers.EmptyTransportMessage()); Assert.True(beginCalled); Assert.True(endCalled); }
public void SetUp() { Builder = new FuncBuilder(); InMemoryFaultManager = new NServiceBus.Faults.InMemory.FaultManager(); TransportBuilder = new FakeTransportBuilder(); Configure.With(new Assembly[0]); Configure.Instance.Builder = Builder; RegisterTypes(); Builder.Register<IManageMessageFailures>(() => InMemoryFaultManager); var configurer = new SatelliteConfigurer(); configurer.Init(); //configurer.Run(); var launcher = new NonThreadingSatelliteLauncher { Builder = Builder, TransportBuilder = TransportBuilder }; BeforeRun(); launcher.Run(); }
public void Should_invoke_the_begin_and_end_on_the_message_module() { var endCalled = false; var messageModule = new StubMessageModule(); bool beginCalled = false; var receivedMessage = Helpers.Helpers.EmptyTransportMessage(); messageModule.OnBegin = () => { Assert.False(endCalled); beginCalled = true; Assert.AreEqual(bus.CurrentMessageContext.Id, receivedMessage.Id); }; messageModule.OnEnd = () => { Assert.True(beginCalled); endCalled = true; Assert.AreEqual(bus.CurrentMessageContext.Id, receivedMessage.Id); }; FuncBuilder.Register <IMessageModule>(() => messageModule); ReceiveMessage(receivedMessage); Assert.True(beginCalled); Assert.True(endCalled); }
public void When_first_throw_second_is_cleaned_up() { var builder = new FuncBuilder(); var unitOfWorkThatThrowsFromEnd = new UnitOfWorkThatThrowsFromEnd(); var unitOfWork = new UnitOfWork(); builder.Register<IManageUnitsOfWork>(() => unitOfWorkThatThrowsFromEnd); builder.Register<IManageUnitsOfWork>(() => unitOfWork); //since it is a single exception then it will not be an AggregateException Assert.Throws<InvalidOperationException>(() => InvokeBehavior(builder)); Assert.IsTrue(unitOfWorkThatThrowsFromEnd.BeginCalled); Assert.IsTrue(unitOfWorkThatThrowsFromEnd.EndCalled); Assert.IsTrue(unitOfWork.BeginCalled); Assert.IsTrue(unitOfWork.EndCalled); }
public new void SetUp() { persister = new InMemorySagaPersister(); FuncBuilder.Register <ISagaPersister>(() => persister); sagas = new Sagas(); FuncBuilder.Register <SagaConfigurationCache>(() => sagas.sagaConfigurationCache); conventions = new Conventions(); }
public void SetUp() { Configure.GetEndpointNameAction = () => "TestEndpoint"; const string localAddress = "endpointA"; MasterNodeAddress = new Address(localAddress, "MasterNode"); try { Address.InitializeLocalAddress(localAddress); } catch // intentional { } MessageSerializer = new XmlMessageSerializer(MessageMapper); ExtensionMethods.GetStaticOutgoingHeadersAction = () => MessageHeaderManager.staticHeaders; gatewayAddress = MasterNodeAddress.SubScope("gateway"); messageSender = MockRepository.GenerateStub <ISendMessages>(); subscriptionStorage = new FakeSubscriptionStorage(); FuncBuilder.Register <IMutateOutgoingTransportMessages>(() => headerManager); FuncBuilder.Register <IMutateOutgoingTransportMessages>(() => new SentTimeMutator()); FuncBuilder.Register <DefaultDispatcherFactory>(() => new DefaultDispatcherFactory()); FuncBuilder.Register <EstimatedTimeToSLABreachCalculator>(() => SLABreachCalculator); unicastBus = new UnicastBus { MasterNodeAddress = MasterNodeAddress, TimeoutManagerAddress = MasterNodeAddress.SubScope("Timeouts"), MessageSerializer = MessageSerializer, Builder = FuncBuilder, MessageSender = messageSender, Transport = Transport, SubscriptionStorage = subscriptionStorage, AutoSubscribe = true, MessageMapper = MessageMapper, FailureManager = MockRepository.GenerateStub <IManageMessageFailures>() }; bus = unicastBus; FuncBuilder.Register <IMutateOutgoingTransportMessages>(() => new RelatedToMessageMutator { Bus = bus }); FuncBuilder.Register <IBus>(() => bus); ExtensionMethods.SetHeaderAction = headerManager.SetHeader; }
public void Should_append_end_exception_to_rethrow() { var builder = new FuncBuilder(); var unitOfWork = new UnitOfWorkThatThrowsFromEnd(); builder.Register<IManageUnitsOfWork>(() => unitOfWork); var aggregateException = Assert.Throws<AggregateException>(() => InvokeBehavior(builder)); Assert.AreSame(unitOfWork.ExceptionThrownFromEnd, aggregateException.InnerExceptions[0]); }
public void Should_append_end_exception_to_rethrow() { var builder = new FuncBuilder(); var unitOfWork = new UnitOfWorkThatThrowsFromEnd(); builder.Register<IManageUnitsOfWork>(() => unitOfWork); //since it is a single exception then it will not be an AggregateException var exception = Assert.Throws<InvalidOperationException>(() => InvokeBehavior(builder)); Assert.AreSame(unitOfWork.ExceptionThrownFromEnd, exception); }
public void When_first_throw_second_is_cleaned_up() { var builder = new FuncBuilder(); var unitOfWorkThatThrowsFromEnd = new UnitOfWorkThatThrowsFromEnd(); var unitOfWork = new UnitOfWork(); builder.Register <IManageUnitsOfWork>(() => unitOfWorkThatThrowsFromEnd); builder.Register <IManageUnitsOfWork>(() => unitOfWork); var runner = new UnitOfWorkRunner { Builder = builder }; runner.Begin(); Assert.Throws <InvalidOperationException>(runner.End); Assert.IsTrue(unitOfWorkThatThrowsFromEnd.BeginCalled); Assert.IsTrue(unitOfWorkThatThrowsFromEnd.EndCalled); Assert.IsTrue(unitOfWork.BeginCalled); Assert.IsTrue(unitOfWork.EndCalled); }
public void Verify_order() { var builder = new FuncBuilder(); var unitOfWork1 = new CountingUnitOfWork(); var unitOfWork2 = new CountingUnitOfWork(); var unitOfWork3 = new CountingUnitOfWork(); builder.Register<IManageUnitsOfWork>(() => unitOfWork1); builder.Register<IManageUnitsOfWork>(() => unitOfWork2); builder.Register<IManageUnitsOfWork>(() => unitOfWork3); InvokeBehavior(builder); Assert.AreEqual(1, unitOfWork1.BeginCallIndex); Assert.AreEqual(2, unitOfWork2.BeginCallIndex); Assert.AreEqual(3, unitOfWork3.BeginCallIndex); Assert.AreEqual(3, unitOfWork1.EndCallIndex); Assert.AreEqual(2, unitOfWork2.EndCallIndex); Assert.AreEqual(1, unitOfWork3.EndCallIndex); }
public void Verify_order() { var builder = new FuncBuilder(); var unitOfWork1 = new CountingUnitOfWork(); var unitOfWork2 = new CountingUnitOfWork(); var unitOfWork3 = new CountingUnitOfWork(); builder.Register <IManageUnitsOfWork>(() => unitOfWork1); builder.Register <IManageUnitsOfWork>(() => unitOfWork2); builder.Register <IManageUnitsOfWork>(() => unitOfWork3); InvokeBehavior(builder); Assert.AreEqual(1, unitOfWork1.BeginCallIndex); Assert.AreEqual(2, unitOfWork2.BeginCallIndex); Assert.AreEqual(3, unitOfWork3.BeginCallIndex); Assert.AreEqual(3, unitOfWork1.EndCallIndex); Assert.AreEqual(2, unitOfWork2.EndCallIndex); Assert.AreEqual(1, unitOfWork3.EndCallIndex); }
public void Should_append_end_exception_to_rethrow() { var builder = new FuncBuilder(); var unitOfWork = new UnitOfWorkThatThrowsFromEnd(); builder.Register <IManageUnitsOfWork>(() => unitOfWork); var aggregateException = Assert.Throws <AggregateException>(() => InvokeBehavior(builder)); Assert.AreSame(unitOfWork.ExceptionThrownFromEnd, aggregateException.InnerExceptions[0]); }
public void Should_append_end_exception_to_rethrow() { var builder = new FuncBuilder(); var unitOfWork = new UnitOfWorkThatThrowsFromEnd(); builder.Register <IManageUnitsOfWork>(() => unitOfWork); //since it is a single exception then it will not be an AggregateException var exception = Assert.Throws <InvalidOperationException>(() => InvokeBehavior(builder)); Assert.AreSame(unitOfWork.ExceptionThrownFromEnd, exception); }
public void Should_set_the_processing_headers() { FuncBuilder.Register <IManageUnitsOfWork>(() => new ProcessingStatistics { Bus = bus }); var receivedMessage = Helpers.Helpers.Serialize(new EventMessage()); RegisterMessageType <EventMessage>(); ReceiveMessage(receivedMessage); Assert.True(bus.CurrentMessageContext.Headers.ContainsKey("NServiceBus.ProcessingStarted")); Assert.True(bus.CurrentMessageContext.Headers.ContainsKey("NServiceBus.ProcessingEnded")); }
public void Should_calculate_the_time_to_breach_sla() { FuncBuilder.Register <IManageUnitsOfWork>(() => new ProcessingStatistics { Bus = bus, EstimatedTimeToSLABreachCalculator = SLABreachCalculator }); var endpointSLA = TimeSpan.FromSeconds(60); SLABreachCalculator.Initialize(endpointSLA); var now = DateTime.UtcNow; RegisterMessageType <EventMessage>(); double secondsUntilSlaIsBreached = 0; SLABreachCalculator.SetCounterAction = d => secondsUntilSlaIsBreached = d; var receivedMessage = Helpers.Helpers.Serialize(new EventMessage()); receivedMessage.Headers[Headers.TimeSent] = now.ToWireFormattedString(); ReceiveMessage(receivedMessage); //need at least 2 messages to enable us to count Assert.AreEqual(0, secondsUntilSlaIsBreached); receivedMessage.Headers[Headers.TimeSent] = now.AddSeconds(-0.5).ToWireFormattedString(); ReceiveMessage(receivedMessage); //this should be rougly 2.1 since it takes 0.02 second to process both messages and the CT delta is 0.5 (since we fake a 0.5 delay) // 0,5/0,02 = 25 => means that the SLA will be busted in aprox 2 seconds var secondsUntilSlaIsBreached_2 = secondsUntilSlaIsBreached; Assert.Greater(secondsUntilSlaIsBreached_2, 1.5); Assert.Less(secondsUntilSlaIsBreached_2, 3.0); receivedMessage.Headers[Headers.TimeSent] = now.AddSeconds(-0.5).ToWireFormattedString(); ReceiveMessage(receivedMessage); var secondsUntilSlaIsBreached_3 = secondsUntilSlaIsBreached; Assert.Less(secondsUntilSlaIsBreached_2, secondsUntilSlaIsBreached_3); }
public void Should_pass_exception_to_cleanup() { var builder = new FuncBuilder(); var unitOfWork = new CaptureExceptionPassedToEndUnitOfWork(); builder.Register<IManageUnitsOfWork>(() => unitOfWork); var runner = new UnitOfWorkRunner { Builder = builder }; var exception = new Exception(); runner.Begin(); var aggregateException = Assert.Throws<AggregateException>(() => runner.AppendEndExceptionsAndRethrow(exception)); Assert.AreSame(exception, unitOfWork.Exception); Assert.AreSame(exception, aggregateException.InnerExceptions.Single()); }
public void Should_append_end_exception_to_rethrow() { var builder = new FuncBuilder(); var unitOfWork = new UnitOfWorkThatThrowsFromEnd(); builder.Register<IManageUnitsOfWork>(() => unitOfWork); var runner = new UnitOfWorkRunner { Builder = builder }; var exception = new Exception(); runner.Begin(); var aggregateException = Assert.Throws<AggregateException>(() => runner.AppendEndExceptionsAndRethrow(exception)); var innerExceptions = aggregateException.InnerExceptions; Assert.AreSame(exception, innerExceptions[0]); Assert.AreSame(unitOfWork.ExceptionThrownFromEnd, innerExceptions[1]); }
public void Should_invoke_saga_not_found_handlers_if_no_saga_instance_is_found() { RegisterSaga <MySaga>(); var invoked = false; FuncBuilder.Register <IHandleSagaNotFound>(() => { invoked = true; return(new SagaNotFoundHandler()); }); ReceiveMessage(new MessageThatMissesSaga()); Assert.True(invoked, "Not found handler should be invoked"); Assert.AreEqual(0, persister.CurrentSagaEntities.Count(), "No saga should be stored"); }
public void Should_pass_exception_to_cleanup() { var builder = new FuncBuilder(); var unitOfWork = new CaptureExceptionPassedToEndUnitOfWork(); builder.Register <IManageUnitsOfWork>(() => unitOfWork); var runner = new UnitOfWorkRunner { Builder = builder }; var exception = new Exception(); runner.Begin(); var aggregateException = Assert.Throws <AggregateException>(() => runner.AppendEndExceptionsAndRethrow(exception)); Assert.AreSame(exception, unitOfWork.Exception); Assert.AreSame(exception, aggregateException.InnerExceptions.Single()); }
public void Should_append_end_exception_to_rethrow() { var builder = new FuncBuilder(); var unitOfWork = new UnitOfWorkThatThrowsFromEnd(); builder.Register <IManageUnitsOfWork>(() => unitOfWork); var runner = new UnitOfWorkRunner { Builder = builder }; var exception = new Exception(); runner.Begin(); var aggregateException = Assert.Throws <AggregateException>(() => runner.AppendEndExceptionsAndRethrow(exception)); var innerExceptions = aggregateException.InnerExceptions; Assert.AreSame(exception, innerExceptions[0]); Assert.AreSame(unitOfWork.ExceptionThrownFromEnd, innerExceptions[1]); }
protected void RegisterSaga <T>(object sagaEntity = null) where T : new() { var sagaEntityType = GetSagaEntityType <T>(); var sagaHeaderIdFinder = typeof(HeaderSagaIdFinder <>).MakeGenericType(sagaEntityType); FuncBuilder.Register(sagaHeaderIdFinder); Features.Sagas.ConfigureSaga(typeof(T)); Features.Sagas.ConfigureFinder(sagaHeaderIdFinder); if (Features.Sagas.SagaEntityToMessageToPropertyLookup.ContainsKey(sagaEntityType)) { foreach (var entityLookups in Features.Sagas.SagaEntityToMessageToPropertyLookup[sagaEntityType]) { var propertyFinder = typeof(PropertySagaFinder <,>).MakeGenericType(sagaEntityType, entityLookups.Key); Features.Sagas.ConfigureFinder(propertyFinder); var propertyLookups = entityLookups.Value; var finder = Activator.CreateInstance(propertyFinder); propertyFinder.GetProperty("SagaProperty").SetValue(finder, propertyLookups.Key); propertyFinder.GetProperty("MessageProperty").SetValue(finder, propertyLookups.Value); FuncBuilder.Register(propertyFinder, () => finder); } } if (sagaEntity != null) { var se = (IContainSagaData)sagaEntity; persister.CurrentSagaEntities[se.Id] = new InMemorySagaPersister.VersionedSagaEntity { SagaEntity = se }; } RegisterMessageHandlerType <T>(); }
public void SetUp() { HandlerInvocationCache.Clear(); SettingsHolder.Reset(); SettingsHolder.SetDefault("Endpoint.SendOnly", false); Transport = new FakeTransport(); FuncBuilder = new FuncBuilder(); Configure.GetEndpointNameAction = () => "TestEndpoint"; const string localAddress = "endpointA"; MasterNodeAddress = new Address(localAddress, "MasterNode"); subscriptionPredicatesEvaluator = new SubscriptionPredicatesEvaluator(); router = new StaticMessageRouter(KnownMessageTypes()); handlerRegistry = new MessageHandlerRegistry(); MessageMetadataRegistry = new MessageMetadataRegistry { DefaultToNonPersistentMessages = false }; try { Address.InitializeLocalAddress(localAddress); } catch // intentional { } MessageSerializer = new XmlMessageSerializer(MessageMapper); ExtensionMethods.GetStaticOutgoingHeadersAction = () => MessageHeaderManager.staticHeaders; gatewayAddress = MasterNodeAddress.SubScope("gateway"); messageSender = MockRepository.GenerateStub <ISendMessages>(); subscriptionStorage = new FakeSubscriptionStorage(); subscriptionManager = new MessageDrivenSubscriptionManager { Builder = FuncBuilder, MessageSender = messageSender, SubscriptionStorage = subscriptionStorage }; FuncBuilder.Register <IMutateOutgoingTransportMessages>(() => headerManager); FuncBuilder.Register <IMutateIncomingMessages>(() => new FilteringMutator { SubscriptionPredicatesEvaluator = subscriptionPredicatesEvaluator }); FuncBuilder.Register <IMutateOutgoingTransportMessages>(() => new SentTimeMutator()); FuncBuilder.Register <IMutateIncomingTransportMessages>(() => subscriptionManager); FuncBuilder.Register <DefaultDispatcherFactory>(() => new DefaultDispatcherFactory()); FuncBuilder.Register <EstimatedTimeToSLABreachCalculator>(() => SLABreachCalculator); FuncBuilder.Register <ExtractIncomingPrincipal>(() => new WindowsImpersonator()); unicastBus = new UnicastBus { MasterNodeAddress = MasterNodeAddress, MessageSerializer = MessageSerializer, Builder = FuncBuilder, MessageSender = messageSender, Transport = Transport, MessageMapper = MessageMapper, MessagePublisher = new StorageDrivenPublisher { MessageSender = messageSender, SubscriptionStorage = subscriptionStorage }, MessageDeferrer = new TimeoutManagerDeferrer { MessageSender = messageSender, TimeoutManagerAddress = MasterNodeAddress.SubScope("Timeouts") }, SubscriptionManager = subscriptionManager, MessageMetadataRegistry = MessageMetadataRegistry, SubscriptionPredicatesEvaluator = subscriptionPredicatesEvaluator, HandlerRegistry = handlerRegistry, MessageRouter = router }; bus = unicastBus; FuncBuilder.Register <IMutateOutgoingTransportMessages>(() => new CausationMutator { Bus = bus }); FuncBuilder.Register <IBus>(() => bus); ExtensionMethods.SetHeaderAction = headerManager.SetHeader; }
protected void RegisterUow(IManageUnitsOfWork uow) { FuncBuilder.Register <IManageUnitsOfWork>(() => uow); }
public void SetUp() { transportDefinition = new Msmq(); HandlerInvocationCache.Clear(); SettingsHolder.Reset(); SettingsHolder.SetDefault("Endpoint.SendOnly", false); Transport = new FakeTransport(); FuncBuilder = new FuncBuilder(); Configure.GetEndpointNameAction = () => "TestEndpoint"; subscriptionPredicatesEvaluator = new SubscriptionPredicatesEvaluator(); router = new StaticMessageRouter(KnownMessageTypes()); handlerRegistry = new MessageHandlerRegistry(); MessageMetadataRegistry = new MessageMetadataRegistry { DefaultToNonPersistentMessages = false }; MessageSerializer = new XmlMessageSerializer(MessageMapper); //ExtensionMethods.GetStaticOutgoingHeadersAction = () => MessageHeaderManager.staticHeaders; gatewayAddress = MasterNodeAddress.SubScope("gateway"); messageSender = MockRepository.GenerateStub <ISendMessages>(); subscriptionStorage = new FakeSubscriptionStorage(); subscriptionManager = new MessageDrivenSubscriptionManager { Builder = FuncBuilder, MessageSender = messageSender, SubscriptionStorage = subscriptionStorage }; var pipelineBuilder = new PipelineBuilder(FuncBuilder); pipelineFactory = new PipelineExecutor(FuncBuilder, pipelineBuilder); FuncBuilder.Register <IMessageSerializer>(() => MessageSerializer); FuncBuilder.Register <ISendMessages>(() => messageSender); FuncBuilder.Register <MessageAuditer>(() => new MessageAuditer()); FuncBuilder.Register <LogicalMessageFactory>(() => new LogicalMessageFactory()); FuncBuilder.Register <IMutateIncomingMessages>(() => new FilteringMutator { SubscriptionPredicatesEvaluator = subscriptionPredicatesEvaluator }); FuncBuilder.Register <IMutateIncomingTransportMessages>(() => subscriptionManager); FuncBuilder.Register <EstimatedTimeToSLABreachCalculator>(() => SLABreachCalculator); FuncBuilder.Register <MessageMetadataRegistry>(() => MessageMetadataRegistry); FuncBuilder.Register <IMessageHandlerRegistry>(() => handlerRegistry); FuncBuilder.Register <ExtractIncomingPrincipal>(() => new WindowsImpersonator()); FuncBuilder.Register <IMessageMapper>(() => MessageMapper); FuncBuilder.Register <ExtractLogicalMessagesBehavior>(() => new ExtractLogicalMessagesBehavior { MessageSerializer = MessageSerializer, MessageMetadataRegistry = MessageMetadataRegistry, }); FuncBuilder.Register <ImpersonateSenderBehavior>(() => new ImpersonateSenderBehavior { ExtractIncomingPrincipal = MockRepository.GenerateStub <ExtractIncomingPrincipal>() }); FuncBuilder.Register <CreatePhysicalMessageBehavior>(() => new CreatePhysicalMessageBehavior()); FuncBuilder.Register <PipelineBuilder>(() => pipelineBuilder); FuncBuilder.Register <PipelineExecutor>(() => pipelineFactory); FuncBuilder.Register <TransportDefinition>(() => transportDefinition); var messagePublisher = new StorageDrivenPublisher { MessageSender = messageSender, SubscriptionStorage = subscriptionStorage }; var deferrer = new TimeoutManagerDeferrer { MessageSender = messageSender, TimeoutManagerAddress = MasterNodeAddress.SubScope("Timeouts") }; FuncBuilder.Register <IDeferMessages>(() => deferrer); FuncBuilder.Register <IPublishMessages>(() => messagePublisher); unicastBus = new UnicastBus { MasterNodeAddress = MasterNodeAddress, Builder = FuncBuilder, MessageSender = messageSender, Transport = Transport, MessageMapper = MessageMapper, SubscriptionManager = subscriptionManager, SubscriptionPredicatesEvaluator = subscriptionPredicatesEvaluator, MessageRouter = router }; bus = unicastBus; FuncBuilder.Register <IMutateOutgoingTransportMessages>(() => new CausationMutator { Bus = bus }); FuncBuilder.Register <IBus>(() => bus); FuncBuilder.Register <UnicastBus>(() => unicastBus); new HeaderBootstrapper { Builder = FuncBuilder }.SetupHeaderActions(); }
public void When_first_throw_second_is_cleaned_up() { var builder = new FuncBuilder(); var unitOfWorkThatThrowsFromEnd = new UnitOfWorkThatThrowsFromEnd(); var unitOfWork = new UnitOfWork(); builder.Register<IManageUnitsOfWork>(() => unitOfWorkThatThrowsFromEnd); builder.Register<IManageUnitsOfWork>(() => unitOfWork); var runner = new UnitOfWorkRunner { Builder = builder }; runner.Begin(); Assert.Throws<InvalidOperationException>(runner.End); Assert.IsTrue(unitOfWorkThatThrowsFromEnd.BeginCalled); Assert.IsTrue(unitOfWorkThatThrowsFromEnd.EndCalled); Assert.IsTrue(unitOfWork.BeginCalled); Assert.IsTrue(unitOfWork.EndCalled); }
public void Should_pass_exception_to_cleanup() { var builder = new FuncBuilder(); var unitOfWork = new CaptureExceptionPassedToEndUnitOfWork(); var throwingUoW = new UnitOfWorkThatThrowsFromEnd(); builder.Register<IManageUnitsOfWork>(() => unitOfWork); builder.Register<IManageUnitsOfWork>(() => throwingUoW); //since it is a single exception then it will not be an AggregateException var exception = Assert.Throws<InvalidOperationException>(() => InvokeBehavior(builder)); Assert.AreSame(throwingUoW.ExceptionThrownFromEnd, unitOfWork.Exception); Assert.AreSame(throwingUoW.ExceptionThrownFromEnd, exception); }
public void SetUp() { LicenseManager.InitializeLicense(); transportDefinition = new MsmqTransport(); settings = new SettingsHolder(); settings.SetDefault("EndpointName", "TestEndpoint"); settings.SetDefault("Endpoint.SendOnly", false); settings.SetDefault("MasterNode.Address", MasterNodeAddress); pipelineModifications = new PipelineModifications(); settings.Set <PipelineModifications>(pipelineModifications); ApplyPipelineModifications(); Transport = new FakeTransport(); FuncBuilder = new FuncBuilder(); FuncBuilder.Register <ReadOnlySettings>(() => settings); router = new StaticMessageRouter(KnownMessageTypes()); var conventions = new Conventions(); handlerRegistry = new MessageHandlerRegistry(conventions); MessageMetadataRegistry = new MessageMetadataRegistry(false, conventions); MessageSerializer = new XmlMessageSerializer(MessageMapper, conventions); messageSender = MockRepository.GenerateStub <ISendMessages>(); subscriptionStorage = new FakeSubscriptionStorage(); configure = new Configure(settings, FuncBuilder, new List <Action <IConfigureComponents> >(), new PipelineSettings(null)) { localAddress = Address.Parse("TestEndpoint") }; subscriptionManager = new SubscriptionManager { MessageSender = messageSender, SubscriptionStorage = subscriptionStorage, Configure = configure }; pipelineFactory = new PipelineExecutor(settings, FuncBuilder); FuncBuilder.Register <IMessageSerializer>(() => MessageSerializer); FuncBuilder.Register <ISendMessages>(() => messageSender); FuncBuilder.Register <LogicalMessageFactory>(() => new LogicalMessageFactory(MessageMetadataRegistry, MessageMapper, pipelineFactory)); FuncBuilder.Register <IManageSubscriptions>(() => subscriptionManager); FuncBuilder.Register <EstimatedTimeToSLABreachCalculator>(() => SLABreachCalculator); FuncBuilder.Register <MessageMetadataRegistry>(() => MessageMetadataRegistry); FuncBuilder.Register <IMessageHandlerRegistry>(() => handlerRegistry); FuncBuilder.Register <IMessageMapper>(() => MessageMapper); FuncBuilder.Register <DeserializeLogicalMessagesBehavior>(() => new DeserializeLogicalMessagesBehavior { MessageSerializer = MessageSerializer, MessageMetadataRegistry = MessageMetadataRegistry, }); FuncBuilder.Register <CreatePhysicalMessageBehavior>(() => new CreatePhysicalMessageBehavior()); FuncBuilder.Register <PipelineExecutor>(() => pipelineFactory); FuncBuilder.Register <TransportDefinition>(() => transportDefinition); var messagePublisher = new StorageDrivenPublisher { MessageSender = messageSender, SubscriptionStorage = subscriptionStorage }; var deferrer = new TimeoutManagerDeferrer { MessageSender = messageSender, TimeoutManagerAddress = MasterNodeAddress.SubScope("Timeouts"), Configure = configure, }; FuncBuilder.Register <IDeferMessages>(() => deferrer); FuncBuilder.Register <IPublishMessages>(() => messagePublisher); bus = new UnicastBus { Builder = FuncBuilder, MessageSender = messageSender, Transport = Transport, MessageMapper = MessageMapper, SubscriptionManager = subscriptionManager, MessageRouter = router, Settings = settings, Configure = configure, HostInformation = new HostInformation(Guid.NewGuid(), "HelloWorld") }; FuncBuilder.Register <IMutateOutgoingTransportMessages>(() => new CausationMutator { Bus = bus }); FuncBuilder.Register <IBus>(() => bus); FuncBuilder.Register <UnicastBus>(() => bus); FuncBuilder.Register <Conventions>(() => conventions); FuncBuilder.Register <Configure>(() => configure); }