Skip to content

Commit 3d20fa9

Browse files
committed
fix TestSetOOMScoreBoundaries
(this was introduced in 4424011) Setting the oom-score-adj to -1000 is only possible if the parent process either has no score set, or if the score is set to -1000. However, the current implementation of GetOOMScoreAdj conflates situations where either _no_ oom-score is set, _or_ oom-score is set, but set to 0. In the latter case, the test would fail: --- FAIL: TestSetOOMScoreBoundaries (0.01s) oom_linux_test.go:79: assertion failed: 0 (adjustment int) != -1000 (OOMScoreAdjMin int) FAIL To prevent failures in this situation, skip that part of the test in the above situation. Also update the description of GetOOMScoreAdj to clarify its behavior. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
1 parent 21ebeef commit 3d20fa9

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

sys/oom_linux.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ func SetOOMScore(pid, score int) error {
6565
return nil
6666
}
6767

68-
// GetOOMScoreAdj gets the oom score for a process
68+
// GetOOMScoreAdj gets the oom score for a process. It returns 0 (zero) if either
69+
// no oom score is set, or a sore is set to 0.
6970
func GetOOMScoreAdj(pid int) (int, error) {
7071
path := fmt.Sprintf("/proc/%d/oom_score_adj", pid)
7172
data, err := ioutil.ReadFile(path)

sys/oom_linux_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,11 @@ func TestSetOOMScoreBoundaries(t *testing.T) {
7171

7272
score, err := GetOOMScoreAdj(os.Getpid())
7373
assert.NilError(t, err)
74-
if score == 0 || score == OOMScoreAdjMin {
75-
// we won't be able to set the score lower than the parent process,
76-
// so only test if parent process does not have a oom-score-adj
74+
if score == OOMScoreAdjMin {
75+
// We won't be able to set the score lower than the parent process. This
76+
// could also be tested if the parent process does not have a oom-score-adj
77+
// set, but GetOOMScoreAdj does not distinguish between "not set" and
78+
// "score is set, but zero".
7779
_, adjustment, err = adjustOom(OOMScoreAdjMin)
7880
assert.NilError(t, err)
7981
assert.Check(t, is.Equal(adjustment, OOMScoreAdjMin))

0 commit comments

Comments
 (0)