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)); }
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)); }