From 722aa5daeb19e2727888ee76f295e52f19f6a5c9 Mon Sep 17 00:00:00 2001 From: Jimmy Byrd Date: Tue, 23 Apr 2024 21:01:04 -0400 Subject: [PATCH] Fix parallel tests (#47) --- .../CancellablePoolingValueTaskTests.fs | 31 +++++++++++-------- tests/IcedTasks.Tests/CancellableTaskTests.fs | 30 ++++++++++-------- .../CancellableValueTaskTests.fs | 30 ++++++++++-------- .../IcedTasks.Tests/PoolingValueTaskTests.fs | 30 ++++++++++-------- tests/IcedTasks.Tests/TaskTests.fs | 30 ++++++++++-------- tests/IcedTasks.Tests/ValueTaskTests.fs | 30 ++++++++++-------- 6 files changed, 103 insertions(+), 78 deletions(-) diff --git a/tests/IcedTasks.Tests/CancellablePoolingValueTaskTests.fs b/tests/IcedTasks.Tests/CancellablePoolingValueTaskTests.fs index cf1a03a..dcb1df8 100644 --- a/tests/IcedTasks.Tests/CancellablePoolingValueTaskTests.fs +++ b/tests/IcedTasks.Tests/CancellablePoolingValueTaskTests.fs @@ -975,14 +975,7 @@ module CancellablePoolingValueTaskTests = // Have earlier tasks take longer to complete // so we can see if they are sequenced or not - let fakeWork1 l = - cancellablePoolingValueTask { - do! Task.Delay 15 - let! x = fakeWork 1 10000 l - do! Task.Delay 15 - return x - } - + let fakeWork1 = fakeWork 1 10000 let fakeWork2 = fakeWork 2 750 let fakeWork3 = fakeWork 3 500 let fakeWork4 = fakeWork 4 250 @@ -1008,8 +1001,10 @@ module CancellablePoolingValueTaskTests = ] } - let! paralleled = + let executeParallel = + cancellablePoolingValueTask { + parallelList.Clear() let! a = fakeWork1 parallelList and! b = fakeWork2 parallelList and! c = fakeWork3 parallelList @@ -1031,7 +1026,7 @@ module CancellablePoolingValueTaskTests = sequencedList |> Seq.toList - let parallelEntrances = + let parallelEntrances () = parallelList |> Seq.toList @@ -1051,9 +1046,19 @@ module CancellablePoolingValueTaskTests = 6 ] - let parallelNotSequenced = - parallelEntrances - <> sequencedEntrances + let! parallelNotSequenced = + cancellablePoolingValueTask { + let mutable result = false + + while not result do + let! _ = executeParallel + + result <- + parallelEntrances () + <> sequencedEntrances + + return result + } return sequencedAlwaysOrdered diff --git a/tests/IcedTasks.Tests/CancellableTaskTests.fs b/tests/IcedTasks.Tests/CancellableTaskTests.fs index 1aad93f..e29f6a8 100644 --- a/tests/IcedTasks.Tests/CancellableTaskTests.fs +++ b/tests/IcedTasks.Tests/CancellableTaskTests.fs @@ -935,14 +935,7 @@ module CancellableTaskTests = // Have earlier tasks take longer to complete // so we can see if they are sequenced or not - let fakeWork1 l = - cancellableTask { - do! Task.Delay 15 - let! x = fakeWork 1 10000 l - do! Task.Delay 15 - return x - } - + let fakeWork1 = fakeWork 1 10000 let fakeWork2 = fakeWork 2 750 let fakeWork3 = fakeWork 3 500 let fakeWork4 = fakeWork 4 250 @@ -968,8 +961,9 @@ module CancellableTaskTests = ] } - let! paralleled = + let executeParallel = cancellableTask { + parallelList.Clear() let! a = fakeWork1 parallelList and! b = fakeWork2 parallelList and! c = fakeWork3 parallelList @@ -991,7 +985,7 @@ module CancellableTaskTests = sequencedList |> Seq.toList - let parallelEntrances = + let parallelEntrances () = parallelList |> Seq.toList @@ -1011,9 +1005,19 @@ module CancellableTaskTests = 6 ] - let parallelNotSequenced = - parallelEntrances - <> sequencedEntrances + let! parallelNotSequenced = + cancellableTask { + let mutable result = false + + while not result do + let! _ = executeParallel + + result <- + parallelEntrances () + <> sequencedEntrances + + return result + } return sequencedAlwaysOrdered diff --git a/tests/IcedTasks.Tests/CancellableValueTaskTests.fs b/tests/IcedTasks.Tests/CancellableValueTaskTests.fs index d9b2b3b..c3e36f0 100644 --- a/tests/IcedTasks.Tests/CancellableValueTaskTests.fs +++ b/tests/IcedTasks.Tests/CancellableValueTaskTests.fs @@ -972,14 +972,7 @@ module CancellableValueTaskTests = // Have earlier tasks take longer to complete // so we can see if they are sequenced or not - let fakeWork1 l = - cancellableValueTask { - do! Task.Delay 15 - let! x = fakeWork 1 10000 l - do! Task.Delay 15 - return x - } - + let fakeWork1 = fakeWork 1 10000 let fakeWork2 = fakeWork 2 750 let fakeWork3 = fakeWork 3 500 let fakeWork4 = fakeWork 4 250 @@ -1005,8 +998,9 @@ module CancellableValueTaskTests = ] } - let! paralleled = + let executeParallel = cancellableValueTask { + parallelList.Clear() let! a = fakeWork1 parallelList and! b = fakeWork2 parallelList and! c = fakeWork3 parallelList @@ -1028,7 +1022,7 @@ module CancellableValueTaskTests = sequencedList |> Seq.toList - let parallelEntrances = + let parallelEntrances () = parallelList |> Seq.toList @@ -1048,9 +1042,19 @@ module CancellableValueTaskTests = 6 ] - let parallelNotSequenced = - parallelEntrances - <> sequencedEntrances + let! parallelNotSequenced = + cancellableValueTask { + let mutable result = false + + while not result do + let! _ = executeParallel + + result <- + parallelEntrances () + <> sequencedEntrances + + return result + } return sequencedAlwaysOrdered diff --git a/tests/IcedTasks.Tests/PoolingValueTaskTests.fs b/tests/IcedTasks.Tests/PoolingValueTaskTests.fs index 6fbaef2..31d4e2b 100644 --- a/tests/IcedTasks.Tests/PoolingValueTaskTests.fs +++ b/tests/IcedTasks.Tests/PoolingValueTaskTests.fs @@ -699,14 +699,7 @@ module PoolingValueTaskTests = // Have earlier tasks take longer to complete // so we can see if they are sequenced or not - let fakeWork1 l = - poolingValueTask { - do! Task.Delay 15 - let! x = fakeWork 1 10000 l - do! Task.Delay 15 - return x - } - + let fakeWork1 = fakeWork 1 10000 let fakeWork2 = fakeWork 2 750 let fakeWork3 = fakeWork 3 500 let fakeWork4 = fakeWork 4 250 @@ -732,8 +725,9 @@ module PoolingValueTaskTests = ] } - let! paralleled = + let executeParallel () = poolingValueTask { + parallelList.Clear() let! a = fakeWork1 parallelList and! b = fakeWork2 parallelList and! c = fakeWork3 parallelList @@ -755,7 +749,7 @@ module PoolingValueTaskTests = sequencedList |> Seq.toList - let parallelEntrances = + let parallelEntrances () = parallelList |> Seq.toList @@ -775,9 +769,19 @@ module PoolingValueTaskTests = 6 ] - let parallelNotSequenced = - parallelEntrances - <> sequencedEntrances + let! parallelNotSequenced = + poolingValueTask { + let mutable result = false + + while not result do + let! _ = executeParallel () + + result <- + parallelEntrances () + <> sequencedEntrances + + return result + } return sequencedAlwaysOrdered diff --git a/tests/IcedTasks.Tests/TaskTests.fs b/tests/IcedTasks.Tests/TaskTests.fs index 57f38d5..c0c3797 100644 --- a/tests/IcedTasks.Tests/TaskTests.fs +++ b/tests/IcedTasks.Tests/TaskTests.fs @@ -704,14 +704,7 @@ module TaskTests = // Have earlier tasks take longer to complete // so we can see if they are sequenced or not - let fakeWork1 l = - task { - do! Task.Delay 15 - let! x = fakeWork 1 10000 l - do! Task.Delay 15 - return x - } - + let fakeWork1 = fakeWork 1 10000 let fakeWork2 = fakeWork 2 750 let fakeWork3 = fakeWork 3 500 let fakeWork4 = fakeWork 4 250 @@ -737,8 +730,9 @@ module TaskTests = ] } - let! paralleled = + let executeParallel () = task { + parallelList.Clear() let! a = fakeWork1 parallelList and! b = fakeWork2 parallelList and! c = fakeWork3 parallelList @@ -760,7 +754,7 @@ module TaskTests = sequencedList |> Seq.toList - let parallelEntrances = + let parallelEntrances () = parallelList |> Seq.toList @@ -780,9 +774,19 @@ module TaskTests = 6 ] - let parallelNotSequenced = - parallelEntrances - <> sequencedEntrances + let! parallelNotSequenced = + task { + let mutable result = false + + while not result do + let! _ = executeParallel + + result <- + parallelEntrances () + <> sequencedEntrances + + return result + } return sequencedAlwaysOrdered diff --git a/tests/IcedTasks.Tests/ValueTaskTests.fs b/tests/IcedTasks.Tests/ValueTaskTests.fs index 95cb520..d97ae5c 100644 --- a/tests/IcedTasks.Tests/ValueTaskTests.fs +++ b/tests/IcedTasks.Tests/ValueTaskTests.fs @@ -701,14 +701,7 @@ module ValueTaskTests = // Have earlier tasks take longer to complete // so we can see if they are sequenced or not - let fakeWork1 l = - valueTask { - do! Task.Delay 15 - let! x = fakeWork 1 10000 l - do! Task.Delay 15 - return x - } - + let fakeWork1 = fakeWork 1 10000 let fakeWork2 = fakeWork 2 750 let fakeWork3 = fakeWork 3 500 let fakeWork4 = fakeWork 4 250 @@ -734,8 +727,9 @@ module ValueTaskTests = ] } - let! paralleled = + let executeParallel () = valueTask { + parallelList.Clear() let! a = fakeWork1 parallelList and! b = fakeWork2 parallelList and! c = fakeWork3 parallelList @@ -757,7 +751,7 @@ module ValueTaskTests = sequencedList |> Seq.toList - let parallelEntrances = + let parallelEntrances () = parallelList |> Seq.toList @@ -777,9 +771,19 @@ module ValueTaskTests = 6 ] - let parallelNotSequenced = - parallelEntrances - <> sequencedEntrances + let! parallelNotSequenced = + valueTask { + let mutable result = false + + while not result do + let! _ = executeParallel () + + result <- + parallelEntrances () + <> sequencedEntrances + + return result + } return sequencedAlwaysOrdered