public void TestStrongConnectionStatus()
        {
            using (StartVerifiableLog(out var loggerFactory, LogLevel.Warning, expectedErrors: e => true,
                                      logChecker: s =>
            {
                Assert.Single(s);
                Assert.Equal("EndpointOffline", s[0].Write.EventId.Name);
                return(true);
            }))
            {
                var endpoint1 = new TestHubServiceEndpoint();
                var conn1     = new TestServiceConnection();
                var scf       = new TestServiceConnectionFactory(endpoint1 => conn1);
                var container = new StrongServiceConnectionContainer(scf, 5, endpoint1, loggerFactory.CreateLogger(nameof(TestStrongConnectionStatus)));

                // When init, consider the endpoint as online
                // TODO: improve the logic
                Assert.True(endpoint1.Online);

                conn1.SetStatus(ServiceConnectionStatus.Connecting);
                Assert.True(endpoint1.Online);

                conn1.SetStatus(ServiceConnectionStatus.Connected);
                Assert.True(endpoint1.Online);

                conn1.SetStatus(ServiceConnectionStatus.Disconnected);
                Assert.False(endpoint1.Online);

                conn1.SetStatus(ServiceConnectionStatus.Connecting);
                Assert.False(endpoint1.Online);

                conn1.SetStatus(ServiceConnectionStatus.Connected);
                Assert.True(endpoint1.Online);
            }
        }
        public void TestCloseAsyncWithoutStartAsync()
        {
            var conn = new TestServiceConnectionForCloseAsync();
            var hub  = new TestHubServiceEndpoint();

            using var container = new TestBaseServiceConnectionContainer(new List <IServiceConnection> { conn }, hub);

            // await AssertTask(container.CloseClientConnectionForTest(conn), TimeSpan.FromSeconds(5));
        }
Exemplo n.º 3
0
        public void TestGetServiceStatus(bool[] pingStatus, int checkWindow, int checkMilli, bool expectedStatus)
        {
            var  endpoint      = new TestHubServiceEndpoint();
            var  container     = new WeakServiceConnectionContainer(null, 0, endpoint, NullLogger.Instance);
            var  checkTimeSpan = TimeSpan.FromMilliseconds(checkMilli);
            bool status        = true;

            foreach (var ping in pingStatus)
            {
                status = container.GetServiceStatus(ping, checkWindow, checkTimeSpan);
            }

            Assert.Equal(expectedStatus, status);
        }
        public async void TestCloseAsync()
        {
            var conn = new TestServiceConnectionForCloseAsync();
            var hub  = new TestHubServiceEndpoint();

            using var container = new TestBaseServiceConnectionContainer(new List <IServiceConnection> { conn }, hub);

            _ = conn.StartAsync();
            _ = MockServiceAsync(conn);

            // close connection after 1 seconds.
            await Task.Delay(TimeSpan.FromSeconds(1));

            // await AssertTask(container.CloseClientConnectionForTest(conn), TimeSpan.FromSeconds(5));
        }
        public async void TestCloseAsyncWithExceptionAndNoFinAck()
        {
            var conn = new TestServiceConnectionForCloseAsync();
            var hub  = new TestHubServiceEndpoint();

            using var container = new TestBaseServiceConnectionContainer(new List <IServiceConnection> { conn }, hub);

            _ = conn.StartAsync();
            _ = MockServiceAsyncWithException(conn);

            // close connection after 2 seconds to make sure we have received an exception.
            await Task.Delay(TimeSpan.FromSeconds(2));

            // TODO double check if we received an exception.
            // await AssertTask(container.CloseClientConnectionForTest(conn), TimeSpan.FromSeconds(5));
        }