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.
6ac1320707
Use the environment variable AYA_BUILD_INTEGRATION_BPF to indicate to the build script that it should *actually* build bpf, otherwise emitting empty files. This allows metadata builds to skip costly build steps without sacrificing ergonomics; all compile-time tools such as cargo clippy work out of the box. Cargo even gives each of these builds (depending on the value of the environment variable) its own cache key, so they do not invalidate each other when the user alternates between metadata and real builds. This allows the lint action to move out of the VM. |
2 years ago | |
---|---|---|
.. | ||
integration-ebpf | 2 years ago | |
integration-test | 2 years ago | |
.gitignore | 3 years ago | |
README.md | 2 years ago | |
cloud-localds | 2 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
libelf
- A checkout of libbpf
cargo install bpf-linker
bpftool
Other OSs
- A POSIX shell
- A checkout of libbpf
rustup target add x86_64-unknown-linux-musl
cargo install bpf-linker
- Install
qemu
andcloud-init-utils
package - 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}.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.