public async Task Should_InvokeActOnce_When_ChangeIsCalledTwice() { var target = new TaskBasedTimer(_scheduler); WrapExclusiveScheduler(() => target.Change(() => Interlocked.Increment(ref _counter), TimeSpan.FromMilliseconds(60000))); WrapExclusiveScheduler(() => target.Change(() => Interlocked.Increment(ref _counter), TimeSpan.FromMilliseconds(1))); TestHelper.RetryAssert(() => Assert.AreEqual(1, Interlocked.Read(ref _counter))); await Task.Delay(100).ConfigureAwait(false); Assert.AreEqual(1, Interlocked.Read(ref _counter)); }
public async Task Should_NotInvokeAct_When_CancelIsCalled() { var target = new TaskBasedTimer(_scheduler); WrapExclusiveScheduler(() => target.Change(() => Interlocked.Increment(ref _counter), TimeSpan.FromMilliseconds(500))); WrapExclusiveScheduler(() => target.Cancel()); await Task.Delay(1000).ConfigureAwait(false); Assert.AreEqual(0, Interlocked.Read(ref _counter)); }
public void Should_NotLogExceptions_When_CancellationTokenIsCancelledAndDisposed() { Diagnostics.CassandraTraceSwitch.Level = TraceLevel.Verbose; var listener = new LoggingTests.TestTraceListener(); Trace.Listeners.Add(listener); var target = new TaskBasedTimer(_scheduler); for (var i = 0; i < 20000; i++) { WrapExclusiveScheduler(() => target.Change(() => Interlocked.Increment(ref _counter), TimeSpan.FromMilliseconds(5000))); } target.Dispose(); Assert.AreEqual(0, listener.Messages.Values.Count(m => m.Contains("Exception thrown in TaskBasedTimer"))); }