feat: wire bucket identities through driver outputs
This commit is contained in:
@@ -91,11 +91,24 @@ mod tests {
|
||||
q.schedule(
|
||||
2.0,
|
||||
Event::BatchTick {
|
||||
bucket: 0,
|
||||
instance: 0 as InstanceId,
|
||||
},
|
||||
);
|
||||
q.schedule(1.0, Event::BatchTick { instance: 1 });
|
||||
q.schedule(1.5, Event::BatchTick { instance: 2 });
|
||||
q.schedule(
|
||||
1.0,
|
||||
Event::BatchTick {
|
||||
bucket: 0,
|
||||
instance: 1,
|
||||
},
|
||||
);
|
||||
q.schedule(
|
||||
1.5,
|
||||
Event::BatchTick {
|
||||
bucket: 0,
|
||||
instance: 2,
|
||||
},
|
||||
);
|
||||
let (t1, _) = q.pop().unwrap();
|
||||
let (t2, _) = q.pop().unwrap();
|
||||
let (t3, _) = q.pop().unwrap();
|
||||
@@ -107,12 +120,24 @@ mod tests {
|
||||
#[test]
|
||||
fn equal_time_fifo() {
|
||||
let mut q = EventQueue::new();
|
||||
q.schedule(1.0, Event::BatchTick { instance: 7 });
|
||||
q.schedule(1.0, Event::BatchTick { instance: 8 });
|
||||
q.schedule(
|
||||
1.0,
|
||||
Event::BatchTick {
|
||||
bucket: 0,
|
||||
instance: 7,
|
||||
},
|
||||
);
|
||||
q.schedule(
|
||||
1.0,
|
||||
Event::BatchTick {
|
||||
bucket: 1,
|
||||
instance: 8,
|
||||
},
|
||||
);
|
||||
let (_, e1) = q.pop().unwrap();
|
||||
let (_, e2) = q.pop().unwrap();
|
||||
match (e1, e2) {
|
||||
(Event::BatchTick { instance: a }, Event::BatchTick { instance: b }) => {
|
||||
(Event::BatchTick { instance: a, .. }, Event::BatchTick { instance: b, .. }) => {
|
||||
assert_eq!(a, 7);
|
||||
assert_eq!(b, 8);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
//! Event types for the discrete-event engine.
|
||||
|
||||
use crate::router::BucketId;
|
||||
use crate::types::{InstanceId, ReqId};
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -7,7 +8,10 @@ pub enum Event {
|
||||
/// New trace request arrives at the cluster router.
|
||||
Arrival { req_id: ReqId },
|
||||
/// Per-instance scheduler tick (continuous batching).
|
||||
BatchTick { instance: InstanceId },
|
||||
BatchTick {
|
||||
bucket: BucketId,
|
||||
instance: InstanceId,
|
||||
},
|
||||
/// Periodic time-series sample of all instances.
|
||||
Sample,
|
||||
/// Stop the simulation early (used internally).
|
||||
|
||||
Reference in New Issue
Block a user