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  }