ebpf_exporter

Форк
0
/
syscall_test.go 
61 строка · 1.0 Кб
1
package decoder
2

3
import (
4
	"bytes"
5
	"runtime"
6
	"strconv"
7
	"testing"
8

9
	"github.com/cloudflare/ebpf_exporter/v2/config"
10
)
11

12
type syscallTestCase struct {
13
	in  []byte
14
	out []byte
15
}
16

17
func TestSyscallDecoder(t *testing.T) {
18
	cases := []syscallTestCase{}
19

20
	arm64 := map[int]string{
21
		0:   "io_setup",
22
		1:   "io_destroy",
23
		293: "rseq",
24
		447: "memfd_secret",
25
	}
26

27
	amd64 := map[int]string{
28
		0:   "read",
29
		1:   "write",
30
		293: "pipe2",
31
		447: "memfd_secret",
32
	}
33

34
	var arch map[int]string
35

36
	switch runtime.GOARCH {
37
	case "arm64":
38
		arch = arm64
39
	case "amd64":
40
		arch = amd64
41
	default:
42
		t.Errorf("unsupported architecture: %q", runtime.GOARCH)
43
	}
44

45
	for number, name := range arch {
46
		cases = append(cases, syscallTestCase{[]byte(strconv.Itoa(number)), []byte(name)})
47
	}
48

49
	for _, c := range cases {
50
		d := &Syscall{}
51

52
		out, err := d.Decode(c.in, config.Decoder{})
53
		if err != nil {
54
			t.Errorf("Error decoding %#v to %#v: %s", c.in, c.out, err)
55
		}
56

57
		if !bytes.Equal(out, c.out) {
58
			t.Errorf("Expected %s, got %s", c.out, out)
59
		}
60
	}
61
}
62

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

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

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

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