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.
d43afb9c29
This moves the docs for downloading kernels into the integration-test README since it allows us to be more verbose. Instructions have been added for the use of Fedora kernels. The instructions for Debian kernels were amended to not download all the kernels, and to encourage targetted download of the one you care about. Signed-off-by: Dave Tucker <dave@dtucker.co.uk> |
2 years ago | |
---|---|---|
.. | ||
integration-ebpf | 2 years ago | |
integration-test | 2 years ago | |
.gitignore | 3 years ago | |
README.md | 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
You'll need:
rustup toolchain install nightly
rustup target add {aarch64,x86_64}-unknown-linux-musl
cargo install bpf-linker
- (virtualized only)
qemu
Usage
From the root of this repository:
Native
cargo xtask integration-test local
Virtualized
VM tests require a kernel image to test with.
Obtaining a kernel image
Debian
To download an image from the Debian project:
- Browse to the Debian FTP site for the kernel version you require
- Download the kernel into
tests/.tmp/debian-kernels/${architecture}/
wget -nd -q -P test/.tmp/debian-kernels/x86_64 \
ftp://ftp.us.debian.org/debian/pool/main/l/linux/linux-image-5.10.0-23-cloud-amd64-unsigned_5.10.179-3_amd64.deb
- Extract the kernel image:
dpkg --fsys-tarfile test/.tmp/debian-kernels/arm64/linux-image-5.10.0-23-cloud-amd64-unsigned_5.10.179-3_amd64.deb | tar -C test/.tmp --wildcards --extract '*vmlinuz*' --file -
Fedora
To download an image from the Fedora project:
- Search for the kernel version you require on Koji
- Copy the download link for the
kernel-core-${version}.rpm
and download it intotests/.tmp/fedora-kernels/${architecture}/
wget -nd -P test/.tmp/fedora-kernels/x86_64 \
https://kojipkgs.fedoraproject.org//packages/kernel/5.10.23/200.fc33/x86_64/kernel-core-5.10.23-200.fc33.x86_64.rpm
- Extract the kernel image:
rpm2cpio ./test/.tmp/fedora-kernels/x86_64/kernel-core-5.10.23-200.fc33.x86_64.rpm \
| cpio -iv --to-stdout ./lib/modules/5.10.23-200.fc33.x86_64/vmlinuz > ./test/.tmp/boot/vmlinuz-5.10.23-200.fc33.x86_64
Running the tests
To run the tests run the following command, replacing /path/to/vmlinuz
with
the path to the kernel image you extracted above:
cargo xtask integration-test vm /path/to/vmlinuz
Writing an integration test
Tests should follow these guidelines:
- Rust eBPF code should live in
integration-ebpf/${NAME}.rs
and be 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.