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.
84e5e2894f
Having separate format hints and tokens per IP address family is unnecessary, since they are represented by different types and we handle format hints for each type separately. So we can just have one format hint. Also, we should be consistent with the format strings grammar in Rust[0]. The `type` token, which is mapped to formatting traits, usually consists of one letter[1] (and optional `?` for `Debug` trait, but that doesn't matter for us). It shouldn't consist of multiple letters. Our `:ipv4` and `:ipv6` tokens were clearly breaking that convention, so we should rather switch to something with one letter - hence `:i`. [0] https://doc.rust-lang.org/std/fmt/#syntax [1] https://doc.rust-lang.org/std/fmt/#formatting-traits |
1 year ago | |
---|---|---|
.. | ||
integration-ebpf | 1 year ago | |
integration-test | 2 years ago | |
integration-test-macros | 2 years ago | |
.gitignore | 2 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 --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.