Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 36 additions & 9 deletions fs/hugetlb_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ const (
)

func TestHugetlbSetHugetlb(t *testing.T) {
skipNoHugePages(t)

path := tempDir(t, "hugetlb")

const (
Expand Down Expand Up @@ -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{
Expand All @@ -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{
Expand All @@ -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()
Expand All @@ -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{
Expand All @@ -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,
})
}

Expand All @@ -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()
Expand All @@ -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")
}
}
Loading