mirror of https://github.com/aya-rs/aya
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.
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 | 2 years ago | |
| integration-test | 2 years ago | |
| .gitignore | 3 years ago | |
| README.md | 2 years ago | |
| cloud-localds | 3 years ago | |
| run.sh | 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:
- Rust nightly
cargo install bpf-linkerbpftool1
Other OSs
- A POSIX shell
rustup target add x86_64-unknown-linux-muslcargo install bpf-linker- Install
qemuandcloud-init-utilspackage - or any package that providescloud-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}.rsand included inintegration-ebpf/Cargo.tomlandintegration-test/src/lib.rsusinginclude_bytes_aligned!. - C eBPF code should live in
integration-test/bpf/${NAME}.bpf.c. It should be added to the list of files inintegration-test/build.rsand the list of constants inintegration-test/src/lib.rsusinginclude_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 topanic!instead.
-
TODO(https://github.com/aya-rs/aya/issues/645): Remove this dependency. ↩︎