コード例 #1
0
        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);
        }
コード例 #2
0
 public void WaitForConnection()
 {
     ConnectionAwaiter.Wait();
 }