Skip memfd tests when on qemu, due to differing madvise semantics.
This commit is contained in:
@@ -594,6 +594,10 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn instantiate_no_image() {
|
||||
if skip_tests_due_to_qemu_madvise_semantics() {
|
||||
return;
|
||||
}
|
||||
|
||||
// 4 MiB mmap'd area, not accessible
|
||||
let mut mmap = Mmap::accessible_reserved(0, 4 << 20).unwrap();
|
||||
// Create a MemFdSlot on top of it
|
||||
@@ -626,6 +630,10 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn instantiate_image() {
|
||||
if skip_tests_due_to_qemu_madvise_semantics() {
|
||||
return;
|
||||
}
|
||||
|
||||
// 4 MiB mmap'd area, not accessible
|
||||
let mut mmap = Mmap::accessible_reserved(0, 4 << 20).unwrap();
|
||||
// Create a MemFdSlot on top of it
|
||||
@@ -669,4 +677,19 @@ mod test {
|
||||
let slice = mmap.as_slice();
|
||||
assert_eq!(&[1, 2, 3, 4], &slice[4096..4100]);
|
||||
}
|
||||
|
||||
/// qemu's madvise implementation does not implement the
|
||||
/// "flash-reset back to zero or CoW backing" semantics that Linux
|
||||
/// does. Our CI setup uses qemu (in usermode-binary mode, not
|
||||
/// whole-system mode) to run tests on aarch64 and s390x. We want
|
||||
/// to skip these tests when under qemu, but not when someone is
|
||||
/// developing natively on one of these architectures. So instead,
|
||||
/// we dynamically detect an environment variable that our CI
|
||||
/// setup sets.
|
||||
///
|
||||
/// See `skip_pooling_allocator_tests()` in `tests/all/main.rs`
|
||||
/// for more.
|
||||
fn skip_tests_due_to_qemu_madvise_semantics() -> bool {
|
||||
std::env::var("WASMTIME_TEST_NO_HOG_MEMORY").is_ok()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user