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.
79c9489a4f
For unclear reasons, two of the integration tests related to uprobes were resolving a symbol in libc. The integration-test binary can be built statically, in which case it would not load or reference libc. Statically linking the integration tests and running them in a VM without a userland is a convenient mechanism to exercise the tests against different kernel versions. The fact that the statically linked integration-test binary does not load libc is not the only reason these tests failed in such an environment. In fact, the logic to look in the process's memory maps was not running (because no pid was being passed). Separate logic to determine which object file to use when attempting to resolve a symbol for attaching a uprobe changes its behavior based on whether that target is an absolute path. If the target is not an absolute path, the code searches through the LdSoCache. This cache does not always exist in linux systems; when an attach call is made with a relative path target and there is no /etc/ld.so.cache file, the attach call will fail. This commit does not change that behavior, it merely sidesteps it. |
1 year ago | |
---|---|---|
.. | ||
integration-ebpf | 1 year ago | |
integration-test | 1 year ago | |
.gitignore | 2 years ago | |
README.md | 1 year ago | |
cloud-localds | 2 years ago | |
run.sh | 1 year 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
cargo install bpf-linker
Other OSs
- A POSIX shell
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
mkdir -p integration-test-binaries
cargo xtask build-integration-test | xargs -I % cp % integration-test-binaries
./test/run.sh integration-test-binaries
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.