diff --git a/test/integration-test/tests/btf_relocations.rs b/test/integration-test/tests/btf_relocations.rs index 34bc3dbe..ff25d2dd 100644 --- a/test/integration-test/tests/btf_relocations.rs +++ b/test/integration-test/tests/btf_relocations.rs @@ -4,6 +4,9 @@ use tempfile::TempDir; use aya::{maps::Array, programs::TracePoint, BpfLoader, Btf, Endianness}; +mod common; +use common::kernel_version; + // In the tests below we often use values like 0xAAAAAAAA or -0x7AAAAAAA. Those values have no // special meaning, they just have "nice" bit patterns that can be helpful while debugging. @@ -60,6 +63,11 @@ fn relocate_enum() { #[test] fn relocate_enum_signed() { + let kernel_version = kernel_version().unwrap(); + if kernel_version < (6, 0, 0) { + eprintln!("skipping test on kernel {kernel_version:?}, support for signed enum was added in 6.0.0; see https://github.com/torvalds/linux/commit/6089fb3"); + return; + } let test = RelocationTest { local_definition: r#" enum foo { D = -0x7AAAAAAA }; @@ -80,6 +88,11 @@ fn relocate_enum_signed() { #[test] fn relocate_enum64() { + let kernel_version = kernel_version().unwrap(); + if kernel_version < (6, 0, 0) { + eprintln!("skipping test on kernel {kernel_version:?}, support for enum64 was added in 6.0.0; see https://github.com/torvalds/linux/commit/6089fb3"); + return; + } let test = RelocationTest { local_definition: r#" enum foo { D = 0xAAAAAAAABBBBBBBB }; @@ -100,6 +113,11 @@ fn relocate_enum64() { #[test] fn relocate_enum64_signed() { + let kernel_version = kernel_version().unwrap(); + if kernel_version < (6, 0, 0) { + eprintln!("skipping test on kernel {kernel_version:?}, support for enum64 was added in 6.0.0; see https://github.com/torvalds/linux/commit/6089fb3"); + return; + } let test = RelocationTest { local_definition: r#" enum foo { D = -0xAAAAAAABBBBBBBB }; diff --git a/test/integration-test/tests/load.rs b/test/integration-test/tests/load.rs index 110025b2..f102264a 100644 --- a/test/integration-test/tests/load.rs +++ b/test/integration-test/tests/load.rs @@ -133,8 +133,9 @@ fn unload_kprobe() { #[test] fn pin_link() { - if kernel_version().unwrap() < (5, 9, 0) { - eprintln!("skipping test, XDP uses netlink"); + let kernel_version = kernel_version().unwrap(); + if kernel_version < (5, 9, 0) { + eprintln!("skipping test on kernel {kernel_version:?}, XDP uses netlink"); return; } @@ -168,8 +169,9 @@ fn pin_link() { #[test] fn pin_lifecycle() { - if kernel_version().unwrap() < (5, 9, 0) { - eprintln!("skipping test, XDP uses netlink"); + let kernel_version = kernel_version().unwrap(); + if kernel_version < (5, 9, 0) { + eprintln!("skipping test on kernel {kernel_version:?}, XDP uses netlink"); return; } diff --git a/test/integration-test/tests/smoke.rs b/test/integration-test/tests/smoke.rs index daeed03a..9a34d8b8 100644 --- a/test/integration-test/tests/smoke.rs +++ b/test/integration-test/tests/smoke.rs @@ -18,15 +18,11 @@ fn xdp() { #[test] fn extension() { - let (major, minor, _) = kernel_version().unwrap(); - if major < 5 || (minor == 5 && minor < 9) { - eprintln!( - "skipping as {}.{} does not meet version requirement of 5.9", - major, minor - ); + let kernel_version = kernel_version().unwrap(); + if kernel_version < (5, 9, 0) { + eprintln!("skipping test on kernel {kernel_version:?}, XDP uses netlink"); return; } - // TODO: Check kernel version == 5.9 or later let main_bytes = include_bytes_aligned!("../../../target/bpfel-unknown-none/release/main.bpf.o"); let mut bpf = Bpf::load(main_bytes).unwrap();