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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
package sys
import (
"errors"
"testing"
"github.com/cilium/ebpf/internal/testutils/fdtrace"
"github.com/cilium/ebpf/internal/unix"
"github.com/go-quicktest/qt"
)
func TestObjName(t *testing.T) {
name := NewObjName("more_than_16_characters_long")
if name[len(name)-1] != 0 {
t.Error("NewBPFObjName doesn't null terminate")
}
if len(name) != BPF_OBJ_NAME_LEN {
t.Errorf("Name is %d instead of %d bytes long", len(name), BPF_OBJ_NAME_LEN)
}
}
func TestWrappedErrno(t *testing.T) {
a := error(wrappedErrno{unix.EINVAL})
b := error(unix.EINVAL)
if a == b {
t.Error("wrappedErrno is comparable to plain errno")
}
if !errors.Is(a, b) {
t.Error("errors.Is(wrappedErrno, errno) returns false")
}
if errors.Is(a, unix.EAGAIN) {
t.Error("errors.Is(wrappedErrno, EAGAIN) returns true")
}
notsupp := wrappedErrno{ENOTSUPP}
qt.Assert(t, qt.StringContains(notsupp.Error(), "operation not supported"))
}
func TestSyscallError(t *testing.T) {
err := errors.New("foo")
foo := Error(err, unix.EINVAL)
if !errors.Is(foo, unix.EINVAL) {
t.Error("SyscallError is not the wrapped errno")
}
if !errors.Is(foo, err) {
t.Error("SyscallError is not the wrapped error")
}
if errors.Is(unix.EINVAL, foo) {
t.Error("Errno is the SyscallError")
}
if errors.Is(err, foo) {
t.Error("Error is the SyscallError")
}
}
func TestMain(m *testing.M) {
fdtrace.TestMain(m)
}
|