Pulse/internal/mock/integration_concurrency_test.go
2026-04-11 13:50:38 +01:00

40 lines
716 B
Go

package mock
import (
"testing"
"time"
)
func TestSetEnabledDisableDoesNotDeadlockWhenUpdateIsBlocked(t *testing.T) {
SetEnabled(false)
t.Cleanup(func() {
SetEnabled(false)
})
cfg := DefaultConfig
cfg.RandomMetrics = true
SetMockConfig(cfg)
SetEnabled(true)
dataMu.Lock()
time.Sleep(currentMockUpdateInterval() + 250*time.Millisecond)
done := make(chan struct{})
go func() {
SetEnabled(false)
close(done)
}()
time.Sleep(100 * time.Millisecond)
dataMu.Unlock()
select {
case <-done:
case <-time.After(5 * time.Second):
t.Fatal("SetEnabled(false) deadlocked while stopping update loop")
}
if IsMockEnabled() {
t.Fatal("mock mode should be disabled after SetEnabled(false)")
}
}