From 09db9a7c867c87ea4815b1b0e7722d8693b3e69d Mon Sep 17 00:00:00 2001 From: dawn Date: Mon, 03 Aug 2026 08:04:05 +0000 Subject: [PATCH] spindle/engines/microvm: make cgroups tests compile on non-linux Signed-off-by: dawn --- spindle/engines/microvm/cgroup.go | 2 ++ spindle/engines/microvm/cgroup_oom_test.go | 2 ++ spindle/engines/microvm/cgroup_other.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ spindle/engines/microvm/cgroup_resources_test.go | 20 ++++++++++++++++++++ spindle/engines/microvm/cgroup_test.go | 2 ++ spindle/engines/microvm/cid_test.go | 15 --------------- 6 file(s) changed, 72 insertion(s)(+), 15 deletion(s)(-) diff --git a/spindle/engines/microvm/cgroup.go b/spindle/engines/microvm/cgroup.go --- a/spindle/engines/microvm/cgroup.go +++ b/spindle/engines/microvm/cgroup.go @@ -1,3 +1,5 @@ +//go:build linux + package microvm import ( diff --git a/spindle/engines/microvm/cgroup_oom_test.go b/spindle/engines/microvm/cgroup_oom_test.go --- a/spindle/engines/microvm/cgroup_oom_test.go +++ b/spindle/engines/microvm/cgroup_oom_test.go @@ -1,3 +1,5 @@ +//go:build linux + package microvm import ( diff --git a/spindle/engines/microvm/cgroup_other.go b/spindle/engines/microvm/cgroup_other.go new file mode 100644 --- /dev/null +++ b/spindle/engines/microvm/cgroup_other.go @@ -0,0 +1,46 @@ +//go:build !linux + +package microvm + +import ( + "fmt" + "log/slog" +) + +type CgroupLimits struct { + Enabled bool + Parent *CgroupParent + Name string + MemoryMaxMiB int64 + SwapMaxMiB *int64 + PidsMax int64 + CPUQuotaPercent int64 + IOWeight uint64 +} + +type CgroupParent struct{} + +type CgroupHandle struct{} + +func initCgroupParent(string, int64, *slog.Logger) (*CgroupParent, error) { + return nil, fmt.Errorf("microVM cgroups are only supported on Linux") +} + +func prepareCgroup(limits CgroupLimits, _ *slog.Logger) (*CgroupHandle, error) { + if !limits.Enabled { + return nil, nil + } + return nil, fmt.Errorf("microVM cgroups are only supported on Linux") +} + +func (*CgroupHandle) AddProcess(int, *slog.Logger) error { + return nil +} + +func (*CgroupHandle) Close() error { + return nil +} + +func (*CgroupHandle) OOMKilled() bool { + return false +} diff --git a/spindle/engines/microvm/cgroup_resources_test.go b/spindle/engines/microvm/cgroup_resources_test.go new file mode 100644 --- /dev/null +++ b/spindle/engines/microvm/cgroup_resources_test.go @@ -0,0 +1,20 @@ +//go:build linux + +package microvm + +import "testing" + +func TestCgroupResourcesCPUQuota(t *testing.T) { + r := cgroupResources(CgroupLimits{CPUQuotaPercent: 200}) + if r.CPU == nil { + t.Fatal("cpu quota should produce a cpu controller config") + } + if got := string(r.CPU.Max); got != "200000 100000" { + t.Errorf("cpu.max = %q, want %q", got, "200000 100000") + } + + r = cgroupResources(CgroupLimits{}) + if r.CPU != nil { + t.Errorf("no quota should leave cpu unlimited, got %v", r.CPU) + } +} diff --git a/spindle/engines/microvm/cgroup_test.go b/spindle/engines/microvm/cgroup_test.go --- a/spindle/engines/microvm/cgroup_test.go +++ b/spindle/engines/microvm/cgroup_test.go @@ -1,3 +1,5 @@ +//go:build linux + package microvm import ( diff --git a/spindle/engines/microvm/cid_test.go b/spindle/engines/microvm/cid_test.go --- a/spindle/engines/microvm/cid_test.go +++ b/spindle/engines/microvm/cid_test.go @@ -28,18 +28,3 @@ if a != again { t.Errorf("key not deterministic: %q vs %q", a, again) } } - -func TestCgroupResourcesCPUQuota(t *testing.T) { - r := cgroupResources(CgroupLimits{CPUQuotaPercent: 200}) - if r.CPU == nil { - t.Fatal("cpu quota should produce a cpu controller config") - } - if got := string(r.CPU.Max); got != "200000 100000" { - t.Errorf("cpu.max = %q, want %q", got, "200000 100000") - } - - r = cgroupResources(CgroupLimits{}) - if r.CPU != nil { - t.Errorf("no quota should leave cpu unlimited, got %v", r.CPU) - } -} -- tangled.sh