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.
Working with aya in vscode will currently show a number of warnings along the lines of: ``` found duplicate lang item `panic_impl` the lang item is first defined in crate `std` (which `aya` depends on) ... second definition in the local crate (`bpf_probe_read`) ``` This comes from feature unification. integration-test requires the integration-common user feature, which requires aya, which in turn brings in std. For this same reason we avoid running clippy across the whole workspace. We can avoid this issue by using the panic handler from the another crate, which implements the same loop {} panic handler we use today. It seems rustc is happy to conditionally link the panic handler from an external crate without issuing warnings. Therefore, we add our own crate - ebpf-panic - for this purpose. Signed-off-by: Dave Tucker <dave@dtucker.co.uk> |
2 weeks ago | |
---|---|---|
.. | ||
integration-common | 3 weeks ago | |
integration-ebpf | 2 weeks ago | |
integration-test | 2 weeks ago | |
.gitignore | 3 years ago | |
README.md | 4 months 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
You'll need:
rustup toolchain install nightly
rustup target add {aarch64,x86_64}-unknown-linux-musl
cargo install bpf-linker
libelf-dev
(libelf-devel
on rpm-based distros)llvm
(forllvm-objcopy
)- (virtualized only)
qemu
Usage
From the root of this repository:
Native
cargo xtask integration-test local
Virtualized
cargo xtask integration-test vm --cache-dir <CACHE_DIR> <KERNEL_IMAGE>...
Writing an integration test
Tests should follow these guidelines:
- Rust eBPF code should live in
integration-ebpf/${NAME}.rs
and included inintegration-ebpf/Cargo.toml
andintegration-test/src/lib.rs
usinginclude_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.rs
and the list of constants inintegration-test/src/lib.rs
usinginclude_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.