Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .github/workflows/coyote.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Loading