Skip to content

Commit 94c29c4

Browse files
committed
sound: test backend with and without event_idx
This increases test coverage. Signed-off-by: Manos Pitsidianakis <[email protected]>
1 parent ce2d630 commit 94c29c4

File tree

1 file changed

+59
-57
lines changed

1 file changed

+59
-57
lines changed

staging/vhost-device-sound/src/device.rs

Lines changed: 59 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,65 +1007,67 @@ mod tests {
10071007
assert_eq!(backend.max_queue_size(), 64);
10081008
assert_ne!(backend.features(), 0);
10091009
assert!(!backend.protocol_features().is_empty());
1010-
backend.set_event_idx(false);
1010+
for event_idx in [true, false] {
1011+
backend.set_event_idx(event_idx);
10111012

1012-
// Mock memory
1013-
let mem = GuestMemoryAtomic::new(
1014-
GuestMemoryMmap::<()>::from_ranges(&[(GuestAddress(0), 0x10000)]).unwrap(),
1015-
);
1016-
1017-
// Mock Vring for queues
1018-
let vrings = [
1019-
VringRwLock::new(mem.clone(), 0x1000).unwrap(),
1020-
VringRwLock::new(mem.clone(), 0x1000).unwrap(),
1021-
VringRwLock::new(mem.clone(), 0x1000).unwrap(),
1022-
VringRwLock::new(mem.clone(), 0x1000).unwrap(),
1023-
];
1024-
vrings[CONTROL_QUEUE_IDX as usize]
1025-
.set_queue_info(0x100, 0x200, 0x300)
1026-
.unwrap();
1027-
vrings[CONTROL_QUEUE_IDX as usize].set_queue_ready(true);
1028-
vrings[EVENT_QUEUE_IDX as usize]
1029-
.set_queue_info(0x100, 0x200, 0x300)
1030-
.unwrap();
1031-
vrings[EVENT_QUEUE_IDX as usize].set_queue_ready(true);
1032-
vrings[TX_QUEUE_IDX as usize]
1033-
.set_queue_info(0x1100, 0x1200, 0x1300)
1034-
.unwrap();
1035-
vrings[TX_QUEUE_IDX as usize].set_queue_ready(true);
1036-
vrings[RX_QUEUE_IDX as usize]
1037-
.set_queue_info(0x100, 0x200, 0x300)
1038-
.unwrap();
1039-
vrings[RX_QUEUE_IDX as usize].set_queue_ready(true);
1040-
1041-
backend.update_memory(mem).unwrap();
1042-
1043-
let queues_per_thread = backend.queues_per_thread();
1044-
assert_eq!(queues_per_thread.len(), 1);
1045-
assert_eq!(queues_per_thread[0], 0xf);
1046-
1047-
let config = backend.get_config(0, 8);
1048-
assert_eq!(config.len(), 8);
1049-
1050-
let exit = backend.exit_event(0);
1051-
assert!(exit.is_some());
1052-
exit.unwrap().write(1).unwrap();
1013+
// Mock memory
1014+
let mem = GuestMemoryAtomic::new(
1015+
GuestMemoryMmap::<()>::from_ranges(&[(GuestAddress(0), 0x10000)]).unwrap(),
1016+
);
10531017

1054-
backend
1055-
.handle_event(CONTROL_QUEUE_IDX, EventSet::IN, &vrings, 0)
1056-
.unwrap();
1057-
backend
1058-
.handle_event(EVENT_QUEUE_IDX, EventSet::IN, &vrings, 0)
1059-
.unwrap();
1060-
backend
1061-
.handle_event(TX_QUEUE_IDX, EventSet::IN, &vrings, 0)
1062-
.unwrap();
1063-
backend
1064-
.handle_event(RX_QUEUE_IDX, EventSet::IN, &vrings, 0)
1065-
.unwrap();
1066-
backend
1067-
.handle_event(RX_QUEUE_IDX * 2, EventSet::IN, &vrings, 0)
1068-
.unwrap_err();
1018+
// Mock Vring for queues
1019+
let vrings = [
1020+
VringRwLock::new(mem.clone(), 0x1000).unwrap(),
1021+
VringRwLock::new(mem.clone(), 0x1000).unwrap(),
1022+
VringRwLock::new(mem.clone(), 0x1000).unwrap(),
1023+
VringRwLock::new(mem.clone(), 0x1000).unwrap(),
1024+
];
1025+
vrings[CONTROL_QUEUE_IDX as usize]
1026+
.set_queue_info(0x100, 0x200, 0x300)
1027+
.unwrap();
1028+
vrings[CONTROL_QUEUE_IDX as usize].set_queue_ready(true);
1029+
vrings[EVENT_QUEUE_IDX as usize]
1030+
.set_queue_info(0x100, 0x200, 0x300)
1031+
.unwrap();
1032+
vrings[EVENT_QUEUE_IDX as usize].set_queue_ready(true);
1033+
vrings[TX_QUEUE_IDX as usize]
1034+
.set_queue_info(0x1100, 0x1200, 0x1300)
1035+
.unwrap();
1036+
vrings[TX_QUEUE_IDX as usize].set_queue_ready(true);
1037+
vrings[RX_QUEUE_IDX as usize]
1038+
.set_queue_info(0x100, 0x200, 0x300)
1039+
.unwrap();
1040+
vrings[RX_QUEUE_IDX as usize].set_queue_ready(true);
1041+
1042+
backend.update_memory(mem).unwrap();
1043+
1044+
let queues_per_thread = backend.queues_per_thread();
1045+
assert_eq!(queues_per_thread.len(), 1);
1046+
assert_eq!(queues_per_thread[0], 0xf);
1047+
1048+
let config = backend.get_config(0, 8);
1049+
assert_eq!(config.len(), 8);
1050+
1051+
let exit = backend.exit_event(0);
1052+
assert!(exit.is_some());
1053+
exit.unwrap().write(1).unwrap();
1054+
1055+
backend
1056+
.handle_event(CONTROL_QUEUE_IDX, EventSet::IN, &vrings, 0)
1057+
.unwrap();
1058+
backend
1059+
.handle_event(EVENT_QUEUE_IDX, EventSet::IN, &vrings, 0)
1060+
.unwrap();
1061+
backend
1062+
.handle_event(TX_QUEUE_IDX, EventSet::IN, &vrings, 0)
1063+
.unwrap();
1064+
backend
1065+
.handle_event(RX_QUEUE_IDX, EventSet::IN, &vrings, 0)
1066+
.unwrap();
1067+
backend
1068+
.handle_event(RX_QUEUE_IDX * 2, EventSet::IN, &vrings, 0)
1069+
.unwrap_err();
1070+
}
10691071

10701072
test_dir.close().unwrap();
10711073
}

0 commit comments

Comments
 (0)