mirror of
https://github.com/aya-rs/aya.git
synced 2026-05-26 11:24:23 +02:00
f10988d56a
test-case relies on cooperating attribute macros when wrapping generated parameterized tests. Stacking it with test_log can register each generated case twice, so passing tests may run more than once and mask order-sensitive or flaky behavior. Move the parameterized tests to rstest, but do not rely on rstest's implicit test-attribute detection. rstest treats attributes whose path ends in test as test attributes; that has its own failure mode if a non-test decorator matches, potentially producing cases that do not run as intended. Use explicit #[test_attr(...)] wrappers for every rstest case that needs test_log or tokio, so generated tests get the intended harness attribute instead of depending on implicit detection. Refs: #1573.
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 nightlyrustup target add {aarch64,x86_64}-unknown-linux-muslcargo install bpf-linkerlibelf-dev(libelf-develon 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_ARCHIVES>...
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.