diff --git a/cmd/virtwork/main.go b/cmd/virtwork/main.go index 420883b..3259bf1 100644 --- a/cmd/virtwork/main.go +++ b/cmd/virtwork/main.go @@ -319,7 +319,7 @@ func runE(cmd *cobra.Command, args []string) error { ) } - roles := []string{"server", "client"} + roles := multiVM.Roles() perRole := vmCount / len(roles) for _, role := range roles { userdata, err := multiVM.UserdataForRole(role, cfg.Namespace) diff --git a/internal/workloads/network.go b/internal/workloads/network.go index daf3fb7..aeac50f 100644 --- a/internal/workloads/network.go +++ b/internal/workloads/network.go @@ -70,6 +70,11 @@ func (w *NetworkWorkload) VMCount() int { return count * 2 } +// Roles returns the supported VM roles for this multi-VM workload. +func (w *NetworkWorkload) Roles() []string { + return []string{"server", "client"} +} + // RequiresService returns true — the client needs a ClusterIP Service to reach // the server by DNS. func (w *NetworkWorkload) RequiresService() bool { diff --git a/internal/workloads/network_test.go b/internal/workloads/network_test.go index 59181e2..d668faa 100644 --- a/internal/workloads/network_test.go +++ b/internal/workloads/network_test.go @@ -35,6 +35,11 @@ var _ = Describe("NetworkWorkload", func() { Expect(w.RequiresService()).To(BeTrue()) }) + It("should return server and client roles", func() { + roles := w.Roles() + Expect(roles).To(Equal([]string{"server", "client"})) + }) + It("should produce server userdata with iperf3 -s", func() { result, err := w.UserdataForRole("server", "virtwork") Expect(err).NotTo(HaveOccurred()) diff --git a/internal/workloads/tps.go b/internal/workloads/tps.go index 24562b7..4485916 100644 --- a/internal/workloads/tps.go +++ b/internal/workloads/tps.go @@ -86,6 +86,11 @@ func (w *TPSWorkload) VMCount() int { return count * 2 } +// Roles returns the supported VM roles for this multi-VM workload. +func (w *TPSWorkload) Roles() []string { + return []string{"server", "client"} +} + // RequiresService returns true — the client needs a ClusterIP Service to reach // the server by DNS. func (w *TPSWorkload) RequiresService() bool { diff --git a/internal/workloads/workload.go b/internal/workloads/workload.go index 78a0674..e9b1764 100644 --- a/internal/workloads/workload.go +++ b/internal/workloads/workload.go @@ -56,6 +56,7 @@ type Workload interface { // interface to call UserdataForRole() for each VM role. type MultiVMWorkload interface { Workload + Roles() []string UserdataForRole(role string, namespace string) (string, error) }