private static void Raise <TEventArgs>(ResilientConnectionMultiplexer source, string eventName,
                                               TEventArgs eventArgs) where TEventArgs : EventArgs
        {
            var eventDelegate = (Delegate)source.ConnectionMultiplexer.GetType()
                                .GetField(eventName, BindingFlags.Instance | BindingFlags.NonPublic)
                                .GetValue(source.ConnectionMultiplexer);

            eventDelegate.DynamicInvoke(source.ConnectionMultiplexer, eventArgs);
        }
        private void Reconnect(ResilientConnectionMultiplexer mux)
        {
            var oldMux = mux.ConnectionMultiplexer;

            Assert.That(mux.TryReconnect(), Is.False); // set first error
            Thread.Sleep(100);                         // (NOW - First error date) must be greater than ReconnectErrorThreshold
            Assert.That(mux.TryReconnect(), Is.False); // set previous error
            Thread.Sleep(10);                          // (NOW - Last error date) must be lower than ReconnectErrorThreshold
            Assert.That(mux.TryReconnect(), Is.True);  // set last error
            Assert.That(mux.LastReconnectTicks, Is.Not.EqualTo(0L));
            Assert.That(oldMux, Is.Not.EqualTo(mux.ConnectionMultiplexer));
        }
Пример #3
0
        private async Task ReconnectAsync(ResilientConnectionMultiplexer mux, CancellationToken cancellationToken = default(CancellationToken))
        {
            var oldMux = mux.ConnectionMultiplexer;

            Assert.That(await(mux.TryReconnectAsync(cancellationToken)), Is.False); // set first error
            await(Task.Delay(100, cancellationToken));                              // (NOW - First error date) must be greater than ReconnectErrorThreshold
            Assert.That(await(mux.TryReconnectAsync(cancellationToken)), Is.False); // set previous error
            await(Task.Delay(10, cancellationToken));                               // (NOW - Last error date) must be lower than ReconnectErrorThreshold
            Assert.That(await(mux.TryReconnectAsync(cancellationToken)), Is.True);  // set last error
            Assert.That(mux.LastReconnectTicks, Is.Not.EqualTo(0L));
            Assert.That(oldMux, Is.Not.EqualTo(mux.ConnectionMultiplexer));
        }