libs/kaptan-tx: cover critical frame admission
This commit is contained in:
1 parent
b985874240
commit
cb447bc057
1 file changed
+55
@@ -176,6 +176,61 @@ mod tests {
|
|||||||
assert_eq!(queue.complete().unwrap().frame, 1);
|
assert_eq!(queue.complete().unwrap().frame, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn critical_frame_displaces_pending_best_effort_traffic() {
|
||||||
|
let mut queue = TransmitQueue::<u8, 2>::new();
|
||||||
|
queue.enqueue(PendingFrame {
|
||||||
|
class: FrameClass::BestEffort,
|
||||||
|
frame: 1,
|
||||||
|
});
|
||||||
|
queue.start_with(|_| Ok::<_, ()>(())).unwrap();
|
||||||
|
queue.enqueue(PendingFrame {
|
||||||
|
class: FrameClass::BestEffort,
|
||||||
|
frame: 2,
|
||||||
|
});
|
||||||
|
queue.enqueue(PendingFrame {
|
||||||
|
class: FrameClass::BestEffort,
|
||||||
|
frame: 3,
|
||||||
|
});
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
queue.enqueue(PendingFrame {
|
||||||
|
class: FrameClass::Critical,
|
||||||
|
frame: 4,
|
||||||
|
}),
|
||||||
|
EnqueueResult::ReplacedBestEffort
|
||||||
|
);
|
||||||
|
queue.complete();
|
||||||
|
assert_eq!(
|
||||||
|
queue.start_with(|frame| {
|
||||||
|
assert_eq!(*frame, 4);
|
||||||
|
Ok::<_, ()>(())
|
||||||
|
}),
|
||||||
|
Ok(StartOutcome::Started)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn critical_admission_reports_when_only_critical_frames_are_pending() {
|
||||||
|
let mut queue = TransmitQueue::<u8, 2>::new();
|
||||||
|
queue.enqueue(PendingFrame {
|
||||||
|
class: FrameClass::Critical,
|
||||||
|
frame: 1,
|
||||||
|
});
|
||||||
|
queue.enqueue(PendingFrame {
|
||||||
|
class: FrameClass::Critical,
|
||||||
|
frame: 2,
|
||||||
|
});
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
queue.enqueue(PendingFrame {
|
||||||
|
class: FrameClass::Critical,
|
||||||
|
frame: 3,
|
||||||
|
}),
|
||||||
|
EnqueueResult::CriticalQueueFull
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn rejects_start_without_claiming_active_ownership() {
|
fn rejects_start_without_claiming_active_ownership() {
|
||||||
let mut queue = TransmitQueue::<u8, 1>::new();
|
let mut queue = TransmitQueue::<u8, 1>::new();
|
||||||
|
|||||||
Reference in new issue
Block a user