From 4860f8732adfde41d5f2dca47eabda8de74e6e74 Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Tue, 30 Oct 2018 14:05:28 +0100 Subject: [PATCH] testservers: return Run method errors correctly --- cmd/cloud-controller-manager/app/testing/testserver.go | 9 ++++++++- cmd/kube-apiserver/app/testing/testserver.go | 9 ++++++++- cmd/kube-controller-manager/app/testing/testserver.go | 9 ++++++++- .../pkg/cmd/server/testing/testserver.go | 9 ++++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/cmd/cloud-controller-manager/app/testing/testserver.go b/cmd/cloud-controller-manager/app/testing/testserver.go index 7f470ac38d..e5a3e9e5ba 100644 --- a/cmd/cloud-controller-manager/app/testing/testserver.go +++ b/cmd/cloud-controller-manager/app/testing/testserver.go @@ -113,9 +113,10 @@ func StartTestServer(t Logger, customFlags []string) (result TestServer, err err return result, fmt.Errorf("failed to create config from options: %v", err) } + errCh := make(chan error) go func(stopCh <-chan struct{}) { if err := app.Run(config.Complete(), stopCh); err != nil { - t.Errorf("cloud-apiserver failed run: %v", err) + errCh <- err } }(stopCh) @@ -125,6 +126,12 @@ func StartTestServer(t Logger, customFlags []string) (result TestServer, err err return result, fmt.Errorf("failed to create a client: %v", err) } err = wait.Poll(100*time.Millisecond, 30*time.Second, func() (bool, error) { + select { + case err := <-errCh: + return false, err + default: + } + result := client.CoreV1().RESTClient().Get().AbsPath("/healthz").Do() status := 0 result.StatusCode(&status) diff --git a/cmd/kube-apiserver/app/testing/testserver.go b/cmd/kube-apiserver/app/testing/testserver.go index 21e13576fc..d9cde3599d 100644 --- a/cmd/kube-apiserver/app/testing/testserver.go +++ b/cmd/kube-apiserver/app/testing/testserver.go @@ -145,9 +145,10 @@ func StartTestServer(t Logger, instanceOptions *TestServerInstanceOptions, custo if err != nil { return result, fmt.Errorf("failed to create server chain: %v", err) } + errCh := make(chan error) go func(stopCh <-chan struct{}) { if err := server.PrepareRun().Run(stopCh); err != nil { - t.Errorf("kube-apiserver failed run: %v", err) + errCh <- err } }(stopCh) @@ -158,6 +159,12 @@ func StartTestServer(t Logger, instanceOptions *TestServerInstanceOptions, custo return result, fmt.Errorf("failed to create a client: %v", err) } err = wait.Poll(100*time.Millisecond, 30*time.Second, func() (bool, error) { + select { + case err := <-errCh: + return false, err + default: + } + result := client.CoreV1().RESTClient().Get().AbsPath("/healthz").Do() status := 0 result.StatusCode(&status) diff --git a/cmd/kube-controller-manager/app/testing/testserver.go b/cmd/kube-controller-manager/app/testing/testserver.go index 34ba72c5db..b864e120ea 100644 --- a/cmd/kube-controller-manager/app/testing/testserver.go +++ b/cmd/kube-controller-manager/app/testing/testserver.go @@ -114,9 +114,10 @@ func StartTestServer(t Logger, customFlags []string) (result TestServer, err err return result, fmt.Errorf("failed to create config from options: %v", err) } + errCh := make(chan error) go func(stopCh <-chan struct{}) { if err := app.Run(config.Complete(), stopCh); err != nil { - t.Errorf("kube-apiserver failed run: %v", err) + errCh <- err } }(stopCh) @@ -126,6 +127,12 @@ func StartTestServer(t Logger, customFlags []string) (result TestServer, err err return result, fmt.Errorf("failed to create a client: %v", err) } err = wait.Poll(100*time.Millisecond, 30*time.Second, func() (bool, error) { + select { + case err := <-errCh: + return false, err + default: + } + result := client.CoreV1().RESTClient().Get().AbsPath("/healthz").Do() status := 0 result.StatusCode(&status) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go index 3d705576f1..c9b2ab511a 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go @@ -150,9 +150,10 @@ func StartTestServer(t Logger, instanceOptions *TestServerInstanceOptions, custo return result, fmt.Errorf("failed to create server: %v", err) } + errCh := make(chan error) go func(stopCh <-chan struct{}) { if err := server.GenericAPIServer.PrepareRun().Run(stopCh); err != nil { - t.Errorf("apiextensions-apiserver failed run: %v", err) + errCh <- err } }(stopCh) @@ -163,6 +164,12 @@ func StartTestServer(t Logger, instanceOptions *TestServerInstanceOptions, custo return result, fmt.Errorf("failed to create a client: %v", err) } err = wait.Poll(100*time.Millisecond, 30*time.Second, func() (bool, error) { + select { + case err := <-errCh: + return false, err + default: + } + result := client.CoreV1().RESTClient().Get().AbsPath("/healthz").Do() status := 0 result.StatusCode(&status)