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  }