Add health check and self reporting of health
This avoids panicing and instead provides an HTTP endpoint to report health
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNewHealthCheck(t *testing.T) {
|
||||
monitors := []*Monitor{
|
||||
{Name: "Test Monitor"},
|
||||
}
|
||||
hc := NewHealthCheckHandler(monitors)
|
||||
|
||||
monitors[0].alertCount++
|
||||
|
||||
if healthy, _ := hc.MinitorHealthCheck(); healthy {
|
||||
t.Errorf("Initial hc state should be unhealthy until some successful alert is sent")
|
||||
}
|
||||
|
||||
if healthy, _ := hc.MonitorsHealthCheck(); healthy {
|
||||
t.Errorf("Faking an alert on the monitor pointer should make this unhealthy")
|
||||
}
|
||||
}
|
||||
|
||||
func TestMinitorHealthCheck(t *testing.T) {
|
||||
monitors := []*Monitor{
|
||||
{Name: "Test Monitor"},
|
||||
}
|
||||
hc := NewHealthCheckHandler(monitors)
|
||||
|
||||
t.Run("MinitorHealthCheck(healthy)", func(t *testing.T) {
|
||||
hc.MinitorHealthy(true)
|
||||
healthy, body := hc.MinitorHealthCheck()
|
||||
if !healthy {
|
||||
t.Errorf("Expected healthy check")
|
||||
}
|
||||
if body != "OK" {
|
||||
t.Errorf("Expected OK response")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("MinitorHealthCheck(unhealthy)", func(t *testing.T) {
|
||||
hc.MinitorHealthy(false)
|
||||
healthy, body := hc.MinitorHealthCheck()
|
||||
if healthy {
|
||||
t.Errorf("Expected healthy check")
|
||||
}
|
||||
if body != "UNHEALTHY" {
|
||||
t.Errorf("Expected UNHEALTHY response")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestMonitorsHealthCheck(t *testing.T) {
|
||||
monitors := []*Monitor{
|
||||
{Name: "Test Monitor"},
|
||||
}
|
||||
hc := NewHealthCheckHandler(monitors)
|
||||
|
||||
t.Run("MonitorsHealthCheck(healthy)", func(t *testing.T) {
|
||||
healthy, body := hc.MonitorsHealthCheck()
|
||||
if !healthy {
|
||||
t.Errorf("Expected healthy check")
|
||||
}
|
||||
if body != "OK" {
|
||||
t.Errorf("Expected OK response")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("MonitorsHealthCheck(unhealthy)", func(t *testing.T) {
|
||||
monitors[0].alertCount++
|
||||
healthy, body := hc.MonitorsHealthCheck()
|
||||
if healthy {
|
||||
t.Errorf("Expected healthy check")
|
||||
}
|
||||
if body != "UNHEALTHY: The following monitors are unhealthy: Test Monitor" {
|
||||
t.Errorf("Expected UNHEALTHY response")
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user