package testutils
import "github.com/cilium/ebpf/internal/testutils"
The netns implementation in this file was taken from cilium/cilium.
Index ¶
- func CheckFeatureMatrix[K comparable](t *testing.T, fm internal.FeatureMatrix[K])
- func CheckFeatureTest(t *testing.T, fn func() error)
- func ClangBin(tb testing.TB) string
- func Contains[T, I any](i I) bool
- func CreateCgroup(tb testing.TB) *os.File
- func DupFD(tb testing.TB, fd int) int
- func Files(t *testing.T, files []string, fn func(*testing.T, string))
- func GetCgroupIno(t *testing.T, cgroup *os.File) uint64
- func Glob(tb testing.TB, pattern string, excludes ...string) []string
- func IsDeepCopy[T any](got, want T) qt.Checker
- func IsVersionLessThan(tb testing.TB, minVersions ...string) bool
- func LockOSThreadToSingleCPU(tb testing.TB)
- func NativeFile(tb testing.TB, path string) string
- func Rand(tb testing.TB) *rand.Rand
- func SkipIfNotSupported(tb testing.TB, err error)
- func SkipIfNotSupportedOnOS(tb testing.TB, err error)
- func SkipNonNativeEndian(tb testing.TB, bo binary.ByteOrder)
- func SkipOnOldKernel(tb testing.TB, minVersion, feature string)
- func TempBPFFS(tb testing.TB) string
- func WaitChan[T any](tb testing.TB, ch <-chan T, timeout time.Duration)
- func WithCapabilities(tb testing.TB, caps []Capability, f func())
- type Capability
- type NetNS
Functions ¶
func CheckFeatureMatrix ¶
func CheckFeatureMatrix[K comparable](t *testing.T, fm internal.FeatureMatrix[K])
func CheckFeatureTest ¶
func ClangBin ¶
func Contains ¶
Contains checks if interface value I is of type T. Use with qt.Satisfies:
qt.Assert(t, qt.Satisfies(p, testutils.Contains[*ebpf.Program]))
func CreateCgroup ¶
func DupFD ¶
func Files ¶
Files calls fn for each given file.
The function errors out if the pattern matches no files.
func GetCgroupIno ¶
func Glob ¶
Glob finds files matching a pattern.
The pattern should may include full path. Excludes use the same syntax as pattern, but are only applied to the basename instead of the full path.
func IsDeepCopy ¶
IsDeepCopy checks that got is a deep copy of want.
All primitive values must be equal, but pointers must be distinct. This is different from reflect.DeepEqual which will accept equal pointer values. That is, reflect.DeepEqual(a, a) is true, while IsDeepCopy(a, a) is false.
func IsVersionLessThan ¶
Check whether the current runtime version is less than some minimum.
func LockOSThreadToSingleCPU ¶
LockOSThreadToSingleCPU force the current goroutine to run on a single CPU.
func NativeFile ¶
NativeFile substitutes %s with an abbreviation of the host endianness.
func Rand ¶
func SkipIfNotSupported ¶
func SkipIfNotSupportedOnOS ¶
func SkipNonNativeEndian ¶
SkipNonNativeEndian skips the test or benchmark if bo doesn't match the host's native endianness.
func SkipOnOldKernel ¶
Skip a test based on the Linux version we are running on.
Warning: this function does not have an effect on platforms other than Linux.
func TempBPFFS ¶
TempBPFFS creates a temporary directory on a BPF FS.
The directory is automatically cleaned up at the end of the test run.
func WaitChan ¶
WaitChan waits for a value to be sent on a channel, or for a timeout to occur. If the timeout is reached, the test will fail.
func WithCapabilities ¶
func WithCapabilities(tb testing.TB, caps []Capability, f func())
WithCapabilities runs `f` with only the given capabilities in the effective set. This allows us to assert that certain operations only require specific capabilities.
The code in `f` and any code called by `f` must NOT call runtime.LockOSThread, as this could leave the current goroutine permanently pinned to an OS thread. It must also not create any goroutines of its own, as that will result in a new OS thread being created that may or may not inherit the new capabilities of its parent, and will later be released into the schedulable pool of threads available for goroutine scheduling.
Warning: on non-linux platforms, this function calls through to `f` without side effects.
Types ¶
type Capability ¶
type Capability int
const ( CAP_NET_ADMIN Capability = 12 CAP_SYS_ADMIN Capability = 21 CAP_SYS_RESOURCE Capability = 24 CAP_PERFMON Capability = 38 CAP_BPF Capability = 39 )
Mirrors of constants from x/sys/unix
type NetNS ¶
type NetNS struct {
// contains filtered or unexported fields
}
func NewNetNS ¶
NewNetNS returns a new network namespace.
func (*NetNS) Do ¶
Do runs the provided func in the netns without changing the calling thread's netns.
The code in f and any code called by f must NOT call runtime.LockOSThread, as this could leave the goroutine created by Do permanently pinned to an OS thread.
Source Files ¶
bpffs_other.go cap.go cgroup.go chan.go checkers.go cpu.go fd_other.go feature.go feature_other.go glob.go netns_linux.go programs.go rlimit.go seed.go
Directories ¶
| Path | Synopsis |
|---|---|
| internal/testutils/testmain |
- Version
- v0.21.0 (latest)
- Published
- Mar 5, 2026
- Platform
- linux/amd64
- Imports
- 22 packages
- Last checked
- 4 hours ago –
Tools for package owners.