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 dc31e11691 Re-organize into a single workspace
This commit moves the aya-log projects from the subtree and adds them to
the main cargo workspace. It also brings the BPF crates into the
workspace and moves the macro crates up a level since they aren't BPF
code.

Miri was disabled for aya-bpf as the previous config wasn't actually
checking anything.

CI, clippy, fmt and release configurations have all been adjusted
appropriately.

CI was not properly running for other supported arches which was also
ixed here.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
..
integration-ebpf Re-organize into a single workspace 2 years ago
integration-test Support BTF Maps 2 years ago
integration-test-macros test: Replace RTF with Rust 2 years ago
.gitignore test: Replace RTF with Rust 2 years ago
README.md test: Replace RTF with Rust 2 years ago
run.sh test: Replace RTF with Rust 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:

  1. Rust nightly
  2. A checkout of libbpf
  3. cargo install bpf-linker
  4. bpftool

Other OSs

  1. A POSIX shell
  2. A checkout of libbpf
  3. rustup target add x86_64-unknown-linux-musl
  4. cargo install bpf-linker
  5. Install qemu and cloud-init-utils package - or any package that provides cloud-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 in integration-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 or bail!. The former is preferred since the stack trace will point directly to the failed line.