diff --git a/fs/hugetlb_test.go b/fs/hugetlb_test.go index c37e3ec..b46c533 100644 --- a/fs/hugetlb_test.go +++ b/fs/hugetlb_test.go @@ -28,6 +28,8 @@ const ( ) func TestHugetlbSetHugetlb(t *testing.T) { + skipNoHugePages(t) + path := tempDir(t, "hugetlb") const ( @@ -70,6 +72,8 @@ func TestHugetlbSetHugetlb(t *testing.T) { } func TestHugetlbStats(t *testing.T) { + skipNoHugePages(t) + path := tempDir(t, "hugetlb") for _, pageSize := range cgroups.HugePageSizes() { writeFileContents(t, path, map[string]string{ @@ -92,6 +96,8 @@ func TestHugetlbStats(t *testing.T) { } func TestHugetlbRStatsRsvd(t *testing.T) { + skipNoHugePages(t) + path := tempDir(t, "hugetlb") for _, pageSize := range cgroups.HugePageSizes() { writeFileContents(t, path, map[string]string{ @@ -114,10 +120,14 @@ func TestHugetlbRStatsRsvd(t *testing.T) { } func TestHugetlbStatsNoUsageFile(t *testing.T) { + skipNoHugePages(t) + path := tempDir(t, "hugetlb") - writeFileContents(t, path, map[string]string{ - maxUsage: hugetlbMaxUsageContents, - }) + for _, pageSize := range cgroups.HugePageSizes() { + writeFileContents(t, path, map[string]string{ + fmt.Sprintf(maxUsage, pageSize): hugetlbMaxUsageContents, + }) + } hugetlb := &HugetlbGroup{} actualStats := *cgroups.NewStats() @@ -128,6 +138,8 @@ func TestHugetlbStatsNoUsageFile(t *testing.T) { } func TestHugetlbStatsNoMaxUsageFile(t *testing.T) { + skipNoHugePages(t) + path := tempDir(t, "hugetlb") for _, pageSize := range cgroups.HugePageSizes() { writeFileContents(t, path, map[string]string{ @@ -144,11 +156,13 @@ func TestHugetlbStatsNoMaxUsageFile(t *testing.T) { } func TestHugetlbStatsBadUsageFile(t *testing.T) { + skipNoHugePages(t) + path := tempDir(t, "hugetlb") for _, pageSize := range cgroups.HugePageSizes() { writeFileContents(t, path, map[string]string{ - fmt.Sprintf(usage, pageSize): "bad", - maxUsage: hugetlbMaxUsageContents, + fmt.Sprintf(usage, pageSize): "bad", + fmt.Sprintf(maxUsage, pageSize): hugetlbMaxUsageContents, }) } @@ -161,11 +175,15 @@ func TestHugetlbStatsBadUsageFile(t *testing.T) { } func TestHugetlbStatsBadMaxUsageFile(t *testing.T) { + skipNoHugePages(t) + path := tempDir(t, "hugetlb") - writeFileContents(t, path, map[string]string{ - usage: hugetlbUsageContents, - maxUsage: "bad", - }) + for _, pageSize := range cgroups.HugePageSizes() { + writeFileContents(t, path, map[string]string{ + fmt.Sprintf(usage, pageSize): hugetlbUsageContents, + fmt.Sprintf(maxUsage, pageSize): "bad", + }) + } hugetlb := &HugetlbGroup{} actualStats := *cgroups.NewStats() @@ -174,3 +192,12 @@ func TestHugetlbStatsBadMaxUsageFile(t *testing.T) { t.Fatal("Expected failure") } } + +// skipNoHugePages skips the test if the system has no huge page sizes +// available, as in this case [HugetlbGroup] methods are no-ops. +func skipNoHugePages(t *testing.T) { + t.Helper() + if len(cgroups.HugePageSizes()) == 0 { + t.Skip("no huge page sizes available") + } +}