public async Task WhenInSuspendedState_ShouldTryAndReconnectAfterSuspendRetryTimeoutIsReached() { Now = DateTimeOffset.UtcNow; _fakeTransportFactory.initialiseFakeTransport = transport => transport.OnConnectChangeStateToConnected = false; //this will keep it in connecting state var client = GetClientWithFakeTransport(opts => { opts.AutoConnect = false; opts.DisconnectedRetryTimeout = TimeSpan.FromMilliseconds(10); opts.SuspendedRetryTimeout = TimeSpan.FromMilliseconds(100); }); client.Connect(); do { LastCreatedTransport.Listener?.OnTransportEvent(TransportState.Closing, new Exception()); await WaitForConnectingOrSuspended(client); Now = Now.AddSeconds(30); } while (client.Connection.State != ConnectionState.Suspended); var awaiter = new ConnectionAwaiter(client.Connection, ConnectionState.Connecting); var elapsed = await awaiter.Wait(); elapsed.Should().BeCloseTo(client.Options.SuspendedRetryTimeout, 100); }
public void WaitForConnection() { ConnectionAwaiter.Wait(); }