You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
aya/test
Andrés Medina 7456d2bb0d aya: Use `OwnedFd` when loading BTF fd
This fixes an existing file descriptor leak when there is BTF data in
the loaded object.

There is a required breaking change in that now the btf fd will be
passed in the programs and maps when loading them instead of them
storing a raw fd to them as to avoid the maps/programs needing to be
tied by lifetime to the btf fd (since they aren't needed at load
time).

To avoid lifetime issues caused by the bpf object owning both the btf
fd and the map of programs/maps but needing to reference the fd while
mutating the programs these fields are now made public. As far as I
can tell there are no safety issues with making these fields public,
the only issue would be tying that struct's public API more. I did
make the structure non exhaustive so that adding fields wouldn't
become a breaking change.
2 years ago
..
integration-ebpf integration-test: build-dep on integration-ebpf 2 years ago
integration-test aya: Use `OwnedFd` when loading BTF fd 2 years ago
.gitignore test: Replace RTF with Rust 3 years ago
README.md test: update README.md 2 years ago
cloud-localds integration-tests: run on macos to get nested virtualization 3 years ago
run.sh xtask: ensure libbpf submodule is initialized 2 years ago

README.md

Aya Integration Tests

The aya integration test suite is a set of tests to ensure that common usage behaviours work on real Linux distros

Prerequisites

Linux

To run locally all you need is:

  1. Rust nightly
  2. cargo install bpf-linker
  3. bpftool 1

Other OSs

  1. A POSIX shell
  2. rustup target add x86_64-unknown-linux-musl
  3. cargo install bpf-linker
  4. Install qemu and cloud-init-utils package - or any package that provides cloud-localds

Usage

From the root of this repository:

Native

cargo xtask integration-test

Virtualized

./test/run.sh

Writing an integration test

Tests should follow these guidelines:

  • Rust eBPF code should live in integration-ebpf/${NAME}.rs and included in integration-ebpf/Cargo.toml and integration-test/src/lib.rs using include_bytes_aligned!.
  • C eBPF code should live in integration-test/bpf/${NAME}.bpf.c. It should be added to the list of files in integration-test/build.rs and the list of constants in integration-test/src/lib.rs using include_bytes_aligned!.
  • Tests should be added to integration-test/tests.
  • You may add a new module, or use an existing one.
  • Test functions should not return anyhow::Result<()> since this produces errors without stack traces. Prefer to panic! instead.

  1. TODO(https://github.com/aya-rs/aya/issues/645): Remove this dependency. ↩︎