Skip to content

Commit 884f61f

Browse files
committed
Add unit tests for huge pages detection
Signed-off-by: Marcin Franczyk <[email protected]>
1 parent abbcf94 commit 884f61f

File tree

3 files changed

+57
-1
lines changed

3 files changed

+57
-1
lines changed

source/memory/memory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ func getHugePageSize(basePath, dirName string, reg *regexp.Regexp) (string, erro
237237
totalPagesFile := filepath.Join(basePath, dirName, "nr_hugepages")
238238
totalPagesRaw, err := os.ReadFile(totalPagesFile)
239239
if err != nil {
240-
return "", fmt.Errorf("unable to read total number of huge pages from the file name: %s", totalPagesFile)
240+
return "", fmt.Errorf("unable to read total number of huge pages from the file: %s", totalPagesFile)
241241
}
242242

243243
totalPages, err := strconv.Atoi(strings.TrimSpace(string(totalPagesRaw)))

source/memory/memory_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@ limitations under the License.
1717
package memory
1818

1919
import (
20+
"regexp"
2021
"testing"
2122

23+
. "github.com/smartystreets/goconvey/convey"
2224
"github.com/stretchr/testify/assert"
25+
26+
"sigs.k8s.io/node-feature-discovery/pkg/utils/hostpath"
2327
)
2428

2529
func TestMemorySource(t *testing.T) {
@@ -61,3 +65,54 @@ func TestGetNumberofLinesFromFile(t *testing.T) {
6165
assert.Equal(t, tc.expectedLines, actual, "lines should match")
6266
}
6367
}
68+
69+
func TestDetectHugePages(t *testing.T) {
70+
71+
Convey("With configured 1Gi huge pages size", t, func() {
72+
hostpath.SysfsDir = "testdata/hugepages"
73+
74+
expectedHugePages := map[string]string{
75+
"enabled": "true",
76+
"hugepages-1Gi": "true",
77+
}
78+
hugePages, err := detectHugePages()
79+
assert.Nil(t, err)
80+
assert.Equal(t, hugePages, expectedHugePages)
81+
})
82+
83+
Convey("With invalid directory structure", t, func() {
84+
hostpath.SysfsDir = "invalid-dir"
85+
86+
expectedHugePages := map[string]string{
87+
"enabled": "false",
88+
}
89+
hugePages, err := detectHugePages()
90+
assert.Nil(t, err)
91+
assert.Equal(t, hugePages, expectedHugePages)
92+
})
93+
94+
}
95+
96+
func TestGetHugePagesSize(t *testing.T) {
97+
98+
re := regexp.MustCompile(`hugepages-(\d+)`)
99+
100+
Convey("With configured total huge pages", t, func() {
101+
hugePage, err := getHugePageSize("testdata/hugepages/kernel/mm/hugepages", "hugepages-1048576kB", re)
102+
assert.Equal(t, "hugepages-1Gi", hugePage)
103+
assert.Nil(t, err)
104+
})
105+
106+
Convey("With not configured total huge pages", t, func() {
107+
hugePage, err := getHugePageSize("testdata/hugepages/kernel/mm/hugepages", "hugepages-2048kB", re)
108+
assert.Equal(t, "", hugePage)
109+
assert.NotNil(t, err)
110+
})
111+
112+
Convey("With invalid huge page directory", t, func() {
113+
hugePage, err := getHugePageSize("testdata/hugepages/kernel/mm/hugepages", "hugepages-invalid", re)
114+
assert.Equal(t, "", hugePage)
115+
assert.NotNil(t, err)
116+
})
117+
118+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2

0 commit comments

Comments
 (0)