Skip to content

Commit

Permalink
dragonball: Trigger unit tests of dbs_* subcrates by make test
Browse files Browse the repository at this point in the history
`make SUPPORT_VIRTUALIZATION=1 test` iterates through all subcrates and
does test.

Plus, this patch fixes some issues about unit tests:

- Feed too much parameters to `I8042Device::new()`.
- Virtqueue checks have been introduced since `virtio-queue v0.7.0`.

Fixes: #8690

Signed-off-by: Xuewei Niu <niuxuewei.nxw@antgroup.com>
  • Loading branch information
justxuewei committed Dec 19, 2023
1 parent 0f80dc6 commit 89d46b6
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 14 deletions.
7 changes: 6 additions & 1 deletion src/dragonball/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

include ../../utils.mk

PROJECT_DIRS := $(shell find . -name Cargo.toml -printf '%h\n' | sort -u)

ifeq ($(ARCH), s390x)
default build check test clippy:
@echo "s390x not support currently"
Expand Down Expand Up @@ -40,7 +42,10 @@ clean:

test:
ifdef SUPPORT_VIRTUALIZATION
RUST_BACKTRACE=1 cargo test --all-features --target $(TRIPLE) -- --nocapture --test-threads=1
@set -e; \
for dir in $(PROJECT_DIRS); do \
bash -c "pushd $${dir} && RUST_BACKTRACE=1 cargo test --all-features --target $(TRIPLE) -- --nocapture --test-threads=1 && popd"; \
done
else
@echo "INFO: skip testing dragonball, it need virtualization support."
exit 0
Expand Down
6 changes: 3 additions & 3 deletions src/dragonball/src/dbs_legacy_devices/src/i8042.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ mod tests {
fn test_i8042_valid_ops() {
let reset_evt = EventFdTrigger::new(EventFd::new(libc::EFD_NONBLOCK).unwrap());
let metrics = Arc::new(I8042DeviceMetrics::default());
let mut i8042 = I8042Device::new(reset_evt.try_clone().unwrap(), metrics);
let mut i8042 = I8042Device::new(reset_evt.try_clone().unwrap());

let mut v = [0x00u8; 1];
i8042.pio_read(PioAddress(0), PioAddress(0), &mut v);
Expand All @@ -107,7 +107,7 @@ mod tests {
fn test_i8042_invalid_ops() {
let reset_evt = EventFdTrigger::new(EventFd::new(libc::EFD_NONBLOCK).unwrap());
let metrics = Arc::new(I8042DeviceMetrics::default());
let mut i8042 = I8042Device::new(reset_evt.try_clone().unwrap(), metrics);
let mut i8042 = I8042Device::new(reset_evt.try_clone().unwrap());

let mut v = [0x00u8; 2];
i8042.pio_read(PioAddress(0), PioAddress(0), &mut v);
Expand All @@ -128,7 +128,7 @@ mod tests {
fn test_i8042_reset_err() {
let reset_evt = EventFdTrigger::new(unsafe { EventFd::from_raw_fd(i32::MAX) });
let metrics = Arc::new(I8042DeviceMetrics::default());
let mut i8042 = I8042Device::new(reset_evt, metrics);
let mut i8042 = I8042Device::new(reset_evt);
i8042.pio_write(
PioAddress(0),
PioAddress(COMMAND_OFFSET as u16),
Expand Down
31 changes: 21 additions & 10 deletions src/dragonball/src/dbs_virtio_devices/src/device.rs
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,7 @@ pub(crate) mod tests {
use vm_memory::{GuestMemoryAtomic, GuestMemoryMmap, GuestMemoryRegion, MmapRegion};

use super::*;
use crate::{VIRTIO_INTR_CONFIG, VIRTIO_INTR_VRING};
use crate::{VIRTIO_INTR_CONFIG, VIRTIO_INTR_VRING, tests::VirtQueue};

pub fn create_virtio_device_config() -> VirtioDeviceConfig<Arc<GuestMemoryMmap>> {
let (vmfd, irq_manager) = crate::tests::create_vm_and_irq_manager();
Expand Down Expand Up @@ -625,11 +625,17 @@ pub(crate) mod tests {
let status = Arc::new(InterruptStatusRegister32::new());
let notifier = Arc::new(LegacyNotifier::new(group, status, VIRTIO_INTR_VRING));

let mut cfg = VirtioQueueConfig::<QueueSync>::create(1024, 1).unwrap();
cfg.set_interrupt_notifier(notifier);

let mem =
Arc::new(GuestMemoryMmap::<()>::from_ranges(&[(GuestAddress(0), 0x10000)]).unwrap());
Arc::new(GuestMemoryMmap::<()>::from_ranges(&[(GuestAddress(0), 0x10000)]).unwrap());
let vq = VirtQueue::new(GuestAddress(0), &mem, 1024);
let q = vq.create_queue();
let mut cfg = VirtioQueueConfig::new(
q,
Arc::new(EventFd::new(EFD_NONBLOCK).unwrap()),
notifier,
1,
);

let desc = cfg.get_next_descriptor(mem.memory()).unwrap();
assert!(matches!(desc, None));

Expand All @@ -650,12 +656,17 @@ pub(crate) mod tests {
let status = Arc::new(InterruptStatusRegister32::new());
let notifier = Arc::new(LegacyNotifier::new(group, status, VIRTIO_INTR_VRING));

let mut cfg = VirtioQueueConfig::<QueueSync>::create(1024, 1).unwrap();
cfg.set_interrupt_notifier(notifier);
let mut cfg = cfg.clone();

let mem =
Arc::new(GuestMemoryMmap::<()>::from_ranges(&[(GuestAddress(0), 0x10000)]).unwrap());
Arc::new(GuestMemoryMmap::<()>::from_ranges(&[(GuestAddress(0), 0x10000)]).unwrap());
let vq = VirtQueue::new(GuestAddress(0), &mem, 1024);
let q = vq.create_queue();
let mut cfg = VirtioQueueConfig::new(
q,
Arc::new(EventFd::new(EFD_NONBLOCK).unwrap()),
notifier,
1,
);

let desc = cfg.get_next_descriptor(mem.memory()).unwrap();
assert!(matches!(desc, None));

Expand Down

0 comments on commit 89d46b6

Please sign in to comment.