@ -71,59 +71,31 @@ impl Drop for NetNsGuard {
}
}
}
}
/// Performs `assert!` macro. If the assertion fails and host kernel version
/// If the `KernelVersion::current >= $version`, `assert!($cond)`, else `assert!(!$cond)`.
/// is above feature version, then fail test.
macro_rules! kernel_assert {
macro_rules! kernel_assert {
( $cond :expr , $version :expr $(, ) ? ) = > {
( $cond :expr , $version :expr $(, ) ? ) = > {
let pass : bool = $cond ;
let current = aya ::util ::KernelVersion ::current ( ) . unwrap ( ) ;
if ! pass {
let required : aya ::util ::KernelVersion = $version ;
let feat_version : aya ::util ::KernelVersion = $version ;
if current > = required {
let current = aya ::util ::KernelVersion ::current ( ) . unwrap ( ) ;
assert! ( $cond , "{current} >= {required}" ) ;
let cond_literal = stringify! ( $cond ) ;
} else {
if current > = feat_version {
assert! ( ! $cond , "{current} < {required}" ) ;
// Host kernel is expected to have the feat but does not
panic! (
r#" assertion `{cond_literal}` failed: expected host kernel v{current} to have v{feat_version} feature"# ,
) ;
} else {
// Continue with tests since host is not expected to have feat
eprintln! (
r #" ignoring assertion at { } :{ }
assertion ` { cond_literal } ` failed : continuing since host kernel v { current } is not expected to have v { feat_version } feature " #,
file! ( ) , line! ( ) ,
) ;
}
}
}
} ;
} ;
}
}
pub ( crate ) use kernel_assert ;
pub ( crate ) use kernel_assert ;
/// Performs `assert_eq!` macro. If the assertion fails and host kernel version
/// If the `KernelVersion::current >= $version`, `assert_eq!($left, $right)`, else
/// is above feature version, then fail test .
/// `assert_ne!($left, $right)`.
macro_rules! kernel_assert_eq {
macro_rules! kernel_assert_eq {
( $left :expr , $right :expr , $version :expr $(, ) ? ) = > {
( $left :expr , $right :expr , $version :expr $(, ) ? ) = > {
if $left ! = $right {
let current = aya ::util ::KernelVersion ::current ( ) . unwrap ( ) ;
let feat_version : aya ::util ::KernelVersion = $version ;
let required : aya ::util ::KernelVersion = $version ;
let current = aya ::util ::KernelVersion ::current ( ) . unwrap ( ) ;
if current > = required {
if current > = feat_version {
assert_eq! ( $left , $right , "{current} >= {required}" ) ;
// Host kernel is expected to have the feat but does not
} else {
panic! (
assert_ne! ( $left , $right , "{current} < {required}" ) ;
r #" assertion ` left = = right ` failed : expected host kernel v { current } to have v { feat_version } feature
left : { :? }
right : { :? } " #,
$left , $right ,
) ;
} else {
// Continue with tests since host is not expected to have feat
eprintln! (
r #" ignoring assertion at { } :{ }
assertion ` left = = right ` failed : continuing since host kernel v { current } is not expected to have v { feat_version } feature
left : { :? }
right : { :? } " #,
file! ( ) , line! ( ) , $left , $right ,
) ;
}
}
}
} ;
} ;
}
}