Skip to content

Commit c334aa8

Browse files
committed
Fix tests for static allocations
1 parent 999068a commit c334aa8

File tree

3 files changed

+26
-30
lines changed

3 files changed

+26
-30
lines changed

mythril/src/virtdev/mod.rs

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -497,10 +497,8 @@ mod test {
497497
}
498498

499499
impl DummyDevice {
500-
fn new(
501-
services: Vec<RangeInclusive<Port>>,
502-
) -> Arc<RwLock<dyn EmulatedDevice>> {
503-
Arc::new(RwLock::new(Self { services }))
500+
fn new(services: Vec<RangeInclusive<Port>>) -> Self {
501+
Self { services }
504502
}
505503
}
506504

@@ -516,8 +514,8 @@ mod test {
516514
#[test]
517515
fn test_device_map() {
518516
let mut map = DeviceMap::default();
519-
let com = Uart8250::new(0);
520-
map.register_device(com).unwrap();
517+
let com = RwLock::new(Uart8250::new(0).unwrap());
518+
map.register_device(&com).unwrap();
521519
let _dev = map.find_device(0u16).unwrap();
522520

523521
assert_eq!(map.find_device(10u16).is_none(), true);
@@ -552,62 +550,62 @@ mod test {
552550
#[test]
553551
fn test_conflicting_portio_device() {
554552
let mut map = DeviceMap::default();
555-
let com = Uart8250::new(0);
556-
map.register_device(com).unwrap();
557-
let com = Uart8250::new(0);
553+
let com = RwLock::new(Uart8250::new(0).unwrap());
554+
map.register_device(&com).unwrap();
555+
let com = RwLock::new(Uart8250::new(0).unwrap());
558556

559-
assert!(map.register_device(com).is_err());
557+
assert!(map.register_device(&com).is_err());
560558
}
561559

562560
#[test]
563561
fn test_fully_overlapping_portio_device() {
564562
// region 2 fully inside region 1
565563
let services = vec![0..=10, 2..=8];
566-
let dummy = DummyDevice::new(services);
564+
let dummy = RwLock::new(DummyDevice::new(services));
567565
let mut map = DeviceMap::default();
568566

569-
assert!(map.register_device(dummy).is_err());
567+
assert!(map.register_device(&dummy).is_err());
570568
}
571569

572570
#[test]
573571
fn test_fully_encompassing_portio_device() {
574572
// region 1 fully inside region 2
575573
let services = vec![2..=8, 0..=10];
576-
let dummy = DummyDevice::new(services);
574+
let dummy = RwLock::new(DummyDevice::new(services));
577575
let mut map = DeviceMap::default();
578576

579-
assert!(map.register_device(dummy).is_err());
577+
assert!(map.register_device(&dummy).is_err());
580578
}
581579

582580
#[test]
583581
fn test_partially_overlapping_tail_portio_device() {
584582
// region 1 and region 2 partially overlap at the tail of region 1 and
585583
// the start of region 2
586584
let services = vec![0..=4, 3..=8];
587-
let dummy = DummyDevice::new(services);
585+
let dummy = RwLock::new(DummyDevice::new(services));
588586
let mut map = DeviceMap::default();
589587

590-
assert!(map.register_device(dummy).is_err());
588+
assert!(map.register_device(&dummy).is_err());
591589
}
592590

593591
#[test]
594592
fn test_partially_overlapping_head_portio_device() {
595593
// region 1 and region 2 partially overlap at the start of region 1 and
596594
// the tail of region 2
597595
let services = vec![3..=8, 0..=4];
598-
let dummy = DummyDevice::new(services);
596+
let dummy = RwLock::new(DummyDevice::new(services));
599597
let mut map = DeviceMap::default();
600598

601-
assert!(map.register_device(dummy).is_err());
599+
assert!(map.register_device(&dummy).is_err());
602600
}
603601

604602
#[test]
605603
fn test_non_overlapping_portio_device() {
606604
// region 1 and region 2 don't overlap
607605
let services = vec![0..=3, 4..=8];
608-
let dummy = DummyDevice::new(services);
606+
let dummy = RwLock::new(DummyDevice::new(services));
609607
let mut map = DeviceMap::default();
610608

611-
assert!(map.register_device(dummy).is_ok());
609+
assert!(map.register_device(&dummy).is_ok());
612610
}
613611
}

mythril/src/virtdev/pci.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ mod test {
275275

276276
fn complex_ready_for_reg_read(reg: u8) -> PciRootComplex {
277277
let view = define_test_view();
278-
let complex = PciRootComplex::new().unwrap();
278+
let mut complex = PciRootComplex::new().unwrap();
279279
let addr = ((reg << 2) as u32).to_be_bytes();
280280
let request = PortWriteRequest::try_from(&addr[..]).unwrap();
281281
let mut responses = ResponseEventArray::default();
@@ -292,11 +292,10 @@ mod test {
292292
#[test]
293293
fn test_full_register_read() {
294294
let view = define_test_view();
295-
let complex = complex_ready_for_reg_read(0);
295+
let mut complex = complex_ready_for_reg_read(0);
296296
let mut buff = [0u8; 4];
297297
let val = PortReadRequest::FourBytes(&mut buff);
298298
let mut responses = ResponseEventArray::default();
299-
let mut complex = complex.write();
300299
let event = Event::new(
301300
DeviceEvent::PortRead(PciRootComplex::PCI_CONFIG_DATA, val),
302301
view,
@@ -311,11 +310,10 @@ mod test {
311310
#[test]
312311
fn test_half_register_read() {
313312
let view = define_test_view();
314-
let complex = complex_ready_for_reg_read(0);
313+
let mut complex = complex_ready_for_reg_read(0);
315314
let mut buff = [0u8; 2];
316315
let val = PortReadRequest::TwoBytes(&mut buff);
317316
let mut responses = ResponseEventArray::default();
318-
let mut complex = complex.write();
319317
let event = Event::new(
320318
DeviceEvent::PortRead(PciRootComplex::PCI_CONFIG_DATA, val),
321319
view,
@@ -339,10 +337,9 @@ mod test {
339337

340338
#[test]
341339
fn test_register_byte_read() {
342-
let complex = complex_ready_for_reg_read(0);
340+
let mut complex = complex_ready_for_reg_read(0);
343341
let mut buff = [0u8; 1];
344342
let mut responses = ResponseEventArray::default();
345-
let mut complex = complex.write();
346343

347344
let view = define_test_view();
348345
let val = PortReadRequest::OneByte(&mut buff);

mythril/src/vm.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -709,14 +709,15 @@ mod test {
709709
#[test]
710710
fn test_vm_creation() {
711711
let info = BootInfo::default();
712-
let phys_config = PhysicalDeviceConfig::default();
712+
let host_devices = HostPhysicalDevices::default();
713713

714714
let config = VirtualMachineConfig::new(
715715
&[percore::CoreId::from(1)],
716-
0,
717-
phys_config,
716+
32,
717+
host_devices,
718718
)
719719
.unwrap();
720+
720721
VirtualMachine::new(0, config, &info).unwrap();
721722
}
722723
}

0 commit comments

Comments
 (0)