13
ec "github.com/cilium/tetragon/api/v1/tetragon/codegen/eventchecker"
14
"github.com/cilium/tetragon/pkg/jsonchecker"
15
"github.com/cilium/tetragon/pkg/observer/observertesthelper"
16
"github.com/cilium/tetragon/pkg/testutils"
17
tus "github.com/cilium/tetragon/pkg/testutils/sensors"
18
"github.com/sirupsen/logrus"
22
func TestTestChecker(t *testing.T) {
23
if _, err := os.Stat("/sys/kernel/debug/tracing/events/syscalls"); os.IsNotExist(err) {
24
t.Skip("cannot use syscall tracepoints (consider enabling CONFIG_FTRACE_SYSCALLS)")
27
var doneWG, readyWG sync.WaitGroup
30
ctx, cancel := context.WithTimeout(context.Background(), tus.Conf().CmdWaitTime)
33
dummyErr := errors.New("dummy error")
34
dummyChecker := ec.FnEventChecker{
35
NextCheckFn: func(_ ec.Event, _ *logrus.Logger) (bool, error) {
38
FinalCheckFn: func(_ *logrus.Logger) error {
42
errorChecker := NewTestChecker(&dummyChecker)
44
obs, err := observertesthelper.GetDefaultObserver(t, ctx, tus.Conf().TetragonLib, observertesthelper.WithMyPid())
46
t.Fatalf("GetDefaultObserver error: %s", err)
48
sensor := GetTestSensor()
49
tus.LoadSensor(t, sensor)
51
observertesthelper.LoopEvents(ctx, t, &doneWG, &readyWG, obs)
56
err = jsonchecker.JsonTestCheck(t, errorChecker)
57
t.Logf("got error: %v", err)
58
if !errors.Is(err, dummyErr) {
59
t.Fatalf("unexpected error: %v", err)
62
testutils.DoneWithExportFile(t)