From c1d8993d7be5094f115a08630e7f83bd3a0401bd Mon Sep 17 00:00:00 2001 From: David Frank Date: Tue, 3 Dec 2024 15:32:09 +0000 Subject: [PATCH 1/2] test: Add new stability test for MemoryManager Our current tests work by writing and then reading back the content but they do not fail if a commit changes reading/writing in a backwards incompatible way (as long as read is compatible with write). This new test adds golden files that must stay stable between commits. --- src/memory_manager.rs | 59 ++++++++++++++++++++++ src/memory_manager/stability_read.golden | Bin 0 -> 262144 bytes src/memory_manager/stability_write.golden | Bin 0 -> 1048576 bytes 3 files changed, 59 insertions(+) create mode 100644 src/memory_manager/stability_read.golden create mode 100644 src/memory_manager/stability_write.golden diff --git a/src/memory_manager.rs b/src/memory_manager.rs index 8e0396c7..394ade52 100644 --- a/src/memory_manager.rs +++ b/src/memory_manager.rs @@ -557,6 +557,7 @@ fn bucket_allocations_address(id: BucketId) -> Address { #[cfg(test)] mod test { use super::*; + use crate::safe_write; use proptest::prelude::*; const MAX_MEMORY_IN_PAGES: u64 = MAX_NUM_BUCKETS * BUCKET_SIZE_IN_PAGES; @@ -898,4 +899,62 @@ mod test { memory_1.read(0, &mut buf); assert_eq!(buf, vec![2; 1000]); } + + // Make a few reads and writes and compare the results against golden files that should stay + // stable between commits. + // The operations were chosen so that they exercise most of the implementation. + #[test] + fn stability() { + let mem = make_memory(); + let mem_mgr = MemoryManager::init_with_bucket_size(mem.clone(), 1); // very small bucket size. + + let data: Vec<_> = (0u8..=255u8) + .cycle() + .take((WASM_PAGE_SIZE * 2) as usize) + .collect(); + + const MEMORIES: u8 = 3; + let mut memory_id = 0; + let mut next_memory = || { + memory_id += 1; + memory_id %= MEMORIES; + mem_mgr.get(MemoryId(memory_id)) + }; + + // There are 5 operations + for _ in 0..MEMORIES * 5 { + safe_write(&next_memory(), 0, data.as_slice()).unwrap(); + safe_write(&next_memory(), WASM_PAGE_SIZE / 2, data.as_slice()).unwrap(); + safe_write(&next_memory(), WASM_PAGE_SIZE - 1, data.as_slice()).unwrap(); + safe_write(&next_memory(), WASM_PAGE_SIZE + 1, data.as_slice()).unwrap(); + safe_write( + &next_memory(), + 2 * WASM_PAGE_SIZE + WASM_PAGE_SIZE / 2, + data.as_slice(), + ) + .unwrap(); + } + + let expected_write = include_bytes!("memory_manager/stability_write.golden"); + assert!(expected_write.as_slice() == mem.borrow().as_slice()); + + let mut read = vec![0; 4 * WASM_PAGE_SIZE as usize]; + + // There are 4 operations + for _ in 0..MEMORIES * 4 { + next_memory().read(0, &mut read[0..WASM_PAGE_SIZE as usize / 2]); + next_memory().read( + WASM_PAGE_SIZE / 2 - 150, + &mut read[WASM_PAGE_SIZE as usize / 2..WASM_PAGE_SIZE as usize], + ); + next_memory().read( + WASM_PAGE_SIZE - 473, + &mut read[WASM_PAGE_SIZE as usize..WASM_PAGE_SIZE as usize * 2], + ); + next_memory().read(WASM_PAGE_SIZE * 2, &mut read[WASM_PAGE_SIZE as usize * 2..]); + } + + let expected_read = include_bytes!("memory_manager/stability_read.golden"); + assert!(expected_read.as_slice() == read.as_slice()); + } } diff --git a/src/memory_manager/stability_read.golden b/src/memory_manager/stability_read.golden new file mode 100644 index 0000000000000000000000000000000000000000..60f0b1e99a6d3c798a2c79ae8b4d960b66f9eed3 GIT binary patch literal 262144 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 literal 0 HcmV?d00001 diff --git a/src/memory_manager/stability_write.golden b/src/memory_manager/stability_write.golden new file mode 100644 index 0000000000000000000000000000000000000000..756b7ca0355c9324a965233bb3841746218718fd GIT binary patch literal 1048576 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 Date: Tue, 3 Dec 2024 15:39:06 +0000 Subject: [PATCH 2/2] Update test --- src/memory_manager.rs | 2 +- src/memory_manager/stability_write.golden | Bin 1048576 -> 1048576 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/memory_manager.rs b/src/memory_manager.rs index 394ade52..c91ec3ab 100644 --- a/src/memory_manager.rs +++ b/src/memory_manager.rs @@ -910,7 +910,7 @@ mod test { let data: Vec<_> = (0u8..=255u8) .cycle() - .take((WASM_PAGE_SIZE * 2) as usize) + .take((WASM_PAGE_SIZE * 2 + 901) as usize) .collect(); const MEMORIES: u8 = 3; diff --git a/src/memory_manager/stability_write.golden b/src/memory_manager/stability_write.golden index 756b7ca0355c9324a965233bb3841746218718fd..81973326613ba23ffb68a4bcdd4e48f216fd6180 100644 GIT binary patch delta 131 zcmZo@aA;_7*r3G0%gDsU!~g_9nvr3%A;SHt%bdX zqlI$|cMJ2@HrDDtTX@