From 7600dd9dd676e9414c27f1e4dc8dd0dab1f88601 Mon Sep 17 00:00:00 2001 From: Liz Rice Date: Wed, 30 Aug 2017 17:51:28 +0100 Subject: [PATCH] =?UTF-8?q?Make=20the=20ps=20/=20fakeps=20function=20globa?= =?UTF-8?q?l=20so=20we=20don=E2=80=99t=20have=20to=20pass=20it=20around=20?= =?UTF-8?q?so=20much?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/common.go | 2 +- cmd/util.go | 14 +++++++++++--- cmd/util_test.go | 8 ++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/cmd/common.go b/cmd/common.go index 89f45bc..b3df7b9 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -165,7 +165,7 @@ func verifyNodeType(t check.NodeType) { } for _, bin := range bins { - if !verifyBin(bin, ps) { + if !verifyBin(bin) { printlnWarn(fmt.Sprintf("%s is not running", bin)) } } diff --git a/cmd/util.go b/cmd/util.go index bd12398..87b13f0 100644 --- a/cmd/util.go +++ b/cmd/util.go @@ -22,6 +22,14 @@ var ( } ) +var psFunc func(string) string +var statFunc func(string) (os.FileInfo, error) + +func init() { + psFunc = ps + statFunc = os.Stat +} + func printlnWarn(msg string) { fmt.Fprintf(os.Stderr, "[%s] %s\n", colors[check.WARN].Sprintf("%s", check.WARN), @@ -76,7 +84,7 @@ func ps(proc string) string { } // verifyBin checks that the binary specified is running -func verifyBin(bin string, psFunc func(string) string) bool { +func verifyBin(bin string) bool { // Strip any quotes bin = strings.Trim(bin, "'\"") @@ -103,9 +111,9 @@ func verifyBin(bin string, psFunc func(string) string) bool { } // findExecutable looks through a list of possible executable names and finds the first one that's running -func findExecutable(candidates []string, psFunc func(string) string) (string, error) { +func findExecutable(candidates []string) (string, error) { for _, c := range candidates { - if verifyBin(c, psFunc) { + if verifyBin(c) { return c, nil } } diff --git a/cmd/util_test.go b/cmd/util_test.go index 5da91de..659dd2e 100644 --- a/cmd/util_test.go +++ b/cmd/util_test.go @@ -97,10 +97,11 @@ func TestVerifyBin(t *testing.T) { {proc: "cmd param", psOut: "cmd", exp: false}, } + psFunc = fakeps for id, c := range cases { t.Run(strconv.Itoa(id), func(t *testing.T) { g = c.psOut - v := verifyBin(c.proc, fakeps) + v := verifyBin(c.proc) if v != c.exp { t.Fatalf("Expected %v got %v", c.exp, v) } @@ -120,12 +121,15 @@ func TestFindExecutable(t *testing.T) { {candidates: []string{"one double", "two double", "three double"}, psOut: "two double is running", exp: "two double"}, {candidates: []string{"one", "two", "three"}, psOut: "blah", expErr: true}, {candidates: []string{"one double", "two double", "three double"}, psOut: "two", expErr: true}, + {candidates: []string{"apiserver", "kube-apiserver"}, psOut: "kube-apiserver", exp: "kube-apiserver"}, + {candidates: []string{"apiserver", "kube-apiserver", "hyperkube-apiserver"}, psOut: "kube-apiserver", exp: "kube-apiserver"}, } + psFunc = fakeps for id, c := range cases { t.Run(strconv.Itoa(id), func(t *testing.T) { g = c.psOut - e, err := findExecutable(c.candidates, fakeps) + e, err := findExecutable(c.candidates) if e != c.exp { t.Fatalf("Expected %v got %v", c.exp, e) }