test: increase test coverage around health severity (#10858)

This commit is contained in:
Marcin Tojek
2023-11-24 15:42:17 +01:00
committed by GitHub
parent 61be4dfe5a
commit b501046cf9

View File

@ -8,6 +8,7 @@ import (
"github.com/coder/coder/v2/coderd/healthcheck" "github.com/coder/coder/v2/coderd/healthcheck"
"github.com/coder/coder/v2/coderd/healthcheck/derphealth" "github.com/coder/coder/v2/coderd/healthcheck/derphealth"
"github.com/coder/coder/v2/coderd/healthcheck/health"
) )
type testChecker struct { type testChecker struct {
@ -40,42 +41,53 @@ func TestHealthcheck(t *testing.T) {
name string name string
checker *testChecker checker *testChecker
healthy bool healthy bool
severity health.Severity
failingSections []string failingSections []string
}{{ }{{
name: "OK", name: "OK",
checker: &testChecker{ checker: &testChecker{
DERPReport: derphealth.Report{ DERPReport: derphealth.Report{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
AccessURLReport: healthcheck.AccessURLReport{ AccessURLReport: healthcheck.AccessURLReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
WebsocketReport: healthcheck.WebsocketReport{ WebsocketReport: healthcheck.WebsocketReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
DatabaseReport: healthcheck.DatabaseReport{ DatabaseReport: healthcheck.DatabaseReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
}, },
healthy: true, healthy: true,
severity: health.SeverityOK,
failingSections: []string{}, failingSections: []string{},
}, { }, {
name: "DERPFail", name: "DERPFail",
checker: &testChecker{ checker: &testChecker{
DERPReport: derphealth.Report{ DERPReport: derphealth.Report{
Healthy: false, Healthy: false,
Severity: health.SeverityError,
}, },
AccessURLReport: healthcheck.AccessURLReport{ AccessURLReport: healthcheck.AccessURLReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
WebsocketReport: healthcheck.WebsocketReport{ WebsocketReport: healthcheck.WebsocketReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
DatabaseReport: healthcheck.DatabaseReport{ DatabaseReport: healthcheck.DatabaseReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
}, },
healthy: false, healthy: false,
severity: health.SeverityError,
failingSections: []string{healthcheck.SectionDERP}, failingSections: []string{healthcheck.SectionDERP},
}, { }, {
name: "DERPWarning", name: "DERPWarning",
@ -83,77 +95,115 @@ func TestHealthcheck(t *testing.T) {
DERPReport: derphealth.Report{ DERPReport: derphealth.Report{
Healthy: true, Healthy: true,
Warnings: []string{"foobar"}, Warnings: []string{"foobar"},
Severity: health.SeverityWarning,
}, },
AccessURLReport: healthcheck.AccessURLReport{ AccessURLReport: healthcheck.AccessURLReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
WebsocketReport: healthcheck.WebsocketReport{ WebsocketReport: healthcheck.WebsocketReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
DatabaseReport: healthcheck.DatabaseReport{ DatabaseReport: healthcheck.DatabaseReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
}, },
healthy: true, healthy: true,
severity: health.SeverityWarning,
failingSections: []string{}, failingSections: []string{},
}, { }, {
name: "AccessURLFail", name: "AccessURLFail",
checker: &testChecker{ checker: &testChecker{
DERPReport: derphealth.Report{ DERPReport: derphealth.Report{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
AccessURLReport: healthcheck.AccessURLReport{ AccessURLReport: healthcheck.AccessURLReport{
Healthy: false, Healthy: false,
Severity: health.SeverityWarning,
}, },
WebsocketReport: healthcheck.WebsocketReport{ WebsocketReport: healthcheck.WebsocketReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
DatabaseReport: healthcheck.DatabaseReport{ DatabaseReport: healthcheck.DatabaseReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
}, },
healthy: false, healthy: false,
severity: health.SeverityWarning,
failingSections: []string{healthcheck.SectionAccessURL}, failingSections: []string{healthcheck.SectionAccessURL},
}, { }, {
name: "WebsocketFail", name: "WebsocketFail",
checker: &testChecker{ checker: &testChecker{
DERPReport: derphealth.Report{ DERPReport: derphealth.Report{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
AccessURLReport: healthcheck.AccessURLReport{ AccessURLReport: healthcheck.AccessURLReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
WebsocketReport: healthcheck.WebsocketReport{ WebsocketReport: healthcheck.WebsocketReport{
Healthy: false, Healthy: false,
Severity: health.SeverityError,
}, },
DatabaseReport: healthcheck.DatabaseReport{ DatabaseReport: healthcheck.DatabaseReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
}, },
healthy: false, healthy: false,
severity: health.SeverityError,
failingSections: []string{healthcheck.SectionWebsocket}, failingSections: []string{healthcheck.SectionWebsocket},
}, { }, {
name: "DatabaseFail", name: "DatabaseFail",
checker: &testChecker{ checker: &testChecker{
DERPReport: derphealth.Report{ DERPReport: derphealth.Report{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
AccessURLReport: healthcheck.AccessURLReport{ AccessURLReport: healthcheck.AccessURLReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
WebsocketReport: healthcheck.WebsocketReport{ WebsocketReport: healthcheck.WebsocketReport{
Healthy: true, Healthy: true,
Severity: health.SeverityOK,
}, },
DatabaseReport: healthcheck.DatabaseReport{ DatabaseReport: healthcheck.DatabaseReport{
Healthy: false, Healthy: false,
Severity: health.SeverityError,
}, },
}, },
healthy: false, healthy: false,
severity: health.SeverityError,
failingSections: []string{healthcheck.SectionDatabase}, failingSections: []string{healthcheck.SectionDatabase},
}, { }, {
name: "AllFail", name: "AllFail",
checker: &testChecker{}, checker: &testChecker{
healthy: false, DERPReport: derphealth.Report{
Healthy: false,
Severity: health.SeverityError,
},
AccessURLReport: healthcheck.AccessURLReport{
Healthy: false,
Severity: health.SeverityError,
},
WebsocketReport: healthcheck.WebsocketReport{
Healthy: false,
Severity: health.SeverityError,
},
DatabaseReport: healthcheck.DatabaseReport{
Healthy: false,
Severity: health.SeverityError,
},
},
healthy: false,
severity: health.SeverityError,
failingSections: []string{ failingSections: []string{
healthcheck.SectionDERP, healthcheck.SectionDERP,
healthcheck.SectionAccessURL, healthcheck.SectionAccessURL,
@ -170,11 +220,17 @@ func TestHealthcheck(t *testing.T) {
}) })
assert.Equal(t, c.healthy, report.Healthy) assert.Equal(t, c.healthy, report.Healthy)
assert.Equal(t, c.severity, report.Severity)
assert.Equal(t, c.failingSections, report.FailingSections) assert.Equal(t, c.failingSections, report.FailingSections)
assert.Equal(t, c.checker.DERPReport.Healthy, report.DERP.Healthy) assert.Equal(t, c.checker.DERPReport.Healthy, report.DERP.Healthy)
assert.Equal(t, c.checker.DERPReport.Severity, report.DERP.Severity)
assert.Equal(t, c.checker.DERPReport.Warnings, report.DERP.Warnings) assert.Equal(t, c.checker.DERPReport.Warnings, report.DERP.Warnings)
assert.Equal(t, c.checker.AccessURLReport.Healthy, report.AccessURL.Healthy) assert.Equal(t, c.checker.AccessURLReport.Healthy, report.AccessURL.Healthy)
assert.Equal(t, c.checker.AccessURLReport.Severity, report.AccessURL.Severity)
assert.Equal(t, c.checker.WebsocketReport.Healthy, report.Websocket.Healthy) assert.Equal(t, c.checker.WebsocketReport.Healthy, report.Websocket.Healthy)
assert.Equal(t, c.checker.WebsocketReport.Severity, report.Websocket.Severity)
assert.Equal(t, c.checker.DatabaseReport.Healthy, report.Database.Healthy)
assert.Equal(t, c.checker.DatabaseReport.Severity, report.Database.Severity)
assert.NotZero(t, report.Time) assert.NotZero(t, report.Time)
assert.NotZero(t, report.CoderVersion) assert.NotZero(t, report.CoderVersion)
}) })