tetragon

Форк
0
/
lseek_test.go 
88 строк · 2.3 Кб
1
// SPDX-License-Identifier: Apache-2.0
2
// Copyright Authors of Tetragon
3

4
package test
5

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

12
	ec "github.com/cilium/tetragon/api/v1/tetragon/codegen/eventchecker"
13
	"github.com/cilium/tetragon/pkg/jsonchecker"
14
	"github.com/cilium/tetragon/pkg/observer/observertesthelper"
15
	_ "github.com/cilium/tetragon/pkg/sensors/exec"
16
	tus "github.com/cilium/tetragon/pkg/testutils/sensors"
17
	"github.com/stretchr/testify/assert"
18
	"golang.org/x/sys/unix"
19
)
20

21
// This bpf_lseek is a simple BPF program used for tests
22

23
func TestMain(m *testing.M) {
24
	ec := tus.TestSensorsRun(m, "SensorTest")
25
	os.Exit(ec)
26
}
27

28
func TestSensorLseekLoad(t *testing.T) {
29
	if _, err := os.Stat("/sys/kernel/debug/tracing/events/syscalls"); os.IsNotExist(err) {
30
		t.Skip("cannot use syscall tracepoints (consider enabling CONFIG_FTRACE_SYSCALLS)")
31
	}
32

33
	var doneWG, readyWG sync.WaitGroup
34
	defer doneWG.Wait()
35

36
	ctx, cancel := context.WithTimeout(context.Background(), tus.Conf().CmdWaitTime)
37
	defer cancel()
38

39
	checker := ec.NewUnorderedEventChecker(
40
		ec.NewTestChecker(""),
41
	)
42

43
	obs, err := observertesthelper.GetDefaultObserver(t, ctx, tus.Conf().TetragonLib)
44
	if err != nil {
45
		t.Fatalf("GetDefaultObserver error: %s", err)
46
	}
47
	sensor := GetTestSensor()
48
	tus.LoadSensor(t, sensor)
49
	observertesthelper.LoopEvents(ctx, t, &doneWG, &readyWG, obs)
50
	readyWG.Wait()
51
	unix.Seek(BogusFd, 0, BogusWhenceVal)
52

53
	err = jsonchecker.JsonTestCheck(t, checker)
54
	assert.NoError(t, err)
55
}
56

57
func TestSensorLseekEnable(t *testing.T) {
58
	if _, err := os.Stat("/sys/kernel/debug/tracing/events/syscalls"); os.IsNotExist(err) {
59
		t.Skip("cannot use syscall tracepoints (consider enabling CONFIG_FTRACE_SYSCALLS)")
60
	}
61

62
	var doneWG, readyWG sync.WaitGroup
63
	defer doneWG.Wait()
64

65
	ctx, cancel := context.WithTimeout(context.Background(), tus.Conf().CmdWaitTime)
66
	defer cancel()
67

68
	checker := ec.NewUnorderedEventChecker(
69
		ec.NewTestChecker(""),
70
	)
71

72
	obs, err := observertesthelper.GetDefaultObserver(t, ctx, tus.Conf().TetragonLib)
73
	if err != nil {
74
		t.Fatalf("GetDefaultObserver error: %s", err)
75
	}
76

77
	sensor := GetTestSensor()
78

79
	smanager := tus.GetTestSensorManager(ctx, t)
80
	smanager.AddAndEnableSensor(ctx, t, sensor, sensor.Name)
81

82
	observertesthelper.LoopEvents(ctx, t, &doneWG, &readyWG, obs)
83
	readyWG.Wait()
84
	unix.Seek(BogusFd, 0, BogusWhenceVal)
85

86
	err = jsonchecker.JsonTestCheck(t, checker)
87
	assert.NoError(t, err)
88
}
89

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

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

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

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