Skip to content

Commit 2b740c0

Browse files
committed
Add tests for IOMMU functionality
This commit also adds the iommu feature to the coverage_config feature list. Signed-off-by: Hanna Czenczek <[email protected]>
1 parent 460f4da commit 2b740c0

File tree

5 files changed

+832
-2
lines changed

5 files changed

+832
-2
lines changed

coverage_config_aarch64.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"coverage_score": 85.2,
33
"exclude_path": "mmap/windows.rs",
4-
"crate_features": "backend-mmap,backend-atomic,backend-bitmap"
4+
"crate_features": "backend-mmap,backend-atomic,backend-bitmap,iommu"
55
}

coverage_config_x86_64.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"coverage_score": 91.78,
33
"exclude_path": "mmap_windows.rs",
4-
"crate_features": "backend-mmap,backend-atomic,backend-bitmap"
4+
"crate_features": "backend-mmap,backend-atomic,backend-bitmap,iommu"
55
}

src/io_memory.rs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,54 @@ impl<M: GuestMemory> IoMemory for M {
181181
Some(self)
182182
}
183183
}
184+
185+
#[cfg(test)]
186+
mod tests {
187+
use super::Permissions;
188+
189+
// Note that `IoMemory` is tested primarily in src/iommu.rs via `IommuMemory`.
190+
191+
/// Test `Permissions & Permissions`.
192+
#[test]
193+
fn test_perm_and() {
194+
use Permissions::*;
195+
196+
for p in [No, Read, Write, ReadWrite] {
197+
assert_eq!(p & p, p);
198+
}
199+
for p1 in [No, Read, Write, ReadWrite] {
200+
for p2 in [No, Read, Write, ReadWrite] {
201+
assert_eq!(p1 & p2, p2 & p1);
202+
}
203+
}
204+
for p in [No, Read, Write, ReadWrite] {
205+
assert_eq!(No & p, No);
206+
}
207+
for p in [No, Read, Write, ReadWrite] {
208+
assert_eq!(ReadWrite & p, p);
209+
}
210+
assert_eq!(Read & Write, No);
211+
}
212+
213+
/// Test `Permissions | Permissions`.
214+
#[test]
215+
fn test_perm_or() {
216+
use Permissions::*;
217+
218+
for p in [No, Read, Write, ReadWrite] {
219+
assert_eq!(p | p, p);
220+
}
221+
for p1 in [No, Read, Write, ReadWrite] {
222+
for p2 in [No, Read, Write, ReadWrite] {
223+
assert_eq!(p1 | p2, p2 | p1);
224+
}
225+
}
226+
for p in [No, Read, Write, ReadWrite] {
227+
assert_eq!(No | p, p);
228+
}
229+
for p in [No, Read, Write, ReadWrite] {
230+
assert_eq!(ReadWrite | p, ReadWrite);
231+
}
232+
assert_eq!(Read | Write, ReadWrite);
233+
}
234+
}

0 commit comments

Comments
 (0)