tetragon

Форк
0
/
checker_test.go 
63 строки · 1.7 Кб
1
// SPDX-License-Identifier: Apache-2.0
2
// Copyright Authors of Tetragon
3

4
package test
5

6
import (
7
	"context"
8
	"errors"
9
	"os"
10
	"sync"
11
	"testing"
12

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"
19
)
20

21
// TestTestChecker tests the test checker
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)")
25
	}
26

27
	var doneWG, readyWG sync.WaitGroup
28
	defer doneWG.Wait()
29

30
	ctx, cancel := context.WithTimeout(context.Background(), tus.Conf().CmdWaitTime)
31
	defer cancel()
32

33
	dummyErr := errors.New("dummy error")
34
	dummyChecker := ec.FnEventChecker{
35
		NextCheckFn: func(_ ec.Event, _ *logrus.Logger) (bool, error) {
36
			return false, nil
37
		},
38
		FinalCheckFn: func(_ *logrus.Logger) error {
39
			return dummyErr
40
		},
41
	}
42
	errorChecker := NewTestChecker(&dummyChecker)
43

44
	obs, err := observertesthelper.GetDefaultObserver(t, ctx, tus.Conf().TetragonLib, observertesthelper.WithMyPid())
45
	if err != nil {
46
		t.Fatalf("GetDefaultObserver error: %s", err)
47
	}
48
	sensor := GetTestSensor()
49
	tus.LoadSensor(t, sensor)
50

51
	observertesthelper.LoopEvents(ctx, t, &doneWG, &readyWG, obs)
52
	readyWG.Wait()
53

54
	TestCheckerMarkEnd(t)
55

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)
60
	}
61
	// NB: we expect the dummyErr, now that we got it mark the file to be deleted
62
	testutils.DoneWithExportFile(t)
63
}
64

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.