From 2dadb2d46021108f246bfe34ed129d0719dc0ba8 Mon Sep 17 00:00:00 2001 From: unkin-agent Date: Sun, 25 Oct 2026 19:08:31 +1100 Subject: [PATCH] Wait for the stale refresh before counting member fetches --- internal/virtual/engine_stale_test.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/internal/virtual/engine_stale_test.go b/internal/virtual/engine_stale_test.go index c7d0e16..6f7c759 100644 --- a/internal/virtual/engine_stale_test.go +++ b/internal/virtual/engine_stale_test.go @@ -55,9 +55,14 @@ func fetchRepomd(t *testing.T, e *Engine) string { func TestServeStaleMemberDoesNotBlockMerge(t *testing.T) { release := make(chan struct{}) + refreshing := make(chan struct{}, 1) var slow atomic.Bool e, calls := staleEngine(true, func() *RPMMember { if slow.Load() { + select { + case refreshing <- struct{}{}: + default: + } <-release return rpmPkgMember("a", "2") } @@ -78,12 +83,17 @@ func TestServeStaleMemberDoesNotBlockMerge(t *testing.T) { t.Fatal("merge blocked on a serve_stale member refresh") } } + select { + case <-refreshing: + case <-time.After(5 * time.Second): + t.Fatal("background refresh never started") + } if n := calls.Load(); n != 2 { t.Fatalf("member fetched %d times, want 2 (cold + one single-flighted refresh)", n) } close(release) - deadline := time.Now().Add(time.Second) + deadline := time.Now().Add(5 * time.Second) for fetchRepomd(t, e) == v1 { if time.Now().After(deadline) { t.Fatal("background refresh never reached a merge")