From ab9fdf5976f0d724eedfc4829735f67a688c7423 Mon Sep 17 00:00:00 2001 From: Mahe Tardy Date: Fri, 21 Feb 2025 20:12:50 +0100 Subject: [PATCH] pkg/sensors: test long cwd in process exec Add a checker for a long cwd. Maybe this should be split into two different tests but in a way it tests the same thing, reuse the same directory structure, and we end up not having to restart tetragon twice. Signed-off-by: Mahe Tardy --- pkg/sensors/tracing/kprobe_test.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/pkg/sensors/tracing/kprobe_test.go b/pkg/sensors/tracing/kprobe_test.go index 765873bcc48..533ef492bf1 100644 --- a/pkg/sensors/tracing/kprobe_test.go +++ b/pkg/sensors/tracing/kprobe_test.go @@ -7214,7 +7214,9 @@ spec: assert.NoError(t, err) } -func TestKprobeMatchArgsLongFile(t *testing.T) { +// TestLongPath could be split into a test checking for long args from kprobe +// events and a test checking for long cwd +func TestLongPath(t *testing.T) { var doneWG, readyWG sync.WaitGroup defer doneWG.Wait() @@ -7249,12 +7251,15 @@ spec: createCrdFile(t, fdinstallHook) - longFileArgChecker := ec.NewProcessKprobeChecker("longFile"). + kprobeLongFileArgChecker := ec.NewProcessKprobeChecker("longFile"). WithFunctionName(sm.Full("fd_install")). WithArgs(ec.NewKprobeArgumentListMatcher().WithValues( ec.NewKprobeArgumentChecker().WithFileArg(ec.NewKprobeFileChecker().WithPath(sm.Full(longPathWithFile))), )) + processLongCWDChecker := ec.NewProcessExecChecker("longCWD"). + WithProcess(ec.NewProcessChecker().WithBinary(sm.Suffix("ls")).WithCwd(sm.Full(longPath))) + obs, err := observertesthelper.GetDefaultObserverWithFile(t, ctx, testConfigFile, tus.Conf().TetragonLib, observertesthelper.WithMyPid()) if err != nil { t.Fatalf("GetDefaultObserverWithFile error: %s", err) @@ -7267,7 +7272,21 @@ spec: require.NoError(t, err) file.Close() - checker := ec.NewUnorderedEventChecker(longFileArgChecker) + // generate an event by exec with cwd + cwd, err := os.Getwd() + require.NoError(t, err) + + err = os.Chdir(longPath) + require.NoError(t, err) + + cmd := exec.Command("ls") + err = cmd.Run() + require.NoError(t, err) + + err = os.Chdir(cwd) + require.NoError(t, err) + + checker := ec.NewUnorderedEventChecker(kprobeLongFileArgChecker, processLongCWDChecker) err = jsonchecker.JsonTestCheck(t, checker) assert.NoError(t, err) }