From a8a0b2c0b312e675f19c9ff9ac15293a5a7be048 Mon Sep 17 00:00:00 2001 From: Tobiasz Heller Date: Mon, 15 May 2023 16:02:55 +0200 Subject: [PATCH] Fix twoClustersTunnel flakiness --- integration/integration_test.go | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index acebb65ededca..dd1ca832238b6 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -2189,6 +2189,23 @@ func twoClustersTunnel(t *testing.T, suite *integrationTestSuite, now time.Time, require.NoError(t, err) require.Equal(t, outputA.String(), outputB.String()) + clientHasEvents := func(site auth.ClientI, count int) func() bool { + // only look for exec events + eventTypes := []string{events.ExecEvent} + + return func() bool { + eventsInSite, _, err := site.SearchEvents(now, now.Add(1*time.Hour), defaults.Namespace, eventTypes, 0, types.EventOrderAscending, "") + require.NoError(t, err) + return len(eventsInSite) == count + } + } + + siteA := a.GetSiteAPI(a.Secrets.SiteName) + + // Wait for 2nd event before stopping auth. + require.Eventually(t, clientHasEvents(siteA, 2), 5*time.Second, 500*time.Millisecond, + "Failed to find %d events on helpers.Site A after 5s", execCountSiteA) + // Stop "site-A" and try to connect to it again via "site-A" (expect a connection error) require.NoError(t, a.StopAuth(false)) err = tc.SSH(context.TODO(), cmd, false) @@ -2210,18 +2227,7 @@ func twoClustersTunnel(t *testing.T, suite *integrationTestSuite, now time.Time, require.Eventually(t, tcHasReconnected, 10*time.Second, 250*time.Millisecond, "Timed out waiting for helpers.Site A to restart: %v", sshErr) - clientHasEvents := func(site auth.ClientI, count int) func() bool { - // only look for exec events - eventTypes := []string{events.ExecEvent} - - return func() bool { - eventsInSite, _, err := site.SearchEvents(now, now.Add(1*time.Hour), defaults.Namespace, eventTypes, 0, types.EventOrderAscending, "") - require.NoError(t, err) - return len(eventsInSite) == count - } - } - - siteA := a.GetSiteAPI(a.Secrets.SiteName) + siteA = a.GetSiteAPI(a.Secrets.SiteName) require.Eventually(t, clientHasEvents(siteA, execCountSiteA), 5*time.Second, 500*time.Millisecond, "Failed to find %d events on helpers.Site A after 5s", execCountSiteA)