diff --git a/cmd/virtwork/main.go b/cmd/virtwork/main.go index 800c438..478a5ab 100644 --- a/cmd/virtwork/main.go +++ b/cmd/virtwork/main.go @@ -73,7 +73,7 @@ via systemd.`, } f := cmd.Flags() - f.StringSlice("workloads", workloads.AllWorkloadNames, "Workloads to deploy (comma-separated)") + f.StringSlice("workloads", workloads.AllWorkloadNames(), "Workloads to deploy (comma-separated)") f.Int("vm-count", 1, "Number of VMs per workload") f.Int("cpu-cores", 0, "CPU cores per VM") f.String("memory", "", "Memory per VM (e.g., 2Gi)") diff --git a/cmd/virtwork/main_test.go b/cmd/virtwork/main_test.go index 14f6ecc..f88b2c4 100644 --- a/cmd/virtwork/main_test.go +++ b/cmd/virtwork/main_test.go @@ -51,7 +51,7 @@ func newRootCmd() *cobra.Command { }, } rf := runCmd.Flags() - rf.StringSlice("workloads", workloads.AllWorkloadNames, "Workloads to deploy (comma-separated)") + rf.StringSlice("workloads", workloads.AllWorkloadNames(), "Workloads to deploy (comma-separated)") rf.Int("vm-count", 1, "Number of VMs per workload") rf.Int("cpu-cores", 0, "CPU cores per VM") rf.String("memory", "", "Memory per VM (e.g., 2Gi)") @@ -628,7 +628,7 @@ var _ = Describe("CLI end-to-end scenarios", func() { // Default run creates 8 VMs: cpu=1 + memory=1 + disk=1 + database=1 + network=2 + tps=2 registry := workloads.DefaultRegistry() totalVMs := 0 - for _, name := range workloads.AllWorkloadNames { + for _, name := range workloads.AllWorkloadNames() { cfg := config.WorkloadConfig{ Enabled: true, VMCount: 1, diff --git a/internal/workloads/registry.go b/internal/workloads/registry.go index 28933d9..a6a2cf8 100644 --- a/internal/workloads/registry.go +++ b/internal/workloads/registry.go @@ -53,8 +53,11 @@ type WorkloadFactory func(config.WorkloadConfig, *RegistryOpts) Workload // Registry maps workload names to their factory functions. type Registry map[string]WorkloadFactory -// AllWorkloadNames is a sorted list of all built-in workload names. -var AllWorkloadNames = []string{"cpu", "database", "disk", "memory", "network", "tps"} +// AllWorkloadNames returns a sorted list of all built-in workload names, +// derived from the default registry. +func AllWorkloadNames() []string { + return DefaultRegistry().List() +} // DefaultRegistry returns a Registry pre-populated with all built-in workloads. func DefaultRegistry() Registry { diff --git a/internal/workloads/registry_test.go b/internal/workloads/registry_test.go index a078be4..6eedda8 100644 --- a/internal/workloads/registry_test.go +++ b/internal/workloads/registry_test.go @@ -86,6 +86,7 @@ var _ = Describe("Registry", func() { Expect(err.Error()).To(ContainSubstring("disk")) Expect(err.Error()).To(ContainSubstring("memory")) Expect(err.Error()).To(ContainSubstring("network")) + Expect(err.Error()).To(ContainSubstring("tps")) }) It("should list all names sorted alphabetically", func() { @@ -168,7 +169,8 @@ var _ = Describe("Registry", func() { }) var _ = Describe("AllWorkloadNames", func() { - It("should contain all six workload names sorted", func() { - Expect(workloads.AllWorkloadNames).To(Equal([]string{"cpu", "database", "disk", "memory", "network", "tps"})) + It("should derive names from DefaultRegistry", func() { + // Verify that AllWorkloadNames() always matches DefaultRegistry().List() + Expect(workloads.AllWorkloadNames()).To(Equal(workloads.DefaultRegistry().List())) }) })