Skip to content
This repository has been archived by the owner on Aug 16, 2021. It is now read-only.

Commit

Permalink
Merge pull request #185 from detroitpro/feature/asyncloop_tests_fail_…
Browse files Browse the repository at this point in the history
…intermittently

made tests that call async methods async
  • Loading branch information
bokobza authored Jun 23, 2017
2 parents d698b4f + b6871f1 commit 4f5f0cc
Showing 1 changed file with 15 additions and 17 deletions.
32 changes: 15 additions & 17 deletions Stratis.Bitcoin.Tests/AsyncLoopTest.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
Expand All @@ -19,14 +17,14 @@ public AsyncLoopTest() : base()
}

[Fact]
public void RunOperationCanceledExceptionThrownBeforeCancellationTokenIsCancelledLogsException()
public async Task RunOperationCanceledExceptionThrownBeforeCancellationTokenIsCancelledLogsException()
{
var asyncLoop = new AsyncLoop("TestLoop", async token =>
{
await DoOperationCanceledExceptionTask(token);
});

asyncLoop.Run(new CancellationTokenSource(80).Token, TimeSpan.FromMilliseconds(33)).Wait();
await asyncLoop.Run(new CancellationTokenSource(80).Token, TimeSpan.FromMilliseconds(33));

AssertLog(FullNodeLogger, LogLevel.Information, "TestLoop starting");
AssertLog(FullNodeLogger, LogLevel.Information, "TestLoop stopping");
Expand All @@ -35,14 +33,14 @@ public void RunOperationCanceledExceptionThrownBeforeCancellationTokenIsCancelle
}

[Fact]
public void RunWithoutCancellationTokenRunsUntilExceptionOccurs()
public async Task RunWithoutCancellationTokenRunsUntilExceptionOccurs()
{
var asyncLoop = new AsyncLoop("TestLoop", async token =>
{
await DoExceptionalTask(token);
});

asyncLoop.Run(TimeSpan.FromMilliseconds(33)).Wait();
await asyncLoop.Run(TimeSpan.FromMilliseconds(33));

AssertLog(FullNodeLogger, LogLevel.Information, "TestLoop starting");
AssertLog(FullNodeLogger, LogLevel.Information, "TestLoop stopping");
Expand All @@ -51,57 +49,57 @@ public void RunWithoutCancellationTokenRunsUntilExceptionOccurs()
}

[Fact]
public void RunWithCancellationTokenRunsUntilExceptionOccurs()
public async Task RunWithCancellationTokenRunsUntilExceptionOccurs()
{
var asyncLoop = new AsyncLoop("TestLoop", async token =>
{
await DoExceptionalTask(token);
});

asyncLoop.Run(new CancellationTokenSource(150).Token, TimeSpan.FromMilliseconds(33)).Wait();
await asyncLoop.Run(new CancellationTokenSource(150).Token, TimeSpan.FromMilliseconds(33));

AssertLog(FullNodeLogger, LogLevel.Information, "TestLoop starting");
AssertLog(FullNodeLogger, LogLevel.Information, "TestLoop stopping");
AssertLog<InvalidOperationException>(FullNodeLogger, LogLevel.Critical, "Cannot run more than 3 times.", "TestLoop threw an unhandled exception");
Assert.Equal(3, iterationCount);
Assert.Equal(3, iterationCount);
}

[Fact]
public void RunLogsStartAndStop()
public async Task RunLogsStartAndStop()
{
var asyncLoop = new AsyncLoop("TestLoop", async token =>
{
await DoTask(token);
});

asyncLoop.Run(new CancellationTokenSource(100).Token, TimeSpan.FromMilliseconds(33)).Wait();
await asyncLoop.Run(new CancellationTokenSource(100).Token, TimeSpan.FromMilliseconds(33));

AssertLog(FullNodeLogger, LogLevel.Information, "TestLoop starting");
AssertLog(FullNodeLogger, LogLevel.Information, "TestLoop stopping");
}

[Fact]
public void RunWithoutDelayRunsTaskUntilCancelled()
{
public async Task RunWithoutDelayRunsTaskUntilCancelled()
{
var asyncLoop = new AsyncLoop("TestLoop", async token =>
{
await DoTask(token);
});
asyncLoop.Run(new CancellationTokenSource(90).Token, TimeSpan.FromMilliseconds(33)).Wait();

await asyncLoop.Run(new CancellationTokenSource(90).Token, TimeSpan.FromMilliseconds(33));

Assert.Equal(3, iterationCount);
}

[Fact]
public void RunWithDelayRunsTaskUntilCancelled()
public async Task RunWithDelayRunsTaskUntilCancelled()
{
var asyncLoop = new AsyncLoop("TestLoop", async token =>
{
await DoTask(token);
});

asyncLoop.Run(new CancellationTokenSource(100).Token, TimeSpan.FromMilliseconds(33), TimeSpan.FromMilliseconds(40)).Wait();
await asyncLoop.Run(new CancellationTokenSource(100).Token, TimeSpan.FromMilliseconds(33), TimeSpan.FromMilliseconds(40));

Assert.Equal(2, iterationCount);
}
Expand Down

0 comments on commit 4f5f0cc

Please sign in to comment.