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.
aya/test
Dave Tucker 3078e5aba0 chore: Fix clippy panic_handler warnings
Working with aya in vscode will currently show a number of warnings
along the lines of:

```
found duplicate lang item `panic_impl`
the lang item is first defined in crate `std` (which `aya` depends on)
...
second definition in the local crate (`bpf_probe_read`)
```

This comes from feature unification.
integration-test requires the integration-common user feature, which
requires aya, which in turn brings in std.

For this same reason we avoid running clippy across the whole workspace.

We can avoid this issue by using the panic handler from the another
crate, which implements the same loop {} panic handler we use today.
It seems rustc is happy to conditionally link the panic handler
from an external crate without issuing warnings.

Therefore, we add our own crate - ebpf-panic - for this purpose.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 weeks ago
..
integration-common taplo: reorder-keys 3 weeks ago
integration-ebpf chore: Fix clippy panic_handler warnings 2 weeks ago
integration-test feat: Allow conversions to Program from ProgramInfo 2 weeks ago
.gitignore test: Replace RTF with Rust 3 years ago
README.md ci: cache downloads 4 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:

  1. rustup toolchain install nightly
  2. rustup target add {aarch64,x86_64}-unknown-linux-musl
  3. cargo install bpf-linker
  4. libelf-dev (libelf-devel on rpm-based distros)
  5. llvm (for llvm-objcopy)
  6. (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}.rs and included in integration-ebpf/Cargo.toml and integration-test/src/lib.rs using include_bytes_aligned!.
  • C eBPF code should live in integration-test/bpf/${NAME}.bpf.c. It should be added to the list of files in integration-test/build.rs and the list of constants in integration-test/src/lib.rs using include_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 to panic! instead.