blob: 43c9428e92e8e5d955c16151e4ec7b371af4a466 [file] [log] [blame]
package kmod
import (
"errors"
"os"
"testing"
)
func TestManagerIntegration(t *testing.T) {
if os.Getenv("IN_KTEST") != "true" {
t.Skip("Not in ktest")
}
mgr, err := NewManagerFromPath("/lib/modules")
if err != nil {
t.Fatal(err)
}
t.Run("LoadExampleModule", func(t *testing.T) {
if err := mgr.LoadModule("r8169"); err != nil {
t.Error(err)
}
if _, err := os.Stat("/sys/module/r8169"); err != nil {
t.Error("module load returned success, but module not in sysfs")
}
})
t.Run("LoadNonexistentModule", func(t *testing.T) {
err := mgr.LoadModule("definitelynomodule")
var notFoundErr *ErrNotFound
if !errors.As(err, &notFoundErr) {
t.Errorf("expected ErrNotFound, got %v", err)
}
})
t.Run("LoadModuleTwice", func(t *testing.T) {
if err := mgr.LoadModule("r8169"); err != nil {
t.Error(err)
}
})
// TODO(lorenz): Should test loading dependencies here, but we currently
// have none in the kernel config and I'm not about to build another kernel
// just for this.
t.Run("LoadDeviceModule", func(t *testing.T) {
if err := mgr.LoadModulesForDevice("pci:v00008086d00001591sv00001043sd000085F0bc02sc00i00"); err != nil {
t.Error(err)
}
if _, err := os.Stat("/sys/module/ice"); err != nil {
t.Error("module load returned success, but module not in sysfs")
}
})
}