From 419e9052ff72571251268a20f3b00c4c8fcce38e Mon Sep 17 00:00:00 2001 From: Andrew Seigner Date: Wed, 28 Aug 2019 09:41:09 -0700 Subject: [PATCH] Fix flakey upgrade integration test (#3329) The `linkerd upgrade` integration test compares the output from two commands: - `linkerd upgrade control-plane` - `linkerd upgrade control-plane --from-manifests` The output of these commands include the heartbeat cronjob schedule, which is generated based on the current time. Modify the upgrade integration test to retry the manifest comparison one time, assuming that `linkerd upgrade control-plane` should not take more than one minute to execute. Signed-off-by: Andrew Seigner --- test/install_test.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/test/install_test.go b/test/install_test.go index ff6718718..d6f77bd39 100644 --- a/test/install_test.go +++ b/test/install_test.go @@ -205,7 +205,16 @@ func TestInstallOrUpgradeCli(t *testing.T) { } if out != upgradeFromManifests { - t.Fatalf("manifest upgrade differs from k8s upgrade.\nk8s upgrade:\n%s\nmanifest upgrade:\n%s", out, upgradeFromManifests) + // retry in case it's just a discrepancy in the heartbeat cron schedule + exec := append([]string{cmd}, args...) + out, _, err := TestHelper.LinkerdRun(exec...) + if err != nil { + t.Fatalf("command failed: %v\n%s", exec, out) + } + + if out != upgradeFromManifests { + t.Fatalf("manifest upgrade differs from k8s upgrade.\nk8s upgrade:\n%s\nmanifest upgrade:\n%s", out, upgradeFromManifests) + } } }