Skip to content

Commit 56059c9

Browse files
stubbiclaude
andcommitted
test(conformance): seed fixture secrets + fix maximal probes for un-skip
Un-skipping surfaced fixture issues (the corpus had never actually run): - maximal pinned readiness/liveness to /readyz + /healthz, which the agent's API server doesn't serve — point them at /health (the real endpoint). - gateways-all and profilestore-enabled reference gateway-token / Honcho-key Secrets that the operator injects as non-optional secretKeyRef env, so a missing Secret fails the pod with CreateContainerConfigError. Seed dummy Secrets (tg/discord/slack/wa/sig tokens, honcho key, maximal extra-env) in the suite's BeforeAll — a real deployment ships these alongside the instance; Ready only needs the env to resolve. minimal already passes Ready + 10x reconcile-idempotency against the republished v0.16.0 image; these fixes extend that to the feature-rich entries. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 125b6ae commit 56059c9

2 files changed

Lines changed: 53 additions & 2 deletions

File tree

test/conformance/idempotency_test.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,52 @@ const (
5959
idempotencyPokeWait = 15 * time.Second
6060
)
6161

62+
// seedConformanceSecrets creates the dummy Secrets the feature-rich corpus
63+
// fixtures reference (gateway tokens, Honcho API key, maximal's extra-env). The
64+
// operator wires these into the agent container via non-optional secretKeyRefs,
65+
// so they must exist or the pod fails with CreateContainerConfigError. Values are
66+
// placeholders — Ready only needs the env to resolve, not the upstream to accept.
67+
func seedConformanceSecrets(ns string) {
68+
manifest := fmt.Sprintf(`
69+
apiVersion: v1
70+
kind: Secret
71+
metadata: {name: tg-token, namespace: %[1]s}
72+
stringData: {token: dummy}
73+
---
74+
apiVersion: v1
75+
kind: Secret
76+
metadata: {name: discord-token, namespace: %[1]s}
77+
stringData: {token: dummy}
78+
---
79+
apiVersion: v1
80+
kind: Secret
81+
metadata: {name: slack-token, namespace: %[1]s}
82+
stringData: {bot-token: dummy, app-token: dummy, signing-secret: dummy}
83+
---
84+
apiVersion: v1
85+
kind: Secret
86+
metadata: {name: wa-token, namespace: %[1]s}
87+
stringData: {token: dummy}
88+
---
89+
apiVersion: v1
90+
kind: Secret
91+
metadata: {name: sig-token, namespace: %[1]s}
92+
stringData: {phone-number: "+10000000000", auth-token: dummy}
93+
---
94+
apiVersion: v1
95+
kind: Secret
96+
metadata: {name: api-keys, namespace: %[1]s}
97+
stringData: {honcho-api-key: dummy}
98+
---
99+
apiVersion: v1
100+
kind: Secret
101+
metadata: {name: hermes-maximal-extra-env, namespace: %[1]s}
102+
stringData: {HERMES_EXTRA: "1"}
103+
`, ns)
104+
out, err := kubectlApply(manifest)
105+
Expect(err).ToNot(HaveOccurred(), "seed conformance secrets: %s", out)
106+
}
107+
62108
var _ = Describe("idempotency canary", Ordered, func() {
63109
var (
64110
ns string
@@ -70,6 +116,11 @@ var _ = Describe("idempotency canary", Ordered, func() {
70116
DeferCleanup(func() {
71117
deleteNamespace(ns)
72118
})
119+
// Seed the dummy Secrets the feature-rich fixtures reference (gateway
120+
// tokens, Honcho key, maximal's extra-env). A real deployment ships these
121+
// alongside the instance; the operator injects them into the agent via
122+
// non-optional secretKeyRefs, so they must exist for the pod to start.
123+
seedConformanceSecrets(ns)
73124
})
74125

75126
for _, entry := range idempotencyCorpus {

test/conformance/testdata/maximal.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ spec:
7272
probes:
7373
liveness:
7474
httpGet:
75-
path: /healthz
75+
path: /health
7676
port: 8443
7777
initialDelaySeconds: 30
7878
periodSeconds: 10
7979
readiness:
8080
httpGet:
81-
path: /readyz
81+
path: /health
8282
port: 8443
8383
initialDelaySeconds: 10
8484
periodSeconds: 5

0 commit comments

Comments
 (0)