From fdbc0637d3c15fedb4d19d458651ae93eb40f774 Mon Sep 17 00:00:00 2001 From: Akanksha Trehun Date: Sun, 20 Sep 2026 14:56:13 +0530 Subject: [PATCH] test: add coverage for plan Generate Generate combines runtimes and experiments into the trial plan that drives the whole harness run, but had no tests for the default versus other workload precedence, the unknown runtime error path, or trial ID slugification. Signed-off-by: Akanksha Trehun --- internal/plan/generate_test.go | 174 +++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 internal/plan/generate_test.go diff --git a/internal/plan/generate_test.go b/internal/plan/generate_test.go new file mode 100644 index 0000000..c4b1946 --- /dev/null +++ b/internal/plan/generate_test.go @@ -0,0 +1,174 @@ +package plan_test + +import ( + "strings" + "testing" + + "github.com/urunc-dev/evaluation_suite/internal/manifest" + "github.com/urunc-dev/evaluation_suite/internal/plan" +) + +func TestGenerateDefaultTrialPerRuntime(t *testing.T) { + m := &manifest.Manifest{ + Runtimes: []manifest.Runtime{ + {Name: "runc", Handler: "io.containerd.runc.v2"}, + {Name: "urunc", Handler: "io.containerd.urunc.v2"}, + }, + Experiments: map[string]manifest.Experiment{ + "lifecycle": { + Workloads: manifest.Workloads{ + Default: manifest.Workload{Image: "docker.io/library/nginx:latest"}, + }, + }, + }, + } + + p, err := plan.Generate(m) + if err != nil { + t.Fatalf("Generate() error = %v", err) + } + + if len(p.Trials) != 2 { + t.Fatalf("len(p.Trials) = %d; want 2", len(p.Trials)) + } + + if p.Trials[0].RuntimeName != "runc" || p.Trials[1].RuntimeName != "urunc" { + t.Fatalf("trials not sorted by runtime name: %+v", p.Trials) + } + + if p.Trials[0].ID != "lifecycle-default-runc" { + t.Fatalf("Trials[0].ID = %q; want %q", p.Trials[0].ID, "lifecycle-default-runc") + } +} + +func TestGenerateOtherWorkloadOverridesDefaultForItsRuntime(t *testing.T) { + m := &manifest.Manifest{ + Runtimes: []manifest.Runtime{ + {Name: "runc", Handler: "io.containerd.runc.v2"}, + {Name: "urunc", Handler: "io.containerd.urunc.v2"}, + }, + Experiments: map[string]manifest.Experiment{ + "lifecycle": { + Workloads: manifest.Workloads{ + Default: manifest.Workload{Image: "docker.io/library/nginx:latest"}, + Other: []manifest.Workload{ + {Image: "docker.io/library/redis:latest", Runtime: "urunc"}, + }, + }, + }, + }, + } + + p, err := plan.Generate(m) + if err != nil { + t.Fatalf("Generate() error = %v", err) + } + + if len(p.Trials) != 2 { + t.Fatalf("len(p.Trials) = %d; want 2, got %+v", len(p.Trials), p.Trials) + } + + var sawDefaultRunc, sawOtherUrunc bool + for _, trial := range p.Trials { + if trial.RuntimeName == "runc" && trial.WorkloadName == "default" { + sawDefaultRunc = true + } + if trial.RuntimeName == "urunc" && trial.WorkloadName == "other-0" { + sawOtherUrunc = true + if trial.Image != "docker.io/library/redis:latest" { + t.Fatalf("other-0 trial image = %q; want redis image", trial.Image) + } + } + if trial.RuntimeName == "urunc" && trial.WorkloadName == "default" { + t.Fatalf("urunc should not get a default trial, it is overridden by other[0]") + } + } + + if !sawDefaultRunc || !sawOtherUrunc { + t.Fatalf("missing expected trials: %+v", p.Trials) + } +} + +func TestGenerateOtherWorkloadWithoutRuntimeAppliesToAll(t *testing.T) { + m := &manifest.Manifest{ + Runtimes: []manifest.Runtime{ + {Name: "runc", Handler: "io.containerd.runc.v2"}, + {Name: "urunc", Handler: "io.containerd.urunc.v2"}, + }, + Experiments: map[string]manifest.Experiment{ + "lifecycle": { + Workloads: manifest.Workloads{ + Default: manifest.Workload{Image: "docker.io/library/nginx:latest"}, + Other: []manifest.Workload{ + {Image: "docker.io/library/redis:latest"}, + }, + }, + }, + }, + } + + p, err := plan.Generate(m) + if err != nil { + t.Fatalf("Generate() error = %v", err) + } + + if len(p.Trials) != 4 { + t.Fatalf("len(p.Trials) = %d; want 4 (2 default + 2 other), got %+v", len(p.Trials), p.Trials) + } +} + +func TestGenerateOtherWorkloadUnknownRuntimeErrors(t *testing.T) { + m := &manifest.Manifest{ + Runtimes: []manifest.Runtime{ + {Name: "runc", Handler: "io.containerd.runc.v2"}, + }, + Experiments: map[string]manifest.Experiment{ + "lifecycle": { + Workloads: manifest.Workloads{ + Default: manifest.Workload{Image: "docker.io/library/nginx:latest"}, + Other: []manifest.Workload{ + {Image: "docker.io/library/redis:latest", Runtime: "kata"}, + }, + }, + }, + }, + } + + _, err := plan.Generate(m) + if err == nil { + t.Fatal("Generate() error = nil; want error for unknown runtime reference") + } + + if !strings.Contains(err.Error(), `unknown runtime "kata"`) { + t.Fatalf("Generate() error = %v; want it to mention unknown runtime kata", err) + } +} + +func TestGenerateTrialIDIsSlugified(t *testing.T) { + m := &manifest.Manifest{ + Runtimes: []manifest.Runtime{ + {Name: "urunc", Handler: "io.containerd.urunc.v2"}, + }, + Experiments: map[string]manifest.Experiment{ + "HTTP Readiness!": { + Workloads: manifest.Workloads{ + Default: manifest.Workload{Image: "docker.io/library/nginx:latest"}, + }, + }, + }, + } + + p, err := plan.Generate(m) + if err != nil { + t.Fatalf("Generate() error = %v", err) + } + + if len(p.Trials) != 1 { + t.Fatalf("len(p.Trials) = %d; want 1", len(p.Trials)) + } + + want := "http-readiness-default-urunc" + if p.Trials[0].ID != want { + t.Fatalf("Trials[0].ID = %q; want %q", p.Trials[0].ID, want) + } +}