Same four attempts, same asserted schedule,

thirteen milliseconds of test.

retry backoff 5s  then  10s  then  15s  ·  four attempts  ·  30s of waiting on the schedule
TimeProvider.System  ·  the clock the process runs on 30.000 s of wall clock
attempt 1 attempt 2 attempt 3 attempt 4 · 30s
FakeTimeProvider  ·  the same 30s, advanced one delay at a time 13 ms of wall clock
attempts 1–4 · 30s simulated not to scale: 13 ms against 30 s is 0.04% of the track
the part that costs an afternoon a fake clock fires only the timers that already exist, so one jump past the whole schedule leaves the run pending. each delay registers its timer only after the previous one's continuation runs
.NET SDK 10.0.201 · Microsoft.Extensions.TimeProvider.Testing 10.9.0 · 14 xUnit tests · 13 ms is the median of five consecutive runs
gdhami.net