Skip to content

Commit deb90ab

Browse files
[mmap]: Derive PartialEq for Error enum
Derive PartialEq and update tests to check for equality on error cases. Signed-off-by: Alexandru Cihodaru <[email protected]>
1 parent 3ca41ec commit deb90ab

File tree

1 file changed

+53
-104
lines changed

1 file changed

+53
-104
lines changed

src/mmap.rs

+53-104
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ pub(crate) trait AsSlice {
6969
}
7070

7171
/// Errors that can occur when creating a memory map.
72-
#[derive(Debug)]
72+
#[derive(Debug, PartialEq)]
7373
pub enum Error {
7474
/// Adding the guest base address to the length of the underlying mapping resulted
7575
/// in an overflow.
@@ -770,43 +770,21 @@ mod tests {
770770
#[test]
771771
fn test_no_memory_region() {
772772
let regions_summary = [];
773-
774773
assert_eq!(
775-
format!(
776-
"{:?}",
777-
new_guest_memory_mmap(&regions_summary).err().unwrap()
778-
),
779-
format!("{:?}", Error::NoMemoryRegion)
774+
new_guest_memory_mmap(&regions_summary).unwrap_err(),
775+
Error::NoMemoryRegion
780776
);
781-
782777
assert_eq!(
783-
format!(
784-
"{:?}",
785-
new_guest_memory_mmap_with_files(&regions_summary)
786-
.err()
787-
.unwrap()
788-
),
789-
format!("{:?}", Error::NoMemoryRegion)
778+
new_guest_memory_mmap_with_files(&regions_summary).unwrap_err(),
779+
Error::NoMemoryRegion
790780
);
791-
792781
assert_eq!(
793-
format!(
794-
"{:?}",
795-
new_guest_memory_mmap_from_regions(&regions_summary)
796-
.err()
797-
.unwrap()
798-
),
799-
format!("{:?}", Error::NoMemoryRegion)
782+
new_guest_memory_mmap_from_regions(&regions_summary).unwrap_err(),
783+
Error::NoMemoryRegion
800784
);
801-
802785
assert_eq!(
803-
format!(
804-
"{:?}",
805-
new_guest_memory_mmap_from_arc_regions(&regions_summary)
806-
.err()
807-
.unwrap()
808-
),
809-
format!("{:?}", Error::NoMemoryRegion)
786+
new_guest_memory_mmap_from_arc_regions(&regions_summary).unwrap_err(),
787+
Error::NoMemoryRegion
810788
);
811789
}
812790

@@ -818,41 +796,20 @@ mod tests {
818796
];
819797

820798
assert_eq!(
821-
format!(
822-
"{:?}",
823-
new_guest_memory_mmap(&regions_summary).err().unwrap()
824-
),
825-
format!("{:?}", Error::MemoryRegionOverlap)
799+
new_guest_memory_mmap(&regions_summary).unwrap_err(),
800+
Error::MemoryRegionOverlap
826801
);
827-
828802
assert_eq!(
829-
format!(
830-
"{:?}",
831-
new_guest_memory_mmap_with_files(&regions_summary)
832-
.err()
833-
.unwrap()
834-
),
835-
format!("{:?}", Error::MemoryRegionOverlap)
803+
new_guest_memory_mmap_with_files(&regions_summary).unwrap_err(),
804+
Error::MemoryRegionOverlap
836805
);
837-
838806
assert_eq!(
839-
format!(
840-
"{:?}",
841-
new_guest_memory_mmap_from_regions(&regions_summary)
842-
.err()
843-
.unwrap()
844-
),
845-
format!("{:?}", Error::MemoryRegionOverlap)
807+
new_guest_memory_mmap_from_regions(&regions_summary).unwrap_err(),
808+
Error::MemoryRegionOverlap
846809
);
847-
848810
assert_eq!(
849-
format!(
850-
"{:?}",
851-
new_guest_memory_mmap_from_arc_regions(&regions_summary)
852-
.err()
853-
.unwrap()
854-
),
855-
format!("{:?}", Error::MemoryRegionOverlap)
811+
new_guest_memory_mmap_from_arc_regions(&regions_summary).unwrap_err(),
812+
Error::MemoryRegionOverlap
856813
);
857814
}
858815

@@ -862,43 +819,21 @@ mod tests {
862819
(GuestAddress(100), 100 as usize),
863820
(GuestAddress(0), 100 as usize),
864821
];
865-
866822
assert_eq!(
867-
format!(
868-
"{:?}",
869-
new_guest_memory_mmap(&regions_summary).err().unwrap()
870-
),
871-
format!("{:?}", Error::UnsortedMemoryRegions)
823+
new_guest_memory_mmap(&regions_summary).unwrap_err(),
824+
Error::UnsortedMemoryRegions
872825
);
873-
874826
assert_eq!(
875-
format!(
876-
"{:?}",
877-
new_guest_memory_mmap_with_files(&regions_summary)
878-
.err()
879-
.unwrap()
880-
),
881-
format!("{:?}", Error::UnsortedMemoryRegions)
827+
new_guest_memory_mmap_with_files(&regions_summary).unwrap_err(),
828+
Error::UnsortedMemoryRegions
882829
);
883-
884830
assert_eq!(
885-
format!(
886-
"{:?}",
887-
new_guest_memory_mmap_from_regions(&regions_summary)
888-
.err()
889-
.unwrap()
890-
),
891-
format!("{:?}", Error::UnsortedMemoryRegions)
831+
new_guest_memory_mmap_from_regions(&regions_summary).unwrap_err(),
832+
Error::UnsortedMemoryRegions
892833
);
893-
894834
assert_eq!(
895-
format!(
896-
"{:?}",
897-
new_guest_memory_mmap_from_arc_regions(&regions_summary)
898-
.err()
899-
.unwrap()
900-
),
901-
format!("{:?}", Error::UnsortedMemoryRegions)
835+
new_guest_memory_mmap_from_arc_regions(&regions_summary).unwrap_err(),
836+
Error::UnsortedMemoryRegions
902837
);
903838
}
904839

@@ -1058,7 +993,10 @@ mod tests {
1058993

1059994
let guest_mem_list = vec![guest_mem, guest_mem_backed_by_file];
1060995
for guest_mem in guest_mem_list.iter() {
1061-
assert!(guest_mem.get_host_address(GuestAddress(0x600)).is_err());
996+
assert_eq!(
997+
guest_mem.get_host_address(GuestAddress(0x600)).unwrap_err(),
998+
guest_memory::Error::InvalidGuestAddress(GuestAddress(0x600))
999+
);
10621000
let ptr0 = guest_mem.get_host_address(GuestAddress(0x800)).unwrap();
10631001
let ptr1 = guest_mem.get_host_address(GuestAddress(0xa00)).unwrap();
10641002
assert_eq!(
@@ -1126,18 +1064,16 @@ mod tests {
11261064
let val1: u64 = 0xaa55_aa55_aa55_aa55;
11271065
let val2: u64 = 0x55aa_55aa_55aa_55aa;
11281066
assert_eq!(
1129-
format!("{:?}", gm.write_obj(val1, bad_addr).err().unwrap()),
1130-
format!("InvalidGuestAddress({:?})", bad_addr,)
1067+
gm.write_obj(val1, bad_addr).unwrap_err(),
1068+
guest_memory::Error::InvalidGuestAddress(bad_addr)
11311069
);
11321070
assert_eq!(
1133-
format!("{:?}", gm.write_obj(val1, bad_addr2).err().unwrap()),
1134-
format!(
1135-
"PartialBuffer {{ expected: {:?}, completed: {:?} }}",
1136-
mem::size_of::<u64>(),
1137-
max_addr.checked_offset_from(bad_addr2).unwrap()
1138-
)
1071+
gm.write_obj(val1, bad_addr2).unwrap_err(),
1072+
guest_memory::Error::PartialBuffer {
1073+
expected: mem::size_of::<u64>(),
1074+
completed: max_addr.checked_offset_from(bad_addr2).unwrap() as usize
1075+
}
11391076
);
1140-
11411077
gm.write_obj(val1, GuestAddress(0x500)).unwrap();
11421078
gm.write_obj(val2, GuestAddress(0x1000 + 32)).unwrap();
11431079
let num1: u64 = gm.read_obj(GuestAddress(0x500)).unwrap();
@@ -1439,7 +1375,11 @@ mod tests {
14391375
// Error case when slice_size is beyond the boundary.
14401376
let slice_addr = MemoryRegionAddress(0x300);
14411377
let slice_size = 0x200;
1442-
assert!(region.get_slice(slice_addr, slice_size).is_err());
1378+
1379+
assert_eq!(
1380+
region.get_slice(slice_addr, slice_size).unwrap_err(),
1381+
guest_memory::Error::InvalidBackendAddress
1382+
);
14431383
}
14441384

14451385
#[test]
@@ -1487,9 +1427,18 @@ mod tests {
14871427
.is_empty());
14881428

14891429
// Error cases, wrong size or base address.
1490-
assert!(guest_mem.get_slice(GuestAddress(0), 0x500).is_err());
1491-
assert!(guest_mem.get_slice(GuestAddress(0x600), 0x100).is_err());
1492-
assert!(guest_mem.get_slice(GuestAddress(0xc00), 0x100).is_err());
1430+
assert_eq!(
1431+
guest_mem.get_slice(GuestAddress(0), 0x500).unwrap_err(),
1432+
guest_memory::Error::InvalidBackendAddress
1433+
);
1434+
assert_eq!(
1435+
guest_mem.get_slice(GuestAddress(0x600), 0x100).unwrap_err(),
1436+
guest_memory::Error::InvalidGuestAddress(GuestAddress(0x600))
1437+
);
1438+
assert_eq!(
1439+
guest_mem.get_slice(GuestAddress(0xc00), 0x100).unwrap_err(),
1440+
guest_memory::Error::InvalidGuestAddress(GuestAddress(0xc00))
1441+
);
14931442
}
14941443

14951444
#[test]

0 commit comments

Comments
 (0)