public static void InstanceContextMode_PerSession_WithBehavior_NoInjection() { PerSessionInstanceContextSimpleServiceAndBehavior.ClearCounts(); var services = new ServiceCollection(); string serviceAddress = "http://localhost/dummy"; var serviceDispatcher = TestHelper.BuildDispatcher <PerSessionInstanceContextSimpleServiceAndBehavior>(services, serviceAddress); IChannel mockChannel = new MockReplySessionChannel(services.BuildServiceProvider()); var dispatcher = serviceDispatcher.CreateServiceChannelDispatcher(mockChannel); // Instance created as part of service startup as it implements IServiceBehavior Assert.Equal(1, PerSessionInstanceContextSimpleServiceAndBehavior.CreationCount); // Instance not disposed as it implements IServiceBehavior and is added to service behaviors Assert.Equal(0, PerSessionInstanceContextSimpleServiceAndBehavior.DisposalCount); Assert.Equal(1, PerSessionInstanceContextSimpleServiceAndBehavior.AddBindingParametersCallCount); Assert.Equal(1, PerSessionInstanceContextSimpleServiceAndBehavior.ApplyDispatchBehaviorCount); Assert.Equal(1, PerSessionInstanceContextSimpleServiceAndBehavior.ValidateCallCount); PerSessionInstanceContextSimpleServiceAndBehavior.ClearCounts(); var requestContext = TestRequestContext.Create(serviceAddress); dispatcher.DispatchAsync(requestContext, CancellationToken.None).Wait(); requestContext = TestRequestContext.Create(serviceAddress); dispatcher.DispatchAsync(requestContext, CancellationToken.None).Wait(); requestContext = TestRequestContext.Create(serviceAddress); dispatcher.DispatchAsync(requestContext, CancellationToken.None).Wait(); // Close channel/session by sending null request context dispatcher.DispatchAsync(null, CancellationToken.None).Wait(); Assert.Equal(1, PerSessionInstanceContextSimpleServiceAndBehavior.CreationCount); Assert.Equal(1, PerSessionInstanceContextSimpleServiceAndBehavior.DisposalCount); }
public static void InstanceContextMode_PerSession_NoInjection() { PerSessionInstanceContextSimpleService.ClearCounts(); var services = new ServiceCollection(); string serviceAddress = "http://localhost/dummy"; var serviceDispatcher = TestHelper.BuildDispatcher <PerSessionInstanceContextSimpleService>(services, serviceAddress); IChannel mockChannel = new MockReplySessionChannel(services.BuildServiceProvider()); var dispatcher = serviceDispatcher.CreateServiceChannelDispatcher(mockChannel); // Instance shouldn't be created as part of service startup to as type isn't available in DI Assert.Equal(0, PerSessionInstanceContextSimpleService.CreationCount); Assert.Equal(0, PerSessionInstanceContextSimpleService.DisposalCount); var requestContext = TestRequestContext.Create(serviceAddress); dispatcher.DispatchAsync(requestContext, CancellationToken.None).Wait(); requestContext = TestRequestContext.Create(serviceAddress); dispatcher.DispatchAsync(requestContext, CancellationToken.None).Wait(); requestContext = TestRequestContext.Create(serviceAddress); dispatcher.DispatchAsync(requestContext, CancellationToken.None).Wait(); // Close channel/session by sending null request context dispatcher.DispatchAsync(null, CancellationToken.None).Wait(); Assert.Equal(1, PerSessionInstanceContextSimpleService.CreationCount); Assert.Equal(1, PerSessionInstanceContextSimpleService.DisposalCount); }