Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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")));
        }