Exemple #1
0
        public async void TestShutdown()
        {
            var index          = new StrongBox <int>();
            var clientManager  = new TestClientConnectionManager(index);
            var serviceManager = new TestServiceConnectionManager <Hub>(index);

            var options = new TestOptions();

            options.Value.GracefulShutdown = new GracefulShutdownOptions()
            {
                Timeout = TimeSpan.FromSeconds(1),
                Mode    = GracefulShutdownMode.WaitForClientsClose
            };

            var dispatcher = new ServiceHubDispatcher <Hub>(
                null,
                TestHubContext <Hub> .GetInstance(),
                serviceManager,
                clientManager,
                null,
                options,
                NullLoggerFactory.Instance,
                new TestRouter(),
                null,
                null,
                null
                );

            await dispatcher.ShutdownAsync();

            Assert.Equal(3, serviceManager.StopIndex);
            Assert.Equal(2, clientManager.CompleteIndex);
            Assert.Equal(1, serviceManager.OfflineIndex);
        }
        public async void TestShutdown()
        {
            var clientManager  = new TestClientConnectionManager();
            var serviceManager = new TestServiceConnectionManager <Hub>();

            var options = new TestOptions();

            options.Value.GracefulShutdown = new GracefulShutdownOptions()
            {
                Timeout = TimeSpan.FromSeconds(1),
                Mode    = GracefulShutdownMode.WaitForClientsClose
            };

            var dispatcher = new ServiceHubDispatcher <Hub>(
                null,
                serviceManager,
                clientManager,
                null,
                options,
                NullLoggerFactory.Instance,
                new TestRouter(),
                null,
                null,
                null
                );

            await dispatcher.ShutdownAsync();

            DateTime now = DateTime.Now;

            Assert.True(now > serviceManager.StopTime);
            Assert.True(serviceManager.StopTime > clientManager.CompleteTime);
            Assert.True(clientManager.CompleteTime > serviceManager.OfflineTime);
        }
        public async void TestSendConnectionAsyncisOverwrittenWhenClientConnectionExisted()
        {
            var serviceConnectionManager = new TestServiceConnectionManager <TestHub>();
            var clientConnectionManager  = new ClientConnectionManager();

            var context    = new ClientConnectionContext(new OpenConnectionMessage("conn1", new Claim[] { }));
            var connection = new TestServiceConnectionPrivate();

            context.ServiceConnection = connection;
            clientConnectionManager.AddClientConnection(context);

            var manager = MockLifetimeManager(serviceConnectionManager, clientConnectionManager);

            await manager.SendConnectionAsync("conn1", "foo", new object[] { 1, 2 });

            Assert.NotNull(connection.LastMessage);
            if (connection.LastMessage is MultiConnectionDataMessage m)
            {
                Assert.Equal("conn1", m.ConnectionList[0]);
                Assert.Equal(1, m.Payloads.Count);
                Assert.True(m.Payloads.ContainsKey(MockProtocol));
                return;
            }
            Assert.True(false);
        }
        public async void TestShutdown()
        {
            var clientManager  = new TestClientConnectionManager();
            var serviceManager = new TestServiceConnectionManager <Hub>();

            var options = new TestOptions();

            options.Value.EnableGracefulShutdown = true;
            options.Value.ServerShutdownTimeout  = TimeSpan.FromSeconds(1);

            var dispatcher = new ServiceHubDispatcher <Hub>(
                null,
                serviceManager,
                clientManager,
                null,
                options,
                NullLoggerFactory.Instance,
                new TestRouter(),
                null,
                null,
                null
                );

            await dispatcher.ShutdownAsync();

            Assert.True(clientManager.completeTime.Subtract(serviceManager.offlineTime) > TimeSpan.FromMilliseconds(100));
            Assert.True(clientManager.completeTime.Subtract(serviceManager.stopTime) < -TimeSpan.FromMilliseconds(100));
            Assert.True(serviceManager.offlineTime != serviceManager.stopTime);
        }
        public async void ServiceLifetimeManagerIgnoreBlazorHubProtocolTest(string functionName, Type type)
        {
            var protocolResolver = new DefaultHubProtocolResolver(new IHubProtocol[]
            {
                new JsonHubProtocol(),
                new MessagePackHubProtocol(),
                new CustomHubProtocol(),
            },
                                                                  NullLogger <DefaultHubProtocolResolver> .Instance);
            IOptions <HubOptions> globalHubOptions = Options.Create(new HubOptions()
            {
                SupportedProtocols = new List <string>()
                {
                    "json", "messagepack", MockProtocol, "json"
                }
            });
            IOptions <HubOptions <TestHub> > localHubOptions = Options.Create(new HubOptions <TestHub>()
            {
                SupportedProtocols = new List <string>()
                {
                    "json", "messagepack", MockProtocol
                }
            });
            var serviceConnectionManager = new TestServiceConnectionManager <TestHub>();
            var serviceLifetimeManager   = new ServiceLifetimeManager <TestHub>(serviceConnectionManager,
                                                                                new ClientConnectionManager(), protocolResolver, Logger, Marker, globalHubOptions, localHubOptions);

            await InvokeMethod(serviceLifetimeManager, functionName);

            Assert.Equal(1, serviceConnectionManager.GetCallCount(type));
            VerifyServiceMessage(functionName, serviceConnectionManager.ServiceMessage);
            Assert.Equal(2, (serviceConnectionManager.ServiceMessage as MulticastDataMessage).Payloads.Count);
        }
Exemple #6
0
        public async void ServiceLifetimeManagerGroupTest(string functionName, Type type)
        {
            var serviceConnectionManager = new TestServiceConnectionManager <TestHub>();
            var serviceLifetimeManager   = new ServiceLifetimeManager <TestHub>(serviceConnectionManager,
                                                                                new ClientConnectionManager(), HubProtocolResolver, Logger, Marker);

            await InvokeMethod(serviceLifetimeManager, functionName);

            Assert.Equal(1, serviceConnectionManager.GetPartitionedCallCount(type));
            VerifyServiceMessage(functionName, serviceConnectionManager.ServiceMessage);
        }
        public async void ServiceLifetimeManagerOnlyBlazorHubProtocolTest(string functionName, Type type)
        {
            var serviceConnectionManager = new TestServiceConnectionManager <TestHub>();
            var serviceLifetimeManager   = MockLifetimeManager(serviceConnectionManager);

            await InvokeMethod(serviceLifetimeManager, functionName);

            Assert.Equal(1, serviceConnectionManager.GetCallCount(type));
            VerifyServiceMessage(functionName, serviceConnectionManager.ServiceMessage);
            Assert.Equal(1, (serviceConnectionManager.ServiceMessage as MulticastDataMessage).Payloads.Count);
        }
        public async void ServiceLifetimeManagerTest(string functionName, Type type)
        {
            var serviceConnectionManager = new TestServiceConnectionManager <TestHub>();
            var serviceLifetimeManager   = new ServiceLifetimeManager <TestHub>(serviceConnectionManager,
                                                                                new ClientConnectionManager(), HubProtocolResolver, Logger, Marker, _globalHubOptions, _localHubOptions);

            await InvokeMethod(serviceLifetimeManager, functionName);

            Assert.Equal(1, serviceConnectionManager.GetCallCount(type));
            VerifyServiceMessage(functionName, serviceConnectionManager.ServiceMessage);
            Assert.Equal(2, (serviceConnectionManager.ServiceMessage as MulticastDataMessage).Payloads.Count);
        }
        public async void ServiceLifetimeManagerGroupTest(string functionName, Type type)
        {
            var serviceConnectionManager = new TestServiceConnectionManager <TestHub>();
            var blazorDetector           = new DefaultBlazorDetector();
            var serviceLifetimeManager   = new ServiceLifetimeManager <TestHub>(
                serviceConnectionManager,
                new ClientConnectionManager(),
                HubProtocolResolver,
                Logger,
                Marker,
                _globalHubOptions,
                _localHubOptions,
                blazorDetector);

            await InvokeMethod(serviceLifetimeManager, functionName);

            Assert.Equal(1, serviceConnectionManager.GetCallCount(type));
            VerifyServiceMessage(functionName, serviceConnectionManager.ServiceMessage);
            Assert.False(blazorDetector.IsBlazor(nameof(TestHub)));
        }