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
Tamir Duberstein 6ac1320707
integration-test: build "fake" by default
Use the environment variable AYA_BUILD_INTEGRATION_BPF to indicate to
the build script that it should *actually* build bpf, otherwise emitting
empty files.

This allows metadata builds to skip costly build steps without
sacrificing ergonomics; all compile-time tools such as cargo clippy work
out of the box.

Cargo even gives each of these builds (depending on the value of the
environment variable) its own cache key, so they do not invalidate each
other when the user alternates between metadata and real builds.

This allows the lint action to move out of the VM.
1 year ago
..
integration-ebpf integration-test: compile Rust probes using build.rs 1 year ago
integration-test integration-test: build "fake" by default 1 year ago
.gitignore test: Replace RTF with Rust 2 years ago
README.md integration-test: compile Rust probes using build.rs 1 year ago
cloud-localds integration-tests: run on macos to get nested virtualization 2 years ago
run.sh integration-test: build "fake" by default 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:

  1. Rust nightly
  2. libelf
  3. A checkout of libbpf
  4. cargo install bpf-linker
  5. 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

Virtualized

./test/run.sh

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.