1
// SPDX-License-Identifier: Apache-2.0
2
// Copyright Authors of Tetragon
12
ec "github.com/cilium/tetragon/api/v1/tetragon/codegen/eventchecker"
13
"github.com/cilium/tetragon/pkg/jsonchecker"
14
"github.com/cilium/tetragon/pkg/observer/observertesthelper"
15
_ "github.com/cilium/tetragon/pkg/sensors/exec"
16
tus "github.com/cilium/tetragon/pkg/testutils/sensors"
17
"github.com/stretchr/testify/assert"
18
"golang.org/x/sys/unix"
21
// This bpf_lseek is a simple BPF program used for tests
23
func TestMain(m *testing.M) {
24
ec := tus.TestSensorsRun(m, "SensorTest")
28
func TestSensorLseekLoad(t *testing.T) {
29
if _, err := os.Stat("/sys/kernel/debug/tracing/events/syscalls"); os.IsNotExist(err) {
30
t.Skip("cannot use syscall tracepoints (consider enabling CONFIG_FTRACE_SYSCALLS)")
33
var doneWG, readyWG sync.WaitGroup
36
ctx, cancel := context.WithTimeout(context.Background(), tus.Conf().CmdWaitTime)
39
checker := ec.NewUnorderedEventChecker(
40
ec.NewTestChecker(""),
43
obs, err := observertesthelper.GetDefaultObserver(t, ctx, tus.Conf().TetragonLib)
45
t.Fatalf("GetDefaultObserver error: %s", err)
47
sensor := GetTestSensor()
48
tus.LoadSensor(t, sensor)
49
observertesthelper.LoopEvents(ctx, t, &doneWG, &readyWG, obs)
51
unix.Seek(BogusFd, 0, BogusWhenceVal)
53
err = jsonchecker.JsonTestCheck(t, checker)
54
assert.NoError(t, err)
57
func TestSensorLseekEnable(t *testing.T) {
58
if _, err := os.Stat("/sys/kernel/debug/tracing/events/syscalls"); os.IsNotExist(err) {
59
t.Skip("cannot use syscall tracepoints (consider enabling CONFIG_FTRACE_SYSCALLS)")
62
var doneWG, readyWG sync.WaitGroup
65
ctx, cancel := context.WithTimeout(context.Background(), tus.Conf().CmdWaitTime)
68
checker := ec.NewUnorderedEventChecker(
69
ec.NewTestChecker(""),
72
obs, err := observertesthelper.GetDefaultObserver(t, ctx, tus.Conf().TetragonLib)
74
t.Fatalf("GetDefaultObserver error: %s", err)
77
sensor := GetTestSensor()
79
smanager := tus.GetTestSensorManager(ctx, t)
80
smanager.AddAndEnableSensor(ctx, t, sensor, sensor.Name)
82
observertesthelper.LoopEvents(ctx, t, &doneWG, &readyWG, obs)
84
unix.Seek(BogusFd, 0, BogusWhenceVal)
86
err = jsonchecker.JsonTestCheck(t, checker)
87
assert.NoError(t, err)