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 c5bc4ba0da feat(aya): Add SchedClassifier:query_tcx() API
This adds SchedClassifier::query_tcx() API that is able to return an
ordered list of ProgramInfo (and revision) of an interface that has
TCX programs attached.

This is useful to verify the ordering of the programs in our integration
tests, but also to for #1032.

Additionally tidies up the macro used for TCX testing and adds
assertions using this new API.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
12 hours ago
..
integration-ebpf Exercise all new TCX APIs in the TCX integration test 2 days ago
integration-test feat(aya): Add SchedClassifier:query_tcx() API 12 hours ago
.gitignore test: Replace RTF with Rust 2 years ago
README.md tests: update instructions on setting up and running tests 10 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 <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.