tetragon

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

4
package vtuplefilter
5

6
import (
7
	"testing"
8

9
	"github.com/cilium/tetragon/pkg/vtuple"
10
)
11

12
type VTRes struct {
13
	vt  vtuple.Impl
14
	res bool
15
}
16

17
type LineTestCase struct {
18
	line  string
19
	tests []VTRes
20
}
21

22
var (
23
	ip10 = [4]byte{10, 1, 1, 10}
24
	ip20 = [4]byte{10, 1, 1, 20}
25

26
	LineTestCases = []LineTestCase{
27
		{
28
			line: "sport=9999",
29
			tests: []VTRes{
30
				{vt: vtuple.CreateTCPv4(ip10, 9999, ip20, 4242), res: true},
31
				{vt: vtuple.CreateTCPv4(ip10, 4242, ip20, 9999), res: false},
32
				{vt: vtuple.CreateTCPv4(ip10, 4242, ip20, 1234), res: false},
33
			},
34
		},
35
		{
36
			line: "dport=9999",
37
			tests: []VTRes{
38
				{vt: vtuple.CreateTCPv4(ip10, 9999, ip20, 4242), res: false},
39
				{vt: vtuple.CreateTCPv4(ip10, 4242, ip20, 9999), res: true},
40
				{vt: vtuple.CreateTCPv4(ip10, 4242, ip20, 1234), res: false},
41
			},
42
		},
43
		{
44
			line: "port=9999",
45
			tests: []VTRes{
46
				{vt: vtuple.CreateTCPv4(ip10, 9999, ip20, 4242), res: true},
47
				{vt: vtuple.CreateTCPv4(ip10, 4242, ip20, 9999), res: true},
48
				{vt: vtuple.CreateTCPv4(ip10, 4242, ip20, 1234), res: false},
49
			},
50
		},
51

52
		// TODO: more tests
53
	}
54
)
55

56
func doLineTest(t *testing.T, c *LineTestCase) {
57
	filter, err := FromLine(c.line)
58
	if err != nil {
59
		t.Errorf("failed to parse line %s: %s", c.line, err)
60
	}
61

62
	for _, vtres := range c.tests {
63
		res := filter.FilterFn(&vtres.vt)
64
		if res != vtres.res {
65
			t.Errorf("filter:%s tuple:%s expected_result:%t result:%t", c.line, vtuple.StringRep(&vtres.vt), vtres.res, res)
66
		}
67

68
	}
69
}
70

71
func TestLines(t *testing.T) {
72
	for _, tc := range LineTestCases {
73
		doLineTest(t, &tc)
74
	}
75
}
76

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

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

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

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