github.com/cosmos/cosmos-sdk@v0.50.10/telemetry/wrapper_test.go (about) 1 package telemetry 2 3 import ( 4 "sync" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 var mu sync.Mutex 12 13 func initTelemetry(v bool) { 14 globalTelemetryEnabled = v 15 } 16 17 // Reset the global state to a known disabled state before each test. 18 func setupTest(t *testing.T) { 19 t.Helper() 20 mu.Lock() // Ensure no other test can modify global state at the same time. 21 defer mu.Unlock() 22 initTelemetry(false) 23 } 24 25 // TestNow tests the Now function when telemetry is enabled and disabled. 26 func TestNow(t *testing.T) { 27 setupTest(t) // Locks the mutex to avoid race condition. 28 29 initTelemetry(true) 30 telemetryTime := Now() 31 assert.NotEqual(t, time.Time{}, telemetryTime, "Now() should not return zero time when telemetry is enabled") 32 33 setupTest(t) // Reset the global state and lock the mutex again. 34 35 initTelemetry(false) 36 telemetryTime = Now() 37 assert.Equal(t, time.Time{}, telemetryTime, "Now() should return zero time when telemetry is disabled") 38 } 39 40 // TestIsTelemetryEnabled tests the IsTelemetryEnabled function. 41 func TestIsTelemetryEnabled(t *testing.T) { 42 setupTest(t) // Locks the mutex to avoid race condition. 43 44 initTelemetry(true) 45 assert.True(t, IsTelemetryEnabled(), "IsTelemetryEnabled() should return true when globalTelemetryEnabled is set to true") 46 47 setupTest(t) // Reset the global state and lock the mutex again. 48 49 initTelemetry(false) 50 assert.False(t, IsTelemetryEnabled(), "IsTelemetryEnabled() should return false when globalTelemetryEnabled is set to false") 51 }