Skip relocation tests on unsupported kernels

reviewable/pr641/r1
Tamir Duberstein 2 years ago
parent efa6a0a13f
commit df980ecb2d
No known key found for this signature in database

@ -4,6 +4,9 @@ use tempfile::TempDir;
use aya::{maps::Array, programs::TracePoint, BpfLoader, Btf, Endianness}; 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 // 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. // special meaning, they just have "nice" bit patterns that can be helpful while debugging.
@ -60,6 +63,11 @@ fn relocate_enum() {
#[test] #[test]
fn relocate_enum_signed() { 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 { let test = RelocationTest {
local_definition: r#" local_definition: r#"
enum foo { D = -0x7AAAAAAA }; enum foo { D = -0x7AAAAAAA };
@ -80,6 +88,11 @@ fn relocate_enum_signed() {
#[test] #[test]
fn relocate_enum64() { 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 { let test = RelocationTest {
local_definition: r#" local_definition: r#"
enum foo { D = 0xAAAAAAAABBBBBBBB }; enum foo { D = 0xAAAAAAAABBBBBBBB };
@ -100,6 +113,11 @@ fn relocate_enum64() {
#[test] #[test]
fn relocate_enum64_signed() { 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 { let test = RelocationTest {
local_definition: r#" local_definition: r#"
enum foo { D = -0xAAAAAAABBBBBBBB }; enum foo { D = -0xAAAAAAABBBBBBBB };

@ -133,8 +133,9 @@ fn unload_kprobe() {
#[test] #[test]
fn pin_link() { fn pin_link() {
if kernel_version().unwrap() < (5, 9, 0) { let kernel_version = kernel_version().unwrap();
eprintln!("skipping test, XDP uses netlink"); if kernel_version < (5, 9, 0) {
eprintln!("skipping test on kernel {kernel_version:?}, XDP uses netlink");
return; return;
} }
@ -168,8 +169,9 @@ fn pin_link() {
#[test] #[test]
fn pin_lifecycle() { fn pin_lifecycle() {
if kernel_version().unwrap() < (5, 9, 0) { let kernel_version = kernel_version().unwrap();
eprintln!("skipping test, XDP uses netlink"); if kernel_version < (5, 9, 0) {
eprintln!("skipping test on kernel {kernel_version:?}, XDP uses netlink");
return; return;
} }

@ -18,15 +18,11 @@ fn xdp() {
#[test] #[test]
fn extension() { fn extension() {
let (major, minor, _) = kernel_version().unwrap(); let kernel_version = kernel_version().unwrap();
if major < 5 || (minor == 5 && minor < 9) { if kernel_version < (5, 9, 0) {
eprintln!( eprintln!("skipping test on kernel {kernel_version:?}, XDP uses netlink");
"skipping as {}.{} does not meet version requirement of 5.9",
major, minor
);
return; return;
} }
// TODO: Check kernel version == 5.9 or later
let main_bytes = let main_bytes =
include_bytes_aligned!("../../../target/bpfel-unknown-none/release/main.bpf.o"); include_bytes_aligned!("../../../target/bpfel-unknown-none/release/main.bpf.o");
let mut bpf = Bpf::load(main_bytes).unwrap(); let mut bpf = Bpf::load(main_bytes).unwrap();

Loading…
Cancel
Save