diff --git a/.github/workflows/coyote.yaml b/.github/workflows/coyote.yaml index c6cd49bf..ca5ade98 100644 --- a/.github/workflows/coyote.yaml +++ b/.github/workflows/coyote.yaml @@ -14,8 +14,10 @@ name: Concurrency (Coyote) # - schedule (weekly) + workflow_dispatch — the deep run (10000 iterations/test). # # The TestKit doubles have their own systematic scenarios (tests/Wolfgang.Etl.TestKit.Tests -# .Concurrency, #126): xunit-hosted Coyote TestingEngine runs that only execute when the -# assembly was rewritten and COYOTE_REWRITTEN=1 is set (#365). That project targets net10.0; +# .Concurrency, #126): xunit-hosted Coyote TestingEngine runs. They always run: the ordinary +# test sweep runs them un-rewritten in systematic fuzzing mode (timing perturbation, no +# controlled schedule), and this workflow rewrites the assembly and sets COYOTE_REWRITTEN=1 +# so the same tests run under controlled scheduling (#365). That project targets net10.0; # `coyote rewrite` only patches the IL, so the runtime gap above does not apply. # # NOT implemented: the optional 24h soak (handle/thread/memory-leak hunting via @@ -132,9 +134,9 @@ jobs: run: coyote rewrite rewrite.coyote.json - name: Run the systematic tests under the rewritten assemblies - # RunSystematic early-returns without this flag (the normal PR sweep must not - # run un-rewritten Coyote, which reports false deadlocks); with it, each [Fact] - # drives a TestingEngine over 500 controlled interleavings and fails on any bug. + # Without this flag RunSystematic uses systematic fuzzing mode (what the ordinary + # test sweep runs, since un-rewritten Coyote cannot control the schedule); with it, + # each [Fact] drives a TestingEngine under controlled scheduling and fails on any bug. env: COYOTE_REWRITTEN: '1' run: dotnet test "$PROJECT/Wolfgang.Etl.TestKit.Tests.Concurrency.csproj" -c Release --no-build --logger "console;verbosity=normal"