From e503b0942f87b5e3a9f43e8395dcd6d185b8d9ca Mon Sep 17 00:00:00 2001 From: Lukasz Rajewski Date: Mon, 11 Apr 2022 20:36:00 +0200 Subject: Fixed detection of the etcd connection status Issue-ID: MULTICLOUD-1468 Signed-off-by: Lukasz Rajewski Change-Id: If243e9a484afe5db7d9538a1875241fa425a2516 --- src/k8splugin/api/healthcheckhandler.go | 5 +++++ src/k8splugin/api/healthcheckhandler_test.go | 24 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) (limited to 'src/k8splugin/api') diff --git a/src/k8splugin/api/healthcheckhandler.go b/src/k8splugin/api/healthcheckhandler.go index 896c6df0..2b338b94 100644 --- a/src/k8splugin/api/healthcheckhandler.go +++ b/src/k8splugin/api/healthcheckhandler.go @@ -31,5 +31,10 @@ func healthCheckHandler(w http.ResponseWriter, r *http.Request) { return } + err = db.Etcd.HealthCheck() + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } w.WriteHeader(http.StatusOK) } diff --git a/src/k8splugin/api/healthcheckhandler_test.go b/src/k8splugin/api/healthcheckhandler_test.go index c6c07c16..cadcf766 100644 --- a/src/k8splugin/api/healthcheckhandler_test.go +++ b/src/k8splugin/api/healthcheckhandler_test.go @@ -34,6 +34,9 @@ func TestHealthCheckHandler(t *testing.T) { db.DBconn = &db.MockDB{ Err: nil, } + db.Etcd = &db.MockEtcdClient{ + Err: nil, + } request := httptest.NewRequest("GET", "/v1/healthcheck", nil) resp := executeRequest(request, NewRouter(nil, nil, nil, nil, nil, nil, nil, nil, nil)) @@ -43,10 +46,29 @@ func TestHealthCheckHandler(t *testing.T) { } }) - t.Run("FAILED HealthCheck", func(t *testing.T) { + t.Run("FAILED HealthCheck DB", func(t *testing.T) { db.DBconn = &db.MockDB{ Err: pkgerrors.New("Runtime Error in DB"), } + db.Etcd = &db.MockEtcdClient{ + Err: nil, + } + request := httptest.NewRequest("GET", "/v1/healthcheck", nil) + resp := executeRequest(request, NewRouter(nil, nil, nil, nil, nil, nil, nil, nil, nil)) + + //Check returned code + if resp.StatusCode != http.StatusInternalServerError { + t.Fatalf("Expected %d; Got: %d", http.StatusInternalServerError, resp.StatusCode) + } + }) + + t.Run("FAILED HealthCheck Etcd", func(t *testing.T) { + db.DBconn = &db.MockDB{ + Err: nil, + } + db.Etcd = &db.MockEtcdClient{ + Err: pkgerrors.New("Runtime Error in Etcd"), + } request := httptest.NewRequest("GET", "/v1/healthcheck", nil) resp := executeRequest(request, NewRouter(nil, nil, nil, nil, nil, nil, nil, nil, nil)) -- cgit 1.2.3-korg