Complete autonomous recovery controls

This commit is contained in:
kami
2026-07-30 14:57:25 +04:00
parent 8174400b1a
commit e8fadfc998
18 changed files with 364 additions and 77 deletions
+25
View File
@@ -2,8 +2,10 @@ package federation
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
"orchestra/internal/domain"
"testing"
)
@@ -49,3 +51,26 @@ func TestClientRegistersPollsAndReadsArtifactAsWorker(t *testing.T) {
}
}
}
func TestClientReportsTypedLaunchAckAndNack(t *testing.T) {
seen := map[string]map[string]any{}
s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var body map[string]any
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
t.Fatal(err)
}
seen[r.URL.Path] = body
w.WriteHeader(http.StatusNoContent)
}))
defer s.Close()
c := Client{BaseURL: s.URL, WorkerID: "h1", Token: "worker"}
if err := c.Start(context.Background(), "task", "epoch", 7, domain.SessionEvidence{PaneID: "p"}); err != nil {
t.Fatal(err)
}
if err := c.NackStart(context.Background(), "task", "epoch", 8, "invalid_handoff", "anchor mismatch", domain.SessionEvidence{PaneID: "p"}); err != nil {
t.Fatal(err)
}
if seen["/v1/federation/workers/h1/start"]["expected_version"] != float64(7) || seen["/v1/federation/workers/h1/nack"]["failure_class"] != "invalid_handoff" {
t.Fatalf("launch reports=%#v", seen)
}
}