Skip to content

Commit 45ad785

Browse files
committed
refactor(test): Replace duplicated code with loops
Some tests in memory.rs were runnign effectively the same test scenario twice, the only difference being the state of dirty page tracking. Just use a loop over the two boolean values here to avoid the copy-paste. Also remove a leftover test that was referring to "guard pages", but actually only repeated one of the dirty page tracking blocks. Guard pages were removed in 71cf036. Signed-off-by: Patrick Roy <[email protected]>
1 parent b6f66fa commit 45ad785

File tree

1 file changed

+10
-43
lines changed

1 file changed

+10
-43
lines changed

src/vmm/src/vstate/memory.rs

Lines changed: 10 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -431,8 +431,7 @@ mod tests {
431431

432432
#[test]
433433
fn test_from_raw_regions() {
434-
// Check dirty page tracking is off.
435-
{
434+
for dirty_page_tracking in [true, false] {
436435
let region_size = 0x10000;
437436
let regions = vec![
438437
(GuestAddress(0x0), region_size),
@@ -441,27 +440,14 @@ mod tests {
441440
(GuestAddress(0x30000), region_size),
442441
];
443442

444-
let guest_memory =
445-
GuestMemoryMmap::from_raw_regions(&regions, false, HugePageConfig::None).unwrap();
446-
guest_memory.iter().for_each(|region| {
447-
assert!(region.bitmap().is_none());
448-
});
449-
}
450-
451-
// Check dirty page tracking is on.
452-
{
453-
let region_size = 0x10000;
454-
let regions = vec![
455-
(GuestAddress(0x0), region_size),
456-
(GuestAddress(0x10000), region_size),
457-
(GuestAddress(0x20000), region_size),
458-
(GuestAddress(0x30000), region_size),
459-
];
460-
461-
let guest_memory =
462-
GuestMemoryMmap::from_raw_regions(&regions, true, HugePageConfig::None).unwrap();
443+
let guest_memory = GuestMemoryMmap::from_raw_regions(
444+
&regions,
445+
dirty_page_tracking,
446+
HugePageConfig::None,
447+
)
448+
.unwrap();
463449
guest_memory.iter().for_each(|region| {
464-
assert!(region.bitmap().is_some());
450+
assert_eq!(region.bitmap().is_some(), dirty_page_tracking);
465451
});
466452
}
467453
}
@@ -497,32 +483,13 @@ mod tests {
497483
),
498484
];
499485

500-
// Test that all regions are guarded.
501-
{
486+
for dirty_page_tracking in [true, false] {
502487
let guest_memory =
503488
GuestMemoryMmap::from_raw_regions_file(regions.clone(), false, false).unwrap();
504489
guest_memory.iter().for_each(|region| {
505490
assert_eq!(region.size(), region_size);
506491
assert!(region.file_offset().is_some());
507-
assert!(region.bitmap().is_none());
508-
});
509-
}
510-
511-
// Check dirty page tracking is off.
512-
{
513-
let guest_memory =
514-
GuestMemoryMmap::from_raw_regions_file(regions.clone(), false, false).unwrap();
515-
guest_memory.iter().for_each(|region| {
516-
assert!(region.bitmap().is_none());
517-
});
518-
}
519-
520-
// Check dirty page tracking is on.
521-
{
522-
let guest_memory =
523-
GuestMemoryMmap::from_raw_regions_file(regions, true, false).unwrap();
524-
guest_memory.iter().for_each(|region| {
525-
assert!(region.bitmap().is_some());
492+
assert_eq!(region.bitmap().is_some(), dirty_page_tracking);
526493
});
527494
}
528495
}

0 commit comments

Comments
 (0)