From 1a52c539f26247e94ea61366ddf3ff5df13c12a5 Mon Sep 17 00:00:00 2001 From: Akira Hayashi Date: Thu, 20 Jul 2023 14:36:45 +0900 Subject: [PATCH 1/2] Add endpoint `/health` for health checking --- pkg/controller/server/healthcheck.go | 10 ++++++++++ pkg/controller/server/server.go | 2 ++ 2 files changed, 12 insertions(+) create mode 100644 pkg/controller/server/healthcheck.go diff --git a/pkg/controller/server/healthcheck.go b/pkg/controller/server/healthcheck.go new file mode 100644 index 0000000..1772b63 --- /dev/null +++ b/pkg/controller/server/healthcheck.go @@ -0,0 +1,10 @@ +package server + +import "net/http" + +func handleHealthCheckRequest() http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + w.Write([]byte("OK")) + } +} diff --git a/pkg/controller/server/server.go b/pkg/controller/server/server.go index 68dc30f..01b12dd 100644 --- a/pkg/controller/server/server.go +++ b/pkg/controller/server/server.go @@ -32,6 +32,8 @@ func New(uc *usecase.Usecase) *Server { r.Post("/webhook/github", serveGitHubWebhook(uc)) + r.Get("/health", handleHealthCheckRequest()) + return &Server{ uc: uc, mux: r, From 47b983706d6404e921c477fd30570800a6ce6fee Mon Sep 17 00:00:00 2001 From: Akira Hayashi Date: Thu, 20 Jul 2023 15:01:03 +0900 Subject: [PATCH 2/2] Test endpoint `/health` --- pkg/controller/server/healthcheck_test.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 pkg/controller/server/healthcheck_test.go diff --git a/pkg/controller/server/healthcheck_test.go b/pkg/controller/server/healthcheck_test.go new file mode 100644 index 0000000..ee011b5 --- /dev/null +++ b/pkg/controller/server/healthcheck_test.go @@ -0,0 +1,20 @@ +package server_test + +import ( + "net/http/httptest" + "testing" + + "github.com/m-mizutani/ghnotify/pkg/controller/server" + "github.com/m-mizutani/ghnotify/pkg/usecase" + "github.com/stretchr/testify/assert" +) + +func TestHealthCheck(t *testing.T) { + srv := server.New(&usecase.Usecase{}) + + w := httptest.NewRecorder() + r := httptest.NewRequest("GET", "/health", nil) + srv.ServeHTTP(w, r) + + assert.Equal(t, 200, w.Code) +}