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