mirror of
https://github.com/coder/coder.git
synced 2025-07-09 11:45:56 +00:00
test: increase test coverage around health severity (#10858)
This commit is contained in:
@ -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)
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user