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.
For some reason, the aarch64 6.1 debian kernel was not compiled with CONFIG_KALLSYMS_ALL=y, and the locations of globals are not available in kallsyms. To attach breakpoints to these symbols in the test pipeline, we need to read them from System.map and apply the kaslr offset to get their real address. The System.map file is not provided in the kernel package by default, so we need to extract it from the corresponding debug package. - .github: pull the corresponding debug packages down as well as regular kernels - test: attach the perf_event_bp test breakpoint to the modprobe_path address in kallsyms if present, or by applying the kaslr offset to the System.map address if not found - xtask: preferentially extract the System.map file from the debug package, if available |
4 weeks ago | |
|---|---|---|
| .. | ||
| integration-common | 1 month ago | |
| integration-ebpf | 4 weeks ago | |
| integration-test | 4 weeks ago | |
| .gitignore | 3 years ago | |
| README.md | 11 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 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_IMAGE>...
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.