Run tests in parallel (#79)

This commit is contained in:
Patrick Stevens
2024-06-16 15:43:07 +01:00
committed by GitHub
parent 55e9645316
commit 9d4b893e02
8 changed files with 375 additions and 82 deletions

View File

@@ -10,6 +10,7 @@
<ItemGroup>
<Compile Include="NoAttribute.fs" />
<Compile Include="Inconclusive.fs" />
<Compile Include="TestNonParallel.fs" />
<Compile Include="TestParallel.fs" />
<Compile Include="TestStdout.fs" />
<Compile Include="TestParameterisedFixture.fs" />

View File

@@ -0,0 +1,19 @@
namespace Consumer
open System
open System.Threading
open NUnit.Framework
open FsUnitTyped
[<TestFixture>]
[<NonParallelizable>]
module TestNonParallel =
let defaults = List.init 40 id
let lock = ref 0
[<TestCaseSource(nameof defaults)>]
let ``Default thing, but not parallel`` (i : int) =
Interlocked.Increment lock |> shouldEqual 1
Thread.Sleep (TimeSpan.FromMilliseconds (float i))
lock.Value <- 0
i |> shouldEqual i

View File

@@ -1,5 +1,7 @@
namespace Consumer
open System
open System.Threading
open NUnit.Framework
open FsUnitTyped
@@ -7,53 +9,58 @@ open FsUnitTyped
[<Parallelizable>]
module TestParallelDefault =
let defaults = List.init 100 id
let defaults = List.init 60 id
[<TestCaseSource(nameof defaults)>]
let ``Default thing`` (i : int) =
System.Console.WriteLine i
let ``Default thing, no scope`` (i : int) =
Console.WriteLine i
Thread.Sleep (TimeSpan.FromMilliseconds (float i))
i |> shouldEqual i
[<TestFixture>]
[<Parallelizable(ParallelScope.All)>]
module TestParallelAllScope =
let defaults = List.init 100 id
let defaults = List.init 60 id
[<TestCaseSource(nameof defaults)>]
let ``Default thing`` (i : int) =
System.Console.WriteLine i
let ``Thing, all scope`` (i : int) =
Console.WriteLine i
Thread.Sleep (TimeSpan.FromMilliseconds (float i))
i |> shouldEqual i
[<TestFixture>]
[<Parallelizable(ParallelScope.Self)>]
module TestParallelSelfScope =
let defaults = List.init 100 id
let defaults = List.init 60 id
[<TestCaseSource(nameof defaults)>]
let ``Default thing`` (i : int) =
System.Console.WriteLine i
let ``Thing, self scope`` (i : int) =
Console.WriteLine i
Thread.Sleep (TimeSpan.FromMilliseconds (float i))
i |> shouldEqual i
[<TestFixture>]
[<Parallelizable(ParallelScope.Children)>]
module TestParallelChildrenScope =
let defaults = List.init 100 id
let defaults = List.init 60 id
[<TestCaseSource(nameof defaults)>]
let ``Default thing`` (i : int) =
System.Console.WriteLine i
let ``Thing, children scope`` (i : int) =
Console.WriteLine i
Thread.Sleep (TimeSpan.FromMilliseconds (float i))
i |> shouldEqual i
[<TestFixture>]
[<Parallelizable(ParallelScope.Fixtures)>]
module TestParallelFixturesScope =
let defaults = List.init 100 id
let defaults = List.init 60 id
[<TestCaseSource(nameof defaults)>]
let ``Default thing`` (i : int) =
System.Console.WriteLine i
let ``Thing, fixtures scope`` (i : int) =
Console.WriteLine i
Thread.Sleep (TimeSpan.FromMilliseconds (float i))
i |> shouldEqual i

View File

@@ -47,10 +47,11 @@ module TestSetUp =
setUpTimesSeen
|> Seq.toList
|> List.sort
// Six tests: one for Test, two for the TestCase, three for the Repeat.
|> shouldEqual [ 1..6 ]
tearDownTimesSeen |> Seq.toList |> shouldEqual [ 1..6 ]
tearDownTimesSeen |> Seq.toList |> List.sort |> shouldEqual [ 1..6 ]
[<Test>]
let ``Test 1`` () =