summaryrefslogtreecommitdiff
path: root/internal/eventloop_process_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/eventloop_process_test.go')
-rw-r--r--internal/eventloop_process_test.go80
1 files changed, 80 insertions, 0 deletions
diff --git a/internal/eventloop_process_test.go b/internal/eventloop_process_test.go
new file mode 100644
index 0000000..9a06780
--- /dev/null
+++ b/internal/eventloop_process_test.go
@@ -0,0 +1,80 @@
+package internal
+
+import (
+ "testing"
+
+ "ior/internal/event"
+ "ior/internal/globalfilter"
+ "ior/internal/types"
+)
+
+func TestHandleExecExitSetsPathAndComm(t *testing.T) {
+ el := mustNewEventLoop(t, eventLoopConfig{})
+ enter := &types.ExecEvent{
+ EventType: types.ENTER_EXEC_EVENT,
+ TraceId: types.SYS_ENTER_EXECVEAT,
+ Time: 100,
+ Pid: 200,
+ Tid: 201,
+ Dirfd: -100,
+ Flags: 0,
+ }
+ copy(enter.Filename[:], "/definitely-missing-execveat")
+ copy(enter.Comm[:], "ioworkload")
+ exit := &types.RetEvent{
+ EventType: types.EXIT_RET_EVENT,
+ TraceId: types.SYS_EXIT_EXECVEAT,
+ Time: 200,
+ Ret: -2,
+ Pid: 200,
+ Tid: 201,
+ }
+ ep := &event.Pair{EnterEv: enter, ExitEv: exit}
+
+ if ok := el.handleExecExit(ep, enter); !ok {
+ t.Fatal("handleExecExit returned false")
+ }
+ if got := ep.File.Name(); got != "/definitely-missing-execveat" {
+ t.Fatalf("exec path = %q, want %q", got, "/definitely-missing-execveat")
+ }
+ if got := ep.Comm; got != "ioworkload" {
+ t.Fatalf("comm = %q, want %q", got, "ioworkload")
+ }
+}
+
+func TestHandleExecExitAppliesPairFilter(t *testing.T) {
+ el := mustNewEventLoop(t, eventLoopConfig{
+ filter: globalfilter.Filter{
+ Syscall: &globalfilter.StringFilter{Pattern: "openat"},
+ },
+ })
+ enter := &types.ExecEvent{
+ EventType: types.ENTER_EXEC_EVENT,
+ TraceId: types.SYS_ENTER_EXECVE,
+ Time: 100,
+ Pid: 210,
+ Tid: 211,
+ }
+ copy(enter.Filename[:], "/definitely-missing-execve")
+ copy(enter.Comm[:], "ioworkload")
+ exit := &types.RetEvent{
+ EventType: types.EXIT_RET_EVENT,
+ TraceId: types.SYS_EXIT_EXECVE,
+ Time: 200,
+ Ret: -2,
+ Pid: 210,
+ Tid: 211,
+ }
+ ep := &event.Pair{EnterEv: enter, ExitEv: exit}
+
+ if ok := el.handleExecExit(ep, enter); ok {
+ t.Fatal("handleExecExit should reject pair due to filter mismatch")
+ }
+}
+
+func TestInitRawHandlersRegistersExecEvent(t *testing.T) {
+ el := mustNewEventLoop(t, eventLoopConfig{})
+ if _, ok := el.rawHandlers[types.ENTER_EXEC_EVENT]; !ok {
+ t.Fatal("ENTER_EXEC_EVENT handler is not registered")
+ }
+}