Beispiel #1
0
        public PipelineGlobalInboxContextTests()
        {
            _inbox = new InMemoryInbox();

            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyGlobalInboxCommandHandler>();

            var container = new ServiceCollection();

            container.AddTransient <MyGlobalInboxCommandHandler>();
            container.AddSingleton <IAmAnInbox>(_inbox);
            container.AddTransient <UseInboxHandler <MyCommand> >();

            var handlerFactory = new ServiceProviderHandlerFactory(container.BuildServiceProvider());

            _requestContext = new RequestContext();

            _inboxConfiguration = new InboxConfiguration(
                scope: InboxScope.All,
                context: (handlerType) => CONTEXT_KEY);

            _chainBuilder = new PipelineBuilder <MyCommand>(registry, (IAmAHandlerFactory)handlerFactory, _inboxConfiguration);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
        public MessagePumpDispatchAsyncTests()
        {
            var subscriberRegistry = new SubscriberRegistry();

            subscriberRegistry.RegisterAsync <MyEvent, MyEventHandlerAsyncWithContinuation>();

            var handlerFactory   = new TestHandlerFactoryAsync <MyEvent, MyEventHandlerAsyncWithContinuation>(() => new MyEventHandlerAsyncWithContinuation());
            var commandProcessor = new CommandProcessor(
                subscriberRegistry,
                handlerFactory,
                new InMemoryRequestContextFactory(),
                new PolicyRegistry());

            PipelineBuilder <MyEvent> .ClearPipelineCache();

            var channel = new FakeChannel();
            var mapper  = new MyEventMessageMapper();

            _messagePump = new MessagePumpAsync <MyEvent>(commandProcessor, mapper)
            {
                Channel = channel, TimeoutInMilliseconds = 5000
            };

            var message = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_EVENT), new MessageBody(JsonSerializer.Serialize(_myEvent)));

            channel.Enqueue(message);
            var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody(""));

            channel.Enqueue(quitMessage);
        }
Beispiel #3
0
        public PublishingToMultipleSubscribersAsyncTests()
        {
            var registry = new SubscriberRegistry();

            registry.RegisterAsync <MyEvent, MyEventHandlerAsync>();
            registry.RegisterAsync <MyEvent, MyOtherEventHandlerAsync>();
            registry.RegisterAsync <MyEvent, MyThrowingEventHandlerAsync>();

            var container = new ServiceCollection();

            container.AddTransient <MyEventHandlerAsync>();
            container.AddTransient <MyOtherEventHandlerAsync>();
            container.AddTransient <MyThrowingEventHandlerAsync>();
            container.AddSingleton(_receivedMessages);
            container.AddSingleton <IBrighterOptions>(new BrighterOptions()
            {
                HandlerLifetime = ServiceLifetime.Transient
            });

            var handlerFactory = new ServiceProviderHandlerFactory(container.BuildServiceProvider());


            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyEvent> .ClearPipelineCache();
        }
        public PipelineGlobalInboxTests()
        {
            IAmAnInboxSync inbox = new InMemoryInbox();

            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyCommandHandler>();

            var container = new ServiceCollection();

            container.AddTransient <MyCommandHandler>();
            container.AddSingleton <IAmAnInboxSync>(inbox);
            container.AddTransient <UseInboxHandler <MyCommand> >();
            container.AddSingleton <IBrighterOptions>(new BrighterOptions()
            {
                HandlerLifetime = ServiceLifetime.Transient
            });

            var handlerFactory = new ServiceProviderHandlerFactory(container.BuildServiceProvider());

            _requestContext = new RequestContext();

            InboxConfiguration inboxConfiguration = new InboxConfiguration();

            _chainBuilder = new PipelineBuilder <MyCommand>(registry, (IAmAHandlerFactorySync)handlerFactory, inboxConfiguration);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #5
0
        public CommandProcessorCallTestsNoTimeout()
        {
            _myRequest.RequestValue = "Hello World";

            var messageMapperRegistry = new MessageMapperRegistry(new SimpleMessageMapperFactory((type) =>
            {
                if (type == typeof(MyRequestMessageMapper))
                {
                    return(new MyRequestMessageMapper());
                }
                if (type == typeof(MyResponseMessageMapper))
                {
                    return(new MyResponseMessageMapper());
                }

                throw new ConfigurationException($"No mapper found for {type.Name}");
            }));

            messageMapperRegistry.Register <MyRequest, MyRequestMessageMapper>();
            messageMapperRegistry.Register <MyResponse, MyResponseMessageMapper>();

            var subscriberRegistry = new SubscriberRegistry();

            subscriberRegistry.Register <MyResponse, MyResponseHandler>();
            var handlerFactory = new TestHandlerFactorySync <MyResponse, MyResponseHandler>(() => new MyResponseHandler());

            var retryPolicy = Policy
                              .Handle <Exception>()
                              .Retry();

            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(1));

            var replySubs = new List <Subscription>
            {
                new Subscription <MyResponse>()
            };

            _commandProcessor = new CommandProcessor(
                subscriberRegistry,
                handlerFactory,
                new InMemoryRequestContextFactory(),
                new PolicyRegistry
            {
                { CommandProcessor.RETRYPOLICY, retryPolicy },
                { CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy }
            },
                messageMapperRegistry,
                new InMemoryOutbox(),
                new ProducerRegistry(new Dictionary <string, IAmAMessageProducer>()
            {
                { "MyRequest", new FakeMessageProducerWithPublishConfirmation() },
            }),
                replySubs,
                responseChannelFactory: new InMemoryChannelFactory());

            PipelineBuilder <MyRequest> .ClearPipelineCache();
        }
        public CommandProcessorNoMatchingSubcribersAsyncTests()
        {
            var registry       = new SubscriberRegistry();
            var handlerFactory = new TestHandlerFactoryAsync <MyEvent, MyEventHandlerAsync>(() => new MyEventHandlerAsync(_receivedMessages));

            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyEvent> .ClearPipelineCache();
        }
Beispiel #7
0
        public CommandProcessorSendTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyCommandHandler>();
            var handlerFactory = new TestHandlerFactory <MyCommand, MyCommandHandler>(() => new MyCommandHandler());

            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #8
0
        public PipelineWithHandlerDependenciesTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyDependentCommandHandler>();
            var handlerFactory = new TestHandlerFactory <MyCommand, MyDependentCommandHandler>(() => new MyDependentCommandHandler(new FakeRepository <MyAggregate>(new FakeSession())));

            _pipelineBuilder = new PipelineBuilder <MyCommand>(registry, handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #9
0
        public CancellingAsyncPipelineTests()
        {
            var registry = new SubscriberRegistry();

            registry.RegisterAsync <MyCommand, MyCancellableCommandHandlerAsync>();
            var handlerFactory = new TestHandlerFactoryAsync <MyCommand, MyCommandHandlerAsync>(() => new MyCommandHandlerAsync(_receivedMessages));

            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #10
0
        public CommandProcessorPublishEventTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyEvent, MyEventHandler>();
            var handlerFactory = new TestHandlerFactory <MyEvent, MyEventHandler>(() => new MyEventHandler(_receivedMessages));

            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyEvent> .ClearPipelineCache();
        }
Beispiel #11
0
        public PipelineBuildForCommandTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyCommandHandler>();
            var handlerFactory = new TestHandlerFactory <MyCommand, MyCommandHandler>(() => new MyCommandHandler());

            _pipelineBuilder = new PipelineBuilder <MyCommand>(registry, handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
        public PipelineForCommandTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyCommandHandler>();
            var handlerFactory = new TestHandlerFactorySync <MyCommand, MyCommandHandler>(() => new MyCommandHandler());

            _requestContext = new RequestContext();

            _chainBuilder = new PipelineBuilder <MyCommand>(registry, handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #13
0
        public BuildPipelineFaultsAsync()
        {
            var registry = new SubscriberRegistry();

            registry.RegisterAsync <MyCommand, MyCommandHandlerAsync>();

            //We'll simulate an IoC error
            IAmAHandlerFactoryAsync handlerFactory = new TestHandlerFactoryAsync <MyCommand, MyCommandHandlerAsync>(() => throw new InvalidOperationException("Could no create handler"));

            _requestContext = new RequestContext();

            _chainBuilder = new PipelineBuilder <MyCommand>(registry, handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
        public PipelineTerminationTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyUnusedCommandHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIocHandlerFactory(container);

            container.Register <IHandleRequests <MyCommand>, MyUnusedCommandHandler>();
            container.Register <IHandleRequests <MyCommand>, MyAbortingHandler <MyCommand> >();

            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
        public PipelineBuilderAsyncTests()
        {
            var registry = new SubscriberRegistry();

            registry.RegisterAsync <MyCommand, MyImplicitHandlerAsync>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIocHandlerFactoryAsync(container);

            container.Register <IHandleRequestsAsync <MyCommand>, MyImplicitHandlerAsync>();
            container.Register <IHandleRequestsAsync <MyCommand>, MyLoggingHandlerAsync <MyCommand> >();

            _pipelineBuilder = new PipelineBuilder <MyCommand>(registry, handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
        public PipelinePreAndPostFiltersTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyPreAndPostDecoratedHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIocHandlerFactory(container);

            container.Register <IHandleRequests <MyCommand>, MyPreAndPostDecoratedHandler>();
            container.Register <IHandleRequests <MyCommand>, MyValidationHandler <MyCommand> >();
            container.Register <IHandleRequests <MyCommand>, MyLoggingHandler <MyCommand> >();

            _pipelineBuilder = new PipelineBuilder <MyCommand>(registry, handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #17
0
        public CommandProcessorPipelineStepsTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyStepsPreAndPostDecoratedHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIocHandlerFactory(container);

            container.Register <IHandleRequests <MyCommand>, MyStepsPreAndPostDecoratedHandler>();
            container.Register <IHandleRequests <MyCommand>, MyStepsValidationHandler <MyCommand> >();
            container.Register <IHandleRequests <MyCommand>, MyStepsLoggingHandler <MyCommand> >();

            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
        public PipelineTerminationTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyUnusedCommandHandler>();

            var container = new ServiceCollection();

            container.AddTransient <MyUnusedCommandHandler>();
            container.AddTransient <MyAbortingHandler <MyCommand> >();
            var handlerFactory = new ServiceProviderHandlerFactory(container.BuildServiceProvider());


            _commandProcessor = new CommandProcessor(registry, (IAmAHandlerFactory)handlerFactory, (IAmAHandlerFactoryAsync)handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #19
0
        public PipelineForiegnAttributesTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyObsoleteCommandHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIocHandlerFactory(container);

            container.Register <IHandleRequests <MyCommand>, MyObsoleteCommandHandler>();
            container.Register <IHandleRequests <MyCommand>, MyValidationHandler <MyCommand> >();
            container.Register <IHandleRequests <MyCommand>, MyLoggingHandler <MyCommand> >();

            _pipelineBuilder = new PipelineBuilder <MyCommand>(registry, handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #20
0
        public PipelineMixedHandlersTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyMixedImplicitHandler>();

            var container = new ServiceCollection();

            container.AddTransient <MyMixedImplicitHandler>();
            container.AddTransient <MyLoggingHandlerAsync <MyCommand> >();

            var handlerFactory = new ServiceProviderHandlerFactory(container.BuildServiceProvider());

            _pipelineBuilder = new PipelineBuilder <MyCommand>(registry, (IAmAHandlerFactory)handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #21
0
        public PipelineCleanupTests()
        {
            s_released = string.Empty;

            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyPreAndPostDecoratedHandler>();
            registry.Register <MyCommand, MyLoggingHandler <MyCommand> >();

            var handlerFactory = new CheapHandlerFactory();

            _pipelineBuilder = new PipelineBuilder <MyCommand>(registry, handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();

            _pipelineBuilder.Build(new RequestContext()).Any();
        }
        public CommandProcessorBuildDefaultInboxSendTests()
        {
            var subscriberRegistry = new SubscriberRegistry();

            //This handler has no Inbox attribute
            subscriberRegistry.Add(typeof(MyCommand), typeof(MyCommandHandler));

            var container = new ServiceCollection();

            container.AddTransient <MyCommandHandler>();
            container.AddSingleton <IAmAnInboxSync, InMemoryInbox>();
            container.AddTransient <UseInboxHandler <MyCommand> >();
            container.AddSingleton <IBrighterOptions>(new BrighterOptions()
            {
                HandlerLifetime = ServiceLifetime.Transient
            });


            _provider = container.BuildServiceProvider();
            var handlerFactory = new ServiceProviderHandlerFactory(_provider);

            var retryPolicy = Policy
                              .Handle <Exception>()
                              .Retry();

            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(1));

            var inboxConfiguration = new InboxConfiguration(
                InboxScope.All,                      //grab all the events
                onceOnly: true,                      //only allow once
                actionOnExists: OnceOnlyAction.Throw //throw on duplicates (we should  be the only entry after)
                );

            _commandProcessor = new CommandProcessor(
                subscriberRegistry,
                handlerFactory,
                new InMemoryRequestContextFactory(),
                new PolicyRegistry {
                { CommandProcessor.RETRYPOLICY, retryPolicy }, { CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy }
            },
                inboxConfiguration: inboxConfiguration
                );

            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #23
0
        public CommandProcessorPublishMultipleMatchesAsyncTests()
        {
            var registry = new SubscriberRegistry();

            registry.RegisterAsync <MyEvent, MyEventHandlerAsync>();
            registry.RegisterAsync <MyEvent, MyOtherEventHandlerAsync>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIocHandlerFactoryAsync(container);

            container.Register <IHandleRequestsAsync <MyEvent>, MyEventHandlerAsync>();
            container.Register <IHandleRequestsAsync <MyEvent>, MyOtherEventHandlerAsync>();
            container.Register(_receivedMessages);

            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyEvent> .ClearPipelineCache();
        }
Beispiel #24
0
        public PipelinePreAndPostFiltersAsyncTests()
        {
            var registry = new SubscriberRegistry();

            registry.RegisterAsync <MyCommand, MyPreAndPostDecoratedHandlerAsync>();

            var container = new ServiceCollection();

            container.AddTransient <MyPreAndPostDecoratedHandlerAsync>();
            container.AddTransient <MyValidationHandlerAsync <MyCommand> >();
            container.AddTransient <MyLoggingHandlerAsync <MyCommand> >();

            var handlerFactory = new ServiceProviderHandlerFactory(container.BuildServiceProvider());

            _pipelineBuilder = new PipelineBuilder <MyCommand>(registry, (IAmAHandlerFactoryAsync)handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #25
0
        public CommandProcessorPipelineStepsTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyStepsPreAndPostDecoratedHandler>();

            var container = new ServiceCollection();

            container.AddTransient <MyStepsPreAndPostDecoratedHandler>();
            container.AddTransient <MyStepsValidationHandler <MyCommand> >();
            container.AddTransient <MyStepsLoggingHandler <MyCommand> >();

            var handlerFactory = new ServiceProviderHandlerFactory(container.BuildServiceProvider());

            _commandProcessor = new CommandProcessor(registry, (IAmAHandlerFactory)handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #26
0
        public PipelineForeignAttributesTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyObsoleteCommandHandler>();

            var container = new ServiceCollection();

            container.AddTransient <MyObsoleteCommandHandler>();
            container.AddTransient <MyValidationHandler <MyCommand> >();
            container.AddTransient <MyLoggingHandler <MyCommand> >();

            var handlerFactory = new ServiceProviderHandlerFactory(container.BuildServiceProvider());

            _pipelineBuilder = new PipelineBuilder <MyCommand>(registry, (IAmAHandlerFactory)handlerFactory);
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #27
0
        public CommandProcessorSendWithMultipleMatchesTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyCommand, MyCommandHandler>();
            registry.Register <MyCommand, MyImplicitHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIocHandlerFactory(container);

            container.Register <IHandleRequests <MyCommand>, MyCommandHandler>();
            container.Register <IHandleRequests <MyCommand>, MyImplicitHandler>();
            container.Register <IHandleRequests <MyCommand>, MyLoggingHandler <MyCommand> >();
            container.Register(_receivedMessages);

            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }
Beispiel #28
0
        public CommandProcessorPublishMultipleMatchesTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyEvent, MyEventHandler>();
            registry.Register <MyEvent, MyOtherEventHandler>();

            var container = new ServiceCollection();

            container.AddTransient <MyEventHandler>();
            container.AddTransient <MyOtherEventHandler>();
            container.AddSingleton(_receivedMessages);

            var handlerFactory = new ServiceProviderHandlerFactory(container.BuildServiceProvider());

            _commandProcessor = new CommandProcessor(registry, (IAmAHandlerFactory)handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyEvent> .ClearPipelineCache();
        }
        public CommandProcessorMissingOutMapperTests()
        {
            _myRequest.RequestValue = "Hello World";

            var messageMapperRegistry = new MessageMapperRegistry(new SimpleMessageMapperFactory((type) =>
            {
                if (type == typeof(MyResponseMessageMapper))
                {
                    return(new MyResponseMessageMapper());
                }

                throw new ConfigurationException($"No mapper found for {type.Name}");
            }));

            messageMapperRegistry.Register <MyResponse, MyResponseMessageMapper>();

            var subscriberRegistry = new SubscriberRegistry();

            subscriberRegistry.Register <MyResponse, MyResponseHandler>();
            var handlerFactory = new TestHandlerFactory <MyResponse, MyResponseHandler>(() => new MyResponseHandler());

            var retryPolicy = Policy
                              .Handle <Exception>()
                              .Retry();

            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(1));

            _commandProcessor = new CommandProcessor(
                subscriberRegistry,
                handlerFactory,
                new InMemoryRequestContextFactory(),
                new PolicyRegistry
            {
                { CommandProcessor.RETRYPOLICY, retryPolicy },
                { CommandProcessor.CIRCUITBREAKER, circuitBreakerPolicy }
            },
                messageMapperRegistry,
                (IAmAMessageProducer) new FakeMessageProducer(),
                responseChannelFactory: new InMemoryChannelFactory());

            PipelineBuilder <MyResponse> .ClearPipelineCache();
        }
Beispiel #30
0
        public PublishingToMultipleSubscribersTests()
        {
            var registry = new SubscriberRegistry();

            registry.Register <MyEvent, MyEventHandler>();
            registry.Register <MyEvent, MyOtherEventHandler>();
            registry.Register <MyEvent, MyThrowingEventHandler>();

            var container      = new TinyIoCContainer();
            var handlerFactory = new TinyIocHandlerFactory(container);

            container.Register <IHandleRequests <MyEvent>, MyEventHandler>();
            container.Register <IHandleRequests <MyEvent>, MyOtherEventHandler>();
            container.Register <IHandleRequests <MyEvent>, MyThrowingEventHandler>();
            container.Register(_receivedMessages);

            _commandProcessor = new CommandProcessor(registry, handlerFactory, new InMemoryRequestContextFactory(), new PolicyRegistry());
            PipelineBuilder <MyCommand> .ClearPipelineCache();
        }