fixup: check for swap accounting

Signed-off-by: Danielle Lancashire <dani@builds.terrible.systems>
This commit is contained in:
Danielle Lancashire 2021-12-03 16:04:01 +01:00
parent c5b0a18b6e
commit 533dd1c0ee

View File

@ -22,6 +22,7 @@ package integration
import (
"bytes"
"io/ioutil"
"os"
"strings"
"testing"
@ -123,13 +124,28 @@ func isSwapLikelyEnabled() bool {
swapData = bytes.TrimSpace(swapData) // extra trailing \n
swapLines := strings.Split(string(swapData), "\n")
// If there is more than one line (table headers) in /proc/swaps, swap is enabled
return len(swapLines) > 1
if len(swapLines) <= 1 {
return false
}
// Linux Kernel's prior to 5.8 can disable swap accounting and is disabled
// by default on Ubuntu. Most systems that run with cgroupsv2 enabled likely
// have swap accounting enabled, here we assume that is true when running with
// cgroupsv2 and check on cgroupsv1.
if cgroups.Mode() == cgroups.Unified {
return true
}
_, err = os.Stat("/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes")
// Assume any error means this test can't run for now.
return err == nil
}
func TestUpdateContainerResources_MemorySwap(t *testing.T) {
if !isSwapLikelyEnabled() {
t.Skipf("Swap is not enabled, or /proc/swaps is not readable. Swap is required for this test")
t.Skipf("Swap or swap accounting are not enabled. Swap is required for this test")
return
}