Skip to content

Commit 70b339d

Browse files
committed
common: add GetSpec tests
Signed-off-by: Giuseppe Scrivano <[email protected]>
1 parent 5bffc55 commit 70b339d

22 files changed

+146
-0
lines changed

container/common/helpers_test.go

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,15 @@
1515
package common
1616

1717
import (
18+
"errors"
19+
"math"
20+
"os"
21+
"path/filepath"
1822
"testing"
23+
24+
info "github.com/google/cadvisor/info/v1"
25+
v2 "github.com/google/cadvisor/info/v2"
26+
"github.com/stretchr/testify/assert"
1927
)
2028

2129
func BenchmarkListDirectories(b *testing.B) {
@@ -72,3 +80,120 @@ func TestParseUint64String(t *testing.T) {
7280
t.Fatalf("parseUint64String(\"18446744073709551615\") != 18446744073709551615")
7381
}
7482
}
83+
84+
type mockInfoProvider struct {
85+
options v2.RequestOptions
86+
}
87+
88+
func (m *mockInfoProvider) GetRequestedContainersInfo(containerName string, options v2.RequestOptions) (map[string]*info.ContainerInfo, error) {
89+
m.options = options
90+
return map[string]*info.ContainerInfo{}, nil
91+
}
92+
93+
func (m *mockInfoProvider) GetVersionInfo() (*info.VersionInfo, error) {
94+
return nil, errors.New("not supported")
95+
}
96+
97+
func (m *mockInfoProvider) GetMachineInfo() (*info.MachineInfo, error) {
98+
return &info.MachineInfo{
99+
NumCores: 7,
100+
}, nil
101+
}
102+
103+
func TestGetSpecCgroupV1(t *testing.T) {
104+
root, err := os.Getwd()
105+
if err != nil {
106+
t.Fatalf("getwd: %s", err)
107+
}
108+
109+
cgroupPaths := map[string]string{
110+
"memory": filepath.Join(root, "test_resources/cgroup_v1/test1/memory"),
111+
"cpu": filepath.Join(root, "test_resources/cgroup_v1/test1/cpu"),
112+
"cpuset": filepath.Join(root, "test_resources/cgroup_v1/test1/cpuset"),
113+
"pids": filepath.Join(root, "test_resources/cgroup_v1/test1/pids"),
114+
}
115+
116+
spec, err := getSpecInternal(cgroupPaths, &mockInfoProvider{}, false, false, false)
117+
assert.Nil(t, err)
118+
119+
assert.True(t, spec.HasMemory)
120+
assert.EqualValues(t, spec.Memory.Limit, 123456789)
121+
assert.EqualValues(t, spec.Memory.SwapLimit, 13579)
122+
assert.EqualValues(t, spec.Memory.Reservation, 24680)
123+
124+
assert.True(t, spec.HasCpu)
125+
assert.EqualValues(t, spec.Cpu.Limit, 1025)
126+
assert.EqualValues(t, spec.Cpu.Period, 100010)
127+
assert.EqualValues(t, spec.Cpu.Quota, 20000)
128+
129+
assert.EqualValues(t, spec.Cpu.Mask, "0-5")
130+
131+
assert.True(t, spec.HasProcesses)
132+
assert.EqualValues(t, spec.Processes.Limit, 1027)
133+
134+
assert.False(t, spec.HasHugetlb)
135+
assert.False(t, spec.HasDiskIo)
136+
}
137+
138+
func TestGetSpecCgroupV2(t *testing.T) {
139+
root, err := os.Getwd()
140+
if err != nil {
141+
t.Fatalf("getwd: %s", err)
142+
}
143+
144+
cgroupPaths := map[string]string{
145+
"memory": filepath.Join(root, "test_resources/cgroup_v2/test1"),
146+
"cpu": filepath.Join(root, "test_resources/cgroup_v2/test1"),
147+
"cpuset": filepath.Join(root, "test_resources/cgroup_v2/test1"),
148+
"pids": filepath.Join(root, "test_resources/cgroup_v2/test1"),
149+
}
150+
151+
spec, err := getSpecInternal(cgroupPaths, &mockInfoProvider{}, false, false, true)
152+
assert.Nil(t, err)
153+
154+
assert.True(t, spec.HasMemory)
155+
assert.EqualValues(t, spec.Memory.Limit, 123456789)
156+
assert.EqualValues(t, spec.Memory.SwapLimit, 13579)
157+
assert.EqualValues(t, spec.Memory.Reservation, 24680)
158+
159+
assert.True(t, spec.HasCpu)
160+
assert.EqualValues(t, spec.Cpu.Limit, 1286)
161+
assert.EqualValues(t, spec.Cpu.Period, 100010)
162+
assert.EqualValues(t, spec.Cpu.Quota, 20000)
163+
164+
assert.EqualValues(t, spec.Cpu.Mask, "0-5")
165+
166+
assert.True(t, spec.HasProcesses)
167+
assert.EqualValues(t, spec.Processes.Limit, 1027)
168+
169+
assert.False(t, spec.HasHugetlb)
170+
assert.False(t, spec.HasDiskIo)
171+
}
172+
173+
func TestGetSpecCgroupV2Max(t *testing.T) {
174+
root, err := os.Getwd()
175+
assert.Nil(t, err)
176+
177+
cgroupPaths := map[string]string{
178+
"memory": filepath.Join(root, "test_resources/cgroup_v2/test2"),
179+
"cpu": filepath.Join(root, "test_resources/cgroup_v2/test2"),
180+
"pids": filepath.Join(root, "test_resources/cgroup_v2/test2"),
181+
}
182+
183+
spec, err := getSpecInternal(cgroupPaths, &mockInfoProvider{}, false, false, true)
184+
assert.Nil(t, err)
185+
186+
max := uint64(math.MaxUint64)
187+
188+
assert.True(t, spec.HasMemory)
189+
assert.EqualValues(t, spec.Memory.Limit, max)
190+
assert.EqualValues(t, spec.Memory.SwapLimit, max)
191+
assert.EqualValues(t, spec.Memory.Reservation, max)
192+
193+
assert.True(t, spec.HasCpu)
194+
assert.EqualValues(t, spec.Cpu.Limit, 1286)
195+
assert.EqualValues(t, spec.Cpu.Period, 100010)
196+
assert.EqualValues(t, spec.Cpu.Quota, 0)
197+
198+
assert.EqualValues(t, spec.Processes.Limit, max)
199+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
100010
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
20000
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1025
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0-5
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
123456789
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
13579
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
24680
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1027
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
20000 100010

0 commit comments

Comments
 (0)