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.
f976229477
This commit allows for BTF maps in the .maps ELF section to be parsed. It reads the necessary information from the BTF section of the ELF file. While the btf_ids of Keys and Values types are stored, they are not (yet) used. When creating a BTF map, we pass the btf_key_type_id and btf_value_type_id. Signed-off-by: Dave Tucker <dave@dtucker.co.uk> |
2 years ago | |
---|---|---|
.. | ||
integration-ebpf | 2 years ago | |
integration-test | 2 years ago | |
integration-test-macros | 2 years ago | |
.gitignore | 2 years ago | |
README.md | 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
- 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 --libbpf-dir /path/to/libbpf
Virtualized
./test/run.sh /path/to/libbpf
Writing a test
Tests should follow these guidelines:
- Rust eBPF code should live in
integration-ebpf/${NAME}.rs
and included inintegration-ebpf/Cargo.toml
- C eBPF code should live in
integration-test/src/bpf/${NAME}.bpf.c
. It's automatically compiled and made available as${OUT_DIR}/${NAME}.bpf.o
. - Any bytecode should be included in the integration test binary using
include_bytes_aligned!
- Tests should be added to
integration-test/src/test
- You may add a new module, or use an existing one
- Integration tests must use the
#[integration_test]
macro to be included in the build - Test functions should return
anyhow::Result<()>
since this allows the use of?
to return errors. - You may either
panic!
when an assertion fails orbail!
. The former is preferred since the stack trace will point directly to the failed line.