Remove unnecessary goroutine in flaky test

The watch is established in a background goroutine and the first assertion proves that the watcher is active so there is no reason for the update to happen in a racy goroutine.

Note that this does not completely remove the race condition as the first call to testGetConfigValTimeout could time out before a config is returned.
This commit is contained in:
Chris S. Kim 2022-07-27 10:21:27 -04:00 committed by Chris S. Kim
parent 4e292b7b72
commit a5fe2125e9
1 changed files with 9 additions and 16 deletions

View File

@ -4,7 +4,6 @@ import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/hashicorp/consul/agent"
@ -143,13 +142,9 @@ func TestAgentConfigWatcherSidecarProxy(t *testing.T) {
},
},
}
require.Equal(t, expectCfg, cfg)
// Now keep watching and update the config.
go func() {
// Wait for watcher to be watching
time.Sleep(20 * time.Millisecond)
reg.Connect.SidecarService.Proxy.Upstreams = append(reg.Connect.SidecarService.Proxy.Upstreams,
api.Upstream{
DestinationName: "cache",
@ -157,9 +152,7 @@ func TestAgentConfigWatcherSidecarProxy(t *testing.T) {
LocalBindAddress: "127.10.10.10",
})
reg.Connect.SidecarService.Proxy.Config["local_connect_timeout_ms"] = 444
err := agent.ServiceRegister(reg)
require.NoError(t, err)
}()
require.NoError(t, agent.ServiceRegister(reg))
cfg = testGetConfigValTimeout(t, w, 2*time.Second)
@ -173,7 +166,7 @@ func TestAgentConfigWatcherSidecarProxy(t *testing.T) {
})
expectCfg.PublicListener.LocalConnectTimeoutMs = 444
assert.Equal(t, expectCfg, cfg)
require.Equal(t, expectCfg, cfg)
}
func testGetConfigValTimeout(t *testing.T, w ConfigWatcher,