in glean-core/src/event_database/mod.rs [900:962]
fn normalize_store_single_run_timestamp_math() {
// With a single run of events (no non-initial or non-terminal `glean.restarted`),
// ensure the timestamp math works.
// (( works = Initial event gets to be 0, subsequent events get normalized to that 0 ))
let (glean, _dir) = new_glean(None);
let store_name = "store-name";
let glean_restarted = StoredEvent {
event: RecordedEvent {
timestamp: 2,
category: "glean".into(),
name: "restarted".into(),
extra: None,
},
execution_counter: None,
};
let timestamps = [20, 40, 200];
let not_glean_restarted = StoredEvent {
event: RecordedEvent {
timestamp: timestamps[0],
category: "category".into(),
name: "name".into(),
extra: None,
},
execution_counter: None,
};
let mut store = vec![
glean_restarted.clone(),
not_glean_restarted.clone(),
StoredEvent {
event: RecordedEvent {
timestamp: timestamps[1],
..not_glean_restarted.event.clone()
},
execution_counter: None,
},
StoredEvent {
event: RecordedEvent {
timestamp: timestamps[2],
..not_glean_restarted.event.clone()
},
execution_counter: None,
},
glean_restarted,
];
glean
.event_storage()
.normalize_store(&glean, store_name, &mut store, glean.start_time());
assert_eq!(3, store.len());
for (timestamp, event) in timestamps.iter().zip(store.iter()) {
assert_eq!(
&StoredEvent {
event: RecordedEvent {
timestamp: timestamp - timestamps[0],
..not_glean_restarted.clone().event
},
execution_counter: None
},
event
);
}
}