public async Task ClampDelay() { Stopwatch watch = new Stopwatch(); var delay = new ManualRetryDelay { Delay = TimeSpan.FromMilliseconds(100), MaxDelay = TimeSpan.FromMilliseconds(250) }; delay.Update(throttled: true); await delay.WaitIfNeededAsync(); delay.Update(throttled: true); await delay.WaitIfNeededAsync(); delay.Update(throttled: true); await delay.WaitIfNeededAsync(); delay.Update(throttled: true); watch.Start(); await delay.WaitIfNeededAsync(); watch.Stop(); Assert.IsTrue( 248 <= watch.ElapsedMilliseconds && watch.ElapsedMilliseconds <= 500, $"Expected a delay between 248ms and 500ms, not {watch.ElapsedMilliseconds}"); }
public async Task ClearDelay() { Stopwatch watch = new Stopwatch(); var delay = new ManualRetryDelay { Delay = TimeSpan.FromMilliseconds(100), MaxDelay = TimeSpan.FromMilliseconds(250) }; delay.Update(throttled: true); await delay.WaitIfNeededAsync(); delay.Update(throttled: true); await delay.WaitIfNeededAsync(); delay.Update(throttled: false); watch.Start(); await delay.WaitIfNeededAsync(); watch.Stop(); Assert.IsTrue( watch.ElapsedMilliseconds < 100, $"Expected a delay less than 100ms, not {watch.ElapsedMilliseconds}"); }
public async Task AddsMoreDelay() { Stopwatch watch = new Stopwatch(); var delay = new ManualRetryDelay { Delay = TimeSpan.FromMilliseconds(100), MaxDelay = TimeSpan.FromMilliseconds(250) }; delay.Update(throttled: true); await delay.WaitIfNeededAsync(); delay.Update(throttled: true); watch.Start(); await delay.WaitIfNeededAsync(); watch.Stop(); Assert.LessOrEqual(150, watch.ElapsedMilliseconds); }
public async Task NoDelay() { Stopwatch watch = new Stopwatch(); var delay = new ManualRetryDelay { Delay = TimeSpan.FromMilliseconds(100), MaxDelay = TimeSpan.FromMilliseconds(250) }; watch.Start(); await delay.WaitIfNeededAsync(); watch.Stop(); Assert.Greater(50, watch.ElapsedMilliseconds); }
public async Task NoDelayIfCalledAfterWait() { Stopwatch watch = new Stopwatch(); var delay = new ManualRetryDelay { Delay = TimeSpan.FromMilliseconds(100), MaxDelay = TimeSpan.FromMilliseconds(250) }; delay.Update(throttled: true); await Task.Delay(TimeSpan.FromMilliseconds(120)); watch.Start(); await delay.WaitIfNeededAsync(); watch.Stop(); Assert.Greater(50, watch.ElapsedMilliseconds); }