diff --git a/util/cpu/BUILD.bazel b/util/cpu/BUILD.bazel index 58bc047a332c4..08893520caaa0 100644 --- a/util/cpu/BUILD.bazel +++ b/util/cpu/BUILD.bazel @@ -20,5 +20,6 @@ go_test( name = "cpu_test", srcs = ["cpu_test.go"], embed = [":cpu"], + flaky = True, deps = ["@com_github_stretchr_testify//require"], ) diff --git a/util/cpu/cpu.go b/util/cpu/cpu.go index 416b3c3eaeb99..2803b4e106c49 100644 --- a/util/cpu/cpu.go +++ b/util/cpu/cpu.go @@ -56,11 +56,13 @@ func NewCPUObserver() *Observer { // Start starts the cpu observer. func (c *Observer) Start() { - ticker := time.NewTicker(100 * time.Millisecond) - defer ticker.Stop() c.wg.Add(1) go func() { - defer c.wg.Done() + ticker := time.NewTicker(100 * time.Millisecond) + defer func() { + ticker.Stop() + c.wg.Done() + }() for { select { case <-ticker.C: diff --git a/util/cpu/cpu_test.go b/util/cpu/cpu_test.go index 6c7e863f9060a..cd330a11e5196 100644 --- a/util/cpu/cpu_test.go +++ b/util/cpu/cpu_test.go @@ -42,9 +42,10 @@ func TestCPUValue(t *testing.T) { } }() } - time.Sleep(30 * time.Second) - require.Greater(t, Observer.observe(), 0.0) - require.Less(t, Observer.observe(), 1.0) + Observer.Start() + time.Sleep(5 * time.Second) + require.GreaterOrEqual(t, GetCPUUsage(), 0.0) + require.Less(t, GetCPUUsage(), 1.0) Observer.Stop() close(exit) wg.Wait()