From 4feb9eee2036b6eb14ce612725796300ae007149 Mon Sep 17 00:00:00 2001 From: Sorin Buliarca Date: Fri, 2 Mar 2018 12:39:59 +0200 Subject: [PATCH] Fixed getting the individual pod severity. --- checkerService.go | 6 ++++-- controller_test.go | 2 +- service_test.go | 28 +++++++++++++++++++++++++++- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/checkerService.go b/checkerService.go index 609a88d..22e40dc 100644 --- a/checkerService.go +++ b/checkerService.go @@ -80,15 +80,17 @@ func (hs *k8sHealthcheckService) getIndividualPodSeverity(pod pod, appPort int32 } finalSeverity := uint8(2) + checkFailed := bool(false) for _, check := range health.Checks { if !check.OK { + checkFailed = true if check.Severity < finalSeverity { - return check.Severity, true, nil + return check.Severity, checkFailed, nil } } } - return finalSeverity, false, nil + return finalSeverity, checkFailed, nil } func (hs *k8sHealthcheckService) getHealthChecksForPod(pod pod, appPort int32) (healthcheckResponse, error) { diff --git a/controller_test.go b/controller_test.go index 428e338..7d660b3 100644 --- a/controller_test.go +++ b/controller_test.go @@ -124,7 +124,7 @@ func (m *MockService) getPodsForService(serviceName string) ([]pod, error) { case "invalidNameForService": return []pod{}, errors.New("invalid pod name") case "resilient-notok-sev1": - return createPods(0, []int{1, 1}), nil + return createPods(0, []int{2, 1}), nil case "resilient-notok-sev2": return createPods(0, []int{2, 2}), nil case "resilient-halfok-sev1": diff --git a/service_test.go b/service_test.go index 6fe023e..66512dc 100644 --- a/service_test.go +++ b/service_test.go @@ -50,6 +50,23 @@ const ( "name": "" } ] +}` + validFailingHealthCheckResponseBodyWithSeverity2 = `{ + "schemaVersion": 1, + "name": "CMSNotifierApplication", + "description": "CMSNotifierApplication", + "checks": [ + { + "checkOutput": "", + "panicGuide": "", + "lastUpdated": "", + "ok": false, + "severity": 2, + "businessImpact": "", + "technicalSummary": "", + "name": "" + } + ] }` validPassingHealthCheckResponseBody = `{ "schemaVersion": 1, @@ -140,11 +157,20 @@ func TestGetIndividualPodSeverityErrorWhilePodHealthCheck(t *testing.T) { func TestGetIndividualPodSeverityValidPodHealth(t *testing.T) { service := initializeMockService(initializeMockHTTPClient(http.StatusOK, validFailingHealthCheckResponseBody)) - severity, _, err := service.getIndividualPodSeverity(pod{name: "test", ip: validIP}, 8080) + severity, checkFailed, err := service.getIndividualPodSeverity(pod{name: "test", ip: validIP}, 8080) assert.Nil(t, err) + assert.True(t, checkFailed) assert.Equal(t, validSeverity, severity) } +func TestGetIndividualPodSeverityValidPodHealth_Severity2(t *testing.T) { + service := initializeMockService(initializeMockHTTPClient(http.StatusOK, validFailingHealthCheckResponseBodyWithSeverity2)) + severity, checkFailed, err := service.getIndividualPodSeverity(pod{name: "test", ip: validIP}, 8080) + assert.Nil(t, err) + assert.True(t, checkFailed) + assert.Equal(t, uint8(2), severity) +} + func TestCheckPodHealthFailingChecks(t *testing.T) { service := initializeMockService(initializeMockHTTPClient(http.StatusOK, validFailingHealthCheckResponseBody)) err := service.checkPodHealth(pod{name: "test", ip: validIP}, 8080)