返回 DeepSeek-Reasonix
startup_windows_test.go
根目录 / internal / repair / startup_windows_test.go
1 //go:build windows
2
3 package repair
4
5 import (
6 "path/filepath"
7 "sync"
8 "sync/atomic"
9 "testing"
10 )
11
12 func TestStartupTrackerWindowsHandleContentionReportsOnce(t *testing.T) {
13 for iteration := range 100 {
14 path := filepath.Join(t.TempDir(), "startup.json")
15 writeLegacyStartupState(t, path, `{"phase":"healthy","pid":42}`)
16 start := make(chan struct{})
17 var reports atomic.Int32
18 var group sync.WaitGroup
19 for range 8 {
20 group.Go(func() {
21 tracker := NewStartupTracker(path)
22 tracker.processAlive = func(int) bool { return false }
23 <-start
24 if tracker.ObservePreviousRun().Abnormal {
25 reports.Add(1)
26 }
27 })
28 }
29 close(start)
30 group.Wait()
31 if got := reports.Load(); got != 1 {
32 t.Fatalf("iteration %d reports = %d, want 1", iteration, got)
33 }
34 }
35 }
36
36 lines GO