From faf7dff7630156ae3f5af6ba973c37917b205049 Mon Sep 17 00:00:00 2001 From: Kris Date: Wed, 28 Jun 2017 12:25:20 -0700 Subject: [PATCH] Add traceroute logging on connection failure --- test/e2e/framework/upgrade_util.go | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/test/e2e/framework/upgrade_util.go b/test/e2e/framework/upgrade_util.go index ae8a3c98d3..fa12401289 100644 --- a/test/e2e/framework/upgrade_util.go +++ b/test/e2e/framework/upgrade_util.go @@ -18,6 +18,7 @@ package framework import ( "fmt" + "os/exec" "path" "strings" "time" @@ -39,13 +40,34 @@ func RealVersion(s string) (string, error) { return strings.TrimPrefix(strings.TrimSpace(v), "v"), nil } +func traceRouteToMaster() { + path, err := exec.LookPath("traceroute") + if err != nil { + Logf("Could not find traceroute program") + return + } + + cmd := exec.Command(path, "-I", GetMasterHost()) + out, err := cmd.Output() + if len(out) != 0 { + Logf(string(out)) + } + if exiterr, ok := err.(*exec.ExitError); err != nil && ok { + Logf("error while running traceroute: %s", exiterr.Stderr) + } +} + func CheckMasterVersion(c clientset.Interface, want string) error { Logf("Checking master version") var err error var v *version.Info waitErr := wait.PollImmediate(5*time.Second, 2*time.Minute, func() (bool, error) { v, err = c.Discovery().ServerVersion() - return err != nil, nil + if err != nil { + traceRouteToMaster() + return false, nil + } + return true, nil }) if waitErr != nil { return fmt.Errorf("CheckMasterVersion() couldn't get the master version: %v", err)