Skip to content
This repository was archived by the owner on Jun 28, 2024. It is now read-only.

Commit 028bf1c

Browse files
authored
Merge pull request #987 from devimc/topic/ulimits
integration/docker: Add ulimit tests
2 parents ffa5ce0 + 7b98baf commit 028bf1c

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

integration/docker/ulimit_test.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// Copyright (c) 2018 Intel Corporation
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package docker
6+
7+
import (
8+
"fmt"
9+
"runtime"
10+
"strings"
11+
12+
. "github.com/onsi/ginkgo"
13+
. "github.com/onsi/ginkgo/extensions/table"
14+
. "github.com/onsi/gomega"
15+
)
16+
17+
func withUlimit(ulimit string, soft, hard int, option string) TableEntry {
18+
return Entry(fmt.Sprintf("With ulimit %s=%d:%d",
19+
ulimit, soft, hard), ulimit, soft, hard, option)
20+
}
21+
22+
var _ = Describe("ulimits", func() {
23+
var (
24+
args []string
25+
id string
26+
stdout string
27+
exitCode int
28+
)
29+
30+
BeforeEach(func() {
31+
id = randomDockerName()
32+
})
33+
34+
AfterEach(func() {
35+
Expect(ExistDockerContainer(id)).NotTo(BeTrue())
36+
})
37+
38+
DescribeTable("check ulimits",
39+
func(ulimit string, soft, hard int, option string) {
40+
// ARM doesn't support data rlimit, Issue https://github.com/kata-containers/tests/issues/990
41+
if ulimit == "data" && runtime.GOARCH == "arm64" {
42+
Skip("Issue: https://github.com/kata-containers/tests/issues/990")
43+
}
44+
45+
ulimitStr := fmt.Sprintf("%s=%d:%d", ulimit, soft, hard)
46+
47+
switch ulimit {
48+
// these ulimits are in 1024-byte increments
49+
case "fsize", "data", "stack", "core", "rss", "memlock":
50+
ulimitStr = fmt.Sprintf("%s=%d:%d", ulimit, soft*1024, hard*1024)
51+
}
52+
53+
args = []string{"--name", id, "--rm", "--ulimit", ulimitStr, CentosImage,
54+
"bash", "-c", fmt.Sprintf("echo $(ulimit %s -S):$(ulimit %s -H)", option, option)}
55+
stdout, _, exitCode = dockerRun(args...)
56+
Expect(exitCode).To(Equal(0))
57+
Expect(strings.Trim(stdout, "\n\t ")).To(Equal(fmt.Sprintf("%d:%d", soft, hard)))
58+
},
59+
withUlimit("cpu", 1, 2, "-t"),
60+
withUlimit("fsize", 66, 82, "-f"),
61+
withUlimit("data", 1024000, 2048000, "-d"),
62+
withUlimit("stack", 45, 78, "-s"),
63+
withUlimit("core", 48, 95, "-c"),
64+
withUlimit("rss", 56, 83, "-m"),
65+
withUlimit("nproc", 3, 5, "-u"),
66+
withUlimit("nofile", 1024, 1024, "-n"),
67+
withUlimit("memlock", 68, 77, "-l"),
68+
withUlimit("locks", 1024, 2048, "-x"),
69+
withUlimit("sigpending", 1024, 2048, "-i"),
70+
withUlimit("msgqueue", 1024, 2048, "-q"),
71+
withUlimit("nice", 50, 70, "-e"),
72+
withUlimit("rtprio", 100, 120, "-r"),
73+
)
74+
})

0 commit comments

Comments
 (0)