Skip to content

Commit 962019d

Browse files
committed
ci: fix TestNilResources when systemd not available
Split the test into two -- for fs and systemd cgroup managers, and only run the second one if systemd is available. Prevents the following failure during `make unittest`: > === RUN TestNilResources > manager_test.go:27: systemd not running on this host, cannot use systemd cgroups manager > --- FAIL: TestNilResources (0.22s) Signed-off-by: Kir Kolyshkin <[email protected]>
1 parent cfc801b commit 962019d

File tree

1 file changed

+38
-27
lines changed

1 file changed

+38
-27
lines changed

libcontainer/cgroups/manager/manager_test.go

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,53 @@ package manager
33
import (
44
"testing"
55

6+
"github.com/opencontainers/runc/libcontainer/cgroups/systemd"
67
"github.com/opencontainers/runc/libcontainer/configs"
78
)
89

910
// TestNilResources checks that a cgroup manager do not panic when
1011
// config.Resources is nil. While it does not make sense to use a
1112
// manager with no resources, it should not result in a panic.
1213
//
13-
// This tests either v1 or v2 managers (both fs and systemd),
14-
// depending on what cgroup version is available on the host.
14+
// This tests either v1 or v2 fs cgroup manager, depending on which
15+
// cgroup version is available.
1516
func TestNilResources(t *testing.T) {
16-
for _, sd := range []bool{false, true} {
17-
cg := &configs.Cgroup{} // .Resources is nil
18-
cg.Systemd = sd
19-
mgr, err := New(cg)
17+
testNilResources(t, false)
18+
}
19+
20+
// TestNilResourcesSystemd is the same as TestNilResources,
21+
// only checking the systemd cgroup manager.
22+
func TestNilResourcesSystemd(t *testing.T) {
23+
if !systemd.IsRunningSystemd() {
24+
t.Skip("requires systemd")
25+
}
26+
testNilResources(t, true)
27+
}
28+
29+
func testNilResources(t *testing.T, systemd bool) {
30+
cg := &configs.Cgroup{} // .Resources is nil
31+
cg.Systemd = systemd
32+
mgr, err := New(cg)
33+
if err != nil {
34+
// Some managers require non-nil Resources during
35+
// instantiation -- provide and retry. In such case
36+
// we're mostly testing Set(nil) below.
37+
cg.Resources = &configs.Resources{}
38+
mgr, err = New(cg)
2039
if err != nil {
21-
// Some managers require non-nil Resources during
22-
// instantiation -- provide and retry. In such case
23-
// we're mostly testing Set(nil) below.
24-
cg.Resources = &configs.Resources{}
25-
mgr, err = New(cg)
26-
if err != nil {
27-
t.Error(err)
28-
continue
29-
}
40+
t.Fatal(err)
3041
}
31-
_ = mgr.Apply(-1)
32-
_ = mgr.Set(nil)
33-
_ = mgr.Freeze(configs.Thawed)
34-
_ = mgr.Exists()
35-
_, _ = mgr.GetAllPids()
36-
_, _ = mgr.GetCgroups()
37-
_, _ = mgr.GetFreezerState()
38-
_ = mgr.Path("")
39-
_ = mgr.GetPaths()
40-
_, _ = mgr.GetStats()
41-
_, _ = mgr.OOMKillCount()
42-
_ = mgr.Destroy()
4342
}
43+
_ = mgr.Apply(-1)
44+
_ = mgr.Set(nil)
45+
_ = mgr.Freeze(configs.Thawed)
46+
_ = mgr.Exists()
47+
_, _ = mgr.GetAllPids()
48+
_, _ = mgr.GetCgroups()
49+
_, _ = mgr.GetFreezerState()
50+
_ = mgr.Path("")
51+
_ = mgr.GetPaths()
52+
_, _ = mgr.GetStats()
53+
_, _ = mgr.OOMKillCount()
54+
_ = mgr.Destroy()
4455
}

0 commit comments

Comments
 (0)