summaryrefslogtreecommitdiff
path: root/internal/probemanager/grouping_test.go
blob: 3e838d5428977b64d245abba1bcb843055f482ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package probemanager

import "testing"

func TestGroupTracepointsPairsEnterAndExit(t *testing.T) {
	got := GroupTracepoints([]string{
		"sys_enter_read",
		"sys_exit_read",
		"sys_enter_openat",
		"sys_exit_openat",
	})

	if len(got) != 2 {
		t.Fatalf("expected 2 grouped syscalls, got %d", len(got))
	}

	read := got["read"]
	if read.Enter != "sys_enter_read" || read.Exit != "sys_exit_read" {
		t.Fatalf("unexpected read pair: %+v", read)
	}

	openat := got["openat"]
	if openat.Enter != "sys_enter_openat" || openat.Exit != "sys_exit_openat" {
		t.Fatalf("unexpected openat pair: %+v", openat)
	}
}

func TestGroupTracepointsAllowsPartialPairs(t *testing.T) {
	got := GroupTracepoints([]string{
		"sys_enter_ioctl",
		"sys_exit_fcntl",
	})

	ioctl := got["ioctl"]
	if ioctl.Enter != "sys_enter_ioctl" || ioctl.Exit != "" {
		t.Fatalf("unexpected ioctl pair: %+v", ioctl)
	}

	fcntl := got["fcntl"]
	if fcntl.Enter != "" || fcntl.Exit != "sys_exit_fcntl" {
		t.Fatalf("unexpected fcntl pair: %+v", fcntl)
	}
}

func TestGroupTracepointsIgnoresInvalidNames(t *testing.T) {
	got := GroupTracepoints([]string{
		"sys_enter_",
		"sys_exit_",
		"random_name",
		"syscalls:sys_enter_read",
	})
	if len(got) != 0 {
		t.Fatalf("expected no grouped entries, got %+v", got)
	}
}