go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/kernel/modules_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package kernel 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 "go.mondoo.com/cnquery/providers/os/connection/mock" 12 ) 13 14 func TestLsmodParser(t *testing.T) { 15 mock, err := mock.New("./testdata/debian.toml", nil) 16 require.NoError(t, err) 17 18 f, err := mock.RunCommand("/sbin/lsmod") 19 require.NoError(t, err) 20 21 entries := ParseLsmod(f.Stdout) 22 assert.Equal(t, 40, len(entries)) 23 24 expected := &KernelModule{ 25 Name: "cryptd", 26 Size: "24576", 27 UsedBy: "3", 28 } 29 found := findModule(entries, "cryptd") 30 assert.Equal(t, expected, found) 31 } 32 33 func TestLinuxProcModulesParser(t *testing.T) { 34 mock, err := mock.New("./testdata/debian.toml", nil) 35 require.NoError(t, err) 36 37 f, err := mock.FileSystem().Open("/proc/modules") 38 require.NoError(t, err) 39 defer f.Close() 40 41 entries := ParseLinuxProcModules(f) 42 assert.Equal(t, 40, len(entries)) 43 44 expected := &KernelModule{ 45 Name: "cryptd", 46 Size: "24576", 47 UsedBy: "3", 48 } 49 found := findModule(entries, "cryptd") 50 assert.Equal(t, expected, found) 51 } 52 53 func TestKldstatParser(t *testing.T) { 54 mock, err := mock.New("./testdata/freebsd12.toml", nil) 55 require.NoError(t, err) 56 57 f, err := mock.RunCommand("kldstat") 58 require.NoError(t, err) 59 60 entries := ParseKldstat(f.Stdout) 61 assert.Equal(t, 4, len(entries)) 62 63 expected := &KernelModule{ 64 Name: "smbus.ko", 65 Size: "a30", 66 UsedBy: "1", 67 } 68 found := findModule(entries, "smbus.ko") 69 assert.Equal(t, expected, found) 70 } 71 72 func TestKextstatParser(t *testing.T) { 73 mock, err := mock.New("./testdata/osx.toml", nil) 74 require.NoError(t, err) 75 76 f, err := mock.RunCommand("kextstat") 77 require.NoError(t, err) 78 79 entries := ParseKextstat(f.Stdout) 80 assert.Equal(t, 33, len(entries)) 81 82 expected := &KernelModule{ 83 Name: "com.apple.kpi.mach", 84 Size: "0x62e0", 85 UsedBy: "144", 86 } 87 found := findModule(entries, "com.apple.kpi.mach") 88 assert.Equal(t, expected, found) 89 } 90 91 func findModule(modules []*KernelModule, name string) *KernelModule { 92 for i := range modules { 93 if modules[i].Name == name { 94 return modules[i] 95 } 96 } 97 return nil 98 }