5370f2c0be
Added a expvar style handler for the debug http server to allow health checks (/debug/health). Signed-off-by: Diogo Monica <diogo@docker.com>
86 lines
2.1 KiB
Go
86 lines
2.1 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/docker/distribution/health"
|
|
)
|
|
|
|
// TestGETDownHandlerDoesNotChangeStatus ensures that calling the endpoint
|
|
// /debug/health/down with METHOD GET returns a 404
|
|
func TestGETDownHandlerDoesNotChangeStatus(t *testing.T) {
|
|
recorder := httptest.NewRecorder()
|
|
|
|
req, err := http.NewRequest("GET", "https://fakeurl.com/debug/health/down", nil)
|
|
if err != nil {
|
|
t.Errorf("Failed to create request.")
|
|
}
|
|
|
|
DownHandler(recorder, req)
|
|
|
|
if recorder.Code != 404 {
|
|
t.Errorf("Did not get a 404.")
|
|
}
|
|
}
|
|
|
|
// TestGETUpHandlerDoesNotChangeStatus ensures that calling the endpoint
|
|
// /debug/health/down with METHOD GET returns a 404
|
|
func TestGETUpHandlerDoesNotChangeStatus(t *testing.T) {
|
|
recorder := httptest.NewRecorder()
|
|
|
|
req, err := http.NewRequest("GET", "https://fakeurl.com/debug/health/up", nil)
|
|
if err != nil {
|
|
t.Errorf("Failed to create request.")
|
|
}
|
|
|
|
DownHandler(recorder, req)
|
|
|
|
if recorder.Code != 404 {
|
|
t.Errorf("Did not get a 404.")
|
|
}
|
|
}
|
|
|
|
// TestPOSTDownHandlerChangeStatus ensures the endpoint /debug/health/down changes
|
|
// the status code of the response to 503
|
|
// This test is order dependent, and should come before TestPOSTUpHandlerChangeStatus
|
|
func TestPOSTDownHandlerChangeStatus(t *testing.T) {
|
|
recorder := httptest.NewRecorder()
|
|
|
|
req, err := http.NewRequest("POST", "https://fakeurl.com/debug/health/down", nil)
|
|
if err != nil {
|
|
t.Errorf("Failed to create request.")
|
|
}
|
|
|
|
DownHandler(recorder, req)
|
|
|
|
if recorder.Code != 200 {
|
|
t.Errorf("Did not get a 200.")
|
|
}
|
|
|
|
if len(health.CheckStatus()) != 1 {
|
|
t.Errorf("DownHandler didn't add an error check.")
|
|
}
|
|
}
|
|
|
|
// TestPOSTUpHandlerChangeStatus ensures the endpoint /debug/health/up changes
|
|
// the status code of the response to 200
|
|
func TestPOSTUpHandlerChangeStatus(t *testing.T) {
|
|
recorder := httptest.NewRecorder()
|
|
|
|
req, err := http.NewRequest("POST", "https://fakeurl.com/debug/health/up", nil)
|
|
if err != nil {
|
|
t.Errorf("Failed to create request.")
|
|
}
|
|
|
|
UpHandler(recorder, req)
|
|
|
|
if recorder.Code != 200 {
|
|
t.Errorf("Did not get a 200.")
|
|
}
|
|
|
|
if len(health.CheckStatus()) != 0 {
|
|
t.Errorf("UpHandler didn't remove the error check.")
|
|
}
|
|
}
|