private void CheckTypeRegistration <TService, TContext>(
            TService service,
            Func <ListenerValidator <TService, TContext>, IHostBuilder, IHost> buildAction)
            where TService : IServiceFabricService <TContext>
            where TContext : ServiceContext
        {
            ListenerValidator <TService, TContext> validator = new ListenerValidator <TService, TContext>();

            IHostBuilder hostBuilder = new HostBuilder()
                                       .UseDefaultServiceProvider(options =>
            {
                options.ValidateOnBuild = true;
                options.ValidateScopes  = true;
            });

            IHost host = buildAction(validator, hostBuilder);
            IListenerBuilder <TService> builder = host.Services.GetService <IListenerBuilder <TService> >();

            Assert.IsNotNull(builder);

            KestrelListenerBuilder <MockStartup, TService, TContext> kestrelBuilder
                = (KestrelListenerBuilder <MockStartup, TService, TContext>)builder;

            IWebHost webHost = validator.ValidateListenerBuilder(service.Context, kestrelBuilder);

            validator.ValidateOmexTypesRegistered(webHost);
            validator.ValidateBuildFunction(service, kestrelBuilder);
        }
示例#2
0
        public void AddRemotingListener_ToStatelessService_RegisterType()
        {
            HostBuilder builder = new HostBuilder();
            ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> sfBuilder =
                MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatelessService, StatelessServiceContext>(builder);

            sfBuilder.AddRemotingListener <MockRemoteListenerBuilder <OmexStatelessService> >();

            IListenerBuilder <OmexStatelessService> value = builder.Build().Services.GetService <IListenerBuilder <OmexStatelessService> >();

            Assert.IsInstanceOfType(value, typeof(MockRemoteListenerBuilder <OmexStatelessService>));
        }
示例#3
0
        public void AddServiceListener_UsingTypeForStateless_RegisterInstance()
        {
            HostBuilder hostBuilder = new HostBuilder();

            new ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext>(hostBuilder)
            .AddServiceListener <TestListenerBuilder <OmexStatelessService> >();

            IListenerBuilder <OmexStatelessService> resolvedAction = hostBuilder
                                                                     .Build()
                                                                     .Services.GetService <IListenerBuilder <OmexStatelessService> >();

            Assert.IsNotNull(resolvedAction);
        }
示例#4
0
        public void AddServiceListener_UsingObject_RegisterInstance()
        {
            IListenerBuilder <IServiceFabricService <ServiceContext> > listenerBuilder = new Mock <IListenerBuilder <IServiceFabricService <ServiceContext> > >().Object;

            HostBuilder hostBuilder = new HostBuilder();

            new ServiceFabricHostBuilder <IServiceFabricService <ServiceContext>, ServiceContext>(hostBuilder)
            .AddServiceListener(p => listenerBuilder);

            IListenerBuilder <IServiceFabricService <ServiceContext> > resolvedAction = hostBuilder
                                                                                        .Build()
                                                                                        .Services.GetService <IListenerBuilder <IServiceFabricService <ServiceContext> > >();

            ReferenceEquals(listenerBuilder, resolvedAction);
        }
示例#5
0
        public void AddRemotingListener_ToStatefulServiceUsingIServiceType_RegisterType()
        {
            string expectedName = nameof(AddRemotingListener_ToStatefulServiceUsingIServiceType_RegisterType);
            FabricTransportRemotingListenerSettings settings = new FabricTransportRemotingListenerSettings();
            HostBuilder builder = new HostBuilder();
            ServiceFabricHostBuilder <OmexStatefulService, StatefulServiceContext> sfBuilder =
                MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatefulService, StatefulServiceContext>(builder);

            sfBuilder.AddRemotingListener <MockService>(expectedName, settings);

            IListenerBuilder <OmexStatefulService> value = builder.Build().Services.GetService <IListenerBuilder <OmexStatefulService> >();

            Assert.IsInstanceOfType(value, typeof(GenericRemotingListenerBuilder <OmexStatefulService>));
            Assert.AreEqual(expectedName, value.Name);
            Assert.AreEqual(settings, GetSettings(value));
        }
示例#6
0
        public void AddRemotingListener_UsingFunc_RegisterType()
        {
            string expectedName = nameof(AddRemotingListener_UsingFunc_RegisterType);
            FabricTransportRemotingListenerSettings settings = new FabricTransportRemotingListenerSettings();
            HostBuilder builder = new HostBuilder();
            ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> sfBuilder =
                MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatelessService, StatelessServiceContext>(builder);

            sfBuilder.AddRemotingListener(expectedName, (p, s) => new MockService(), settings);

            IListenerBuilder <OmexStatelessService> value = builder.Build().Services.GetService <IListenerBuilder <OmexStatelessService> >();

            Assert.IsNotNull(value);
            Assert.AreEqual(expectedName, value.Name);
            Assert.AreEqual(settings, GetSettings(value));
        }
示例#7
0
        public void AddRemotingListener_ToStatelessServiceUsingIServiceTypeThatHasUnregisteredDependency_BuildThrowsInvalidOperationException()
        {
            string expectedName = nameof(AddRemotingListener_ToStatelessServiceUsingIServiceType_RegisterType);
            FabricTransportRemotingListenerSettings settings = new FabricTransportRemotingListenerSettings();
            HostBuilder builder = new HostBuilder();
            ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> sfBuilder =
                MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatelessService, StatelessServiceContext>(builder);

            sfBuilder.AddRemotingListener <MockServiceWithDependencies>(expectedName, settings);

            IListenerBuilder <OmexStatelessService> value = builder.Build().Services.GetRequiredService <IListenerBuilder <OmexStatelessService> >();

            InvalidOperationException exception = Assert.ThrowsException <InvalidOperationException>(() => value.Build(MockServiceFabricServices.MockOmexStatelessService));

            StringAssert.Contains(exception.Message, typeof(MockServiceWithDependencies).FullName);
            StringAssert.Contains(exception.Message, typeof(IMockServiceDependency).FullName);
        }
示例#8
0
        public void AddRemotingListener_ToStatelessServiceUsingIServiceTypeThatHasNoDependencies_BuildDoesNotThrow()
        {
            string expectedName = nameof(AddRemotingListener_ToStatelessServiceUsingIServiceType_RegisterType);
            FabricTransportRemotingListenerSettings settings = new FabricTransportRemotingListenerSettings();
            HostBuilder builder = new HostBuilder();
            ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> sfBuilder =
                MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatelessService, StatelessServiceContext>(builder);

            sfBuilder.AddRemotingListener <MockService>(expectedName, settings);

            IListenerBuilder <OmexStatelessService> value = builder.Build().Services.GetRequiredService <IListenerBuilder <OmexStatelessService> >();

            ICommunicationListener service = value.Build(MockServiceFabricServices.MockOmexStatelessService);

            Assert.IsNotNull(service);
            Assert.AreEqual(expectedName, value.Name);
            Assert.AreEqual(settings, GetSettings(value));
        }
示例#9
0
        public void AddServiceListener_UsingFunc_RegisterInstance()
        {
            ICommunicationListener listener = new Mock <ICommunicationListener>().Object;

            ICommunicationListener listenerBuilder(IServiceProvider provider, object context) => listener;

            HostBuilder hostBuilder = new HostBuilder();

            new ServiceFabricHostBuilder <IServiceFabricService <ServiceContext>, ServiceContext>(hostBuilder)
            .AddServiceListener("testName", listenerBuilder);

            IListenerBuilder <IServiceFabricService <ServiceContext> > resolvedBuilder = hostBuilder
                                                                                         .Build().Services
                                                                                         .GetService <IListenerBuilder <IServiceFabricService <ServiceContext> > >();

            IServiceFabricService <ServiceContext> mockService = new Mock <IServiceFabricService <ServiceContext> >().Object;
            ICommunicationListener resultedListener            = resolvedBuilder.Build(mockService);

            ReferenceEquals(listener, resultedListener);
        }
示例#10
0
 private static FabricTransportRemotingListenerSettings?GetSettings <TService>(IListenerBuilder <TService> listenerBuilder)
     where TService : IServiceFabricService <ServiceContext>
 => listenerBuilder is RemotingListenerBuilder <TService> remotingBuilder
                                 ? remotingBuilder.Settings
 : null;