aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/seccomp/syscall_test.go
blob: 151f6321e9e0c3467ae44591495b7a08a13d417e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package seccomp

import (
	"reflect"
	"testing"
	"unsafe"

	"hakurei.app/container/std"
)

func TestSyscallResolveName(t *testing.T) {
	t.Parallel()

	for name, want := range std.Syscalls() {
		t.Run(name, func(t *testing.T) {
			t.Parallel()

			// this checks the std implementation against libseccomp.
			if got, ok := syscallResolveName(name); !ok || got != want {
				t.Errorf("syscallResolveName(%q) = %d, want %d", name, got, want)
			}
		})
	}
}

func TestRuleSize(t *testing.T) {
	assertSize[NativeRule, syscallRule](t)
	assertSize[ScmpDatum, scmpDatum](t)
	assertSize[ScmpArgCmp, scmpArgCmp](t)
}

// assertSize asserts that native and equivalent are of the same size.
func assertSize[native, equivalent any](t *testing.T) {
	got := unsafe.Sizeof(*new(native))
	want := unsafe.Sizeof(*new(equivalent))
	if got != want {
		t.Fatalf("%s: %d, want %d", reflect.TypeFor[native]().Name(), got, want)
	}
}