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); }
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>)); }
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); }
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); }
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)); }
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)); }
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); }
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)); }
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); }
private static FabricTransportRemotingListenerSettings?GetSettings <TService>(IListenerBuilder <TService> listenerBuilder) where TService : IServiceFabricService <ServiceContext> => listenerBuilder is RemotingListenerBuilder <TService> remotingBuilder ? remotingBuilder.Settings : null;