e071084ebe
govulncheck / govulncheck (push) Waiting to run
Harness (E2E) / Harnesses (mock LLM) (push) Waiting to run
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Run Tests / Unit Tests (push) Waiting to run
Run Tests / Etcd Integration Tests (push) Waiting to run
88 lines
2.5 KiB
Go
88 lines
2.5 KiB
Go
package kubernetes
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestCRDManifestsAreStructural(t *testing.T) {
|
|
for _, kind := range []Kind{KindAgent, KindService, KindFlow} {
|
|
manifest := CRDManifests[kind]
|
|
if manifest == "" {
|
|
t.Fatalf("missing manifest for %s", kind)
|
|
}
|
|
checks := []string{
|
|
"apiVersion: apiextensions.k8s.io/v1",
|
|
"kind: CustomResourceDefinition",
|
|
"group: micro.dev",
|
|
"kind: " + string(kind),
|
|
"name: v1alpha1",
|
|
"served: true",
|
|
"storage: true",
|
|
"openAPIV3Schema:",
|
|
"type: object",
|
|
"required: [image]",
|
|
}
|
|
for _, check := range checks {
|
|
if !strings.Contains(manifest, check) {
|
|
t.Fatalf("%s manifest missing %q:\n%s", kind, check, manifest)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestMapDeploymentForAgent(t *testing.T) {
|
|
deployment, err := MapDeployment(Resource{
|
|
Kind: KindAgent,
|
|
Name: "support-agent",
|
|
Namespace: "agents",
|
|
Spec: WorkloadSpec{
|
|
Image: "ghcr.io/acme/support-agent:v1",
|
|
Replicas: 2,
|
|
Registry: "kubernetes",
|
|
Environment: map[string]string{
|
|
"MODEL": "gpt-5.5",
|
|
},
|
|
},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("MapDeployment returned error: %v", err)
|
|
}
|
|
if deployment.Name != "support-agent" || deployment.Namespace != "agents" {
|
|
t.Fatalf("unexpected identity: %+v", deployment)
|
|
}
|
|
if deployment.Replicas != 2 {
|
|
t.Fatalf("replicas = %d, want 2", deployment.Replicas)
|
|
}
|
|
if got := deployment.Labels["micro.dev/kind"]; got != "agent" {
|
|
t.Fatalf("micro.dev/kind label = %q, want agent", got)
|
|
}
|
|
container := deployment.Pod.Container
|
|
if container.Image != "ghcr.io/acme/support-agent:v1" {
|
|
t.Fatalf("image = %q", container.Image)
|
|
}
|
|
if got := container.Environment["MICRO_REGISTRY"]; got != "kubernetes" {
|
|
t.Fatalf("MICRO_REGISTRY = %q, want kubernetes", got)
|
|
}
|
|
if got := container.Environment["MODEL"]; got != "gpt-5.5" {
|
|
t.Fatalf("MODEL = %q, want gpt-5.5", got)
|
|
}
|
|
}
|
|
|
|
func TestMapDeploymentDefaultsAndValidation(t *testing.T) {
|
|
deployment, err := MapDeployment(Resource{Kind: KindService, Name: "api", Spec: WorkloadSpec{Image: "api:latest"}})
|
|
if err != nil {
|
|
t.Fatalf("MapDeployment returned error: %v", err)
|
|
}
|
|
if deployment.Namespace != "default" || deployment.Replicas != 1 {
|
|
t.Fatalf("defaults = namespace %q replicas %d", deployment.Namespace, deployment.Replicas)
|
|
}
|
|
|
|
if _, err := MapDeployment(Resource{Kind: KindFlow, Name: "ingest"}); err == nil {
|
|
t.Fatal("MapDeployment without image succeeded")
|
|
}
|
|
if _, err := MapDeployment(Resource{Kind: "Job", Name: "job", Spec: WorkloadSpec{Image: "job:latest"}}); err == nil {
|
|
t.Fatal("MapDeployment with unsupported kind succeeded")
|
|
}
|
|
}
|