swarm_engine_core/util/
time.rs1use std::time::{SystemTime, UNIX_EPOCH};
4
5#[inline]
9pub fn epoch_millis() -> u64 {
10 SystemTime::now()
11 .duration_since(UNIX_EPOCH)
12 .map(|d| d.as_millis() as u64)
13 .unwrap_or(0)
14}
15
16#[inline]
27pub fn epoch_millis_for_ordering() -> u64 {
28 epoch_millis()
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 #[test]
36 fn test_epoch_millis_returns_nonzero() {
37 let ts = epoch_millis();
38 assert!(ts > 0);
39 }
40
41 #[test]
42 fn test_epoch_millis_for_ordering_same_as_epoch_millis() {
43 let ts1 = epoch_millis();
44 let ts2 = epoch_millis_for_ordering();
45 assert!((ts1 as i64 - ts2 as i64).abs() < 100);
47 }
48
49 #[test]
50 fn test_epoch_millis_monotonic_in_short_term() {
51 let ts1 = epoch_millis();
52 let ts2 = epoch_millis();
53 assert!(ts2 >= ts1);
55 }
56}