Skip to content

Commit 67514f4

Browse files
committed
T44: add runner provider health check
1 parent 3fe2a34 commit 67514f4

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

internal/module_runner_provider.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,11 +220,16 @@ func (m *githubRunnerProviderModule) invokeMethod(ctx context.Context, method st
220220

221221
func (m *githubRunnerProviderModule) HTTPHandler() http.Handler {
222222
mux := http.NewServeMux()
223+
mux.HandleFunc("GET /healthz", m.handleHealth)
223224
mux.HandleFunc("POST /v1/actions/runners/registration-token", m.handleRegistrationToken)
224225
mux.HandleFunc("DELETE /v1/actions/runners/{runner_id}", m.handleRemoveRunner)
225226
return mux
226227
}
227228

229+
func (m *githubRunnerProviderModule) handleHealth(w http.ResponseWriter, _ *http.Request) {
230+
writeProviderResponse(w, http.StatusOK, map[string]any{"status": "ok"})
231+
}
232+
228233
func (m *githubRunnerProviderModule) handleRegistrationToken(w http.ResponseWriter, r *http.Request) {
229234
var req struct {
230235
Repository string `json:"repository"`

internal/runner_provider_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,35 @@ func TestT41_GitHubRunnerProviderModuleServesComputeProviderHTTP(t *testing.T) {
145145
}
146146
}
147147

148+
func TestT44_GitHubRunnerProviderServesHealthz(t *testing.T) {
149+
module, err := newGitHubRunnerProviderModule("provider", map[string]any{
150+
"token": "github-token",
151+
"provider_token": "provider-token",
152+
"repositories": []any{"GoCodeAlone/workflow-compute"},
153+
}, &fakeRunnerClient{})
154+
if err != nil {
155+
t.Fatalf("module: %v", err)
156+
}
157+
server := httptest.NewServer(module.HTTPHandler())
158+
defer server.Close()
159+
160+
resp, err := server.Client().Get(server.URL + "/healthz")
161+
if err != nil {
162+
t.Fatalf("health request: %v", err)
163+
}
164+
defer resp.Body.Close()
165+
if resp.StatusCode != http.StatusOK {
166+
t.Fatalf("status: got %d want 200", resp.StatusCode)
167+
}
168+
var got map[string]string
169+
if err := json.NewDecoder(resp.Body).Decode(&got); err != nil {
170+
t.Fatalf("decode response: %v", err)
171+
}
172+
if got["status"] != "ok" {
173+
t.Fatalf("health response: got %+v", got)
174+
}
175+
}
176+
148177
func TestT41_GitHubRunnerProviderHTTPRejectsUnallowlistedRepository(t *testing.T) {
149178
module, err := newGitHubRunnerProviderModule("provider", map[string]any{
150179
"token": "github-token",

0 commit comments

Comments
 (0)