rocketmq_protocol/protocol/
header_facade.rs1use std::time::SystemTime;
10use std::time::UNIX_EPOCH;
11
12use crate::protocol::header::controller::elect_master_request_header::ElectMasterRequestHeader;
13
14pub fn default_elect_master_request_header() -> ElectMasterRequestHeader {
15 ElectMasterRequestHeader::new("", "", 0, false, current_millis() as u64)
16}
17
18fn current_millis() -> i64 {
19 SystemTime::now()
20 .duration_since(UNIX_EPOCH)
21 .map(|duration| duration.as_millis() as i64)
22 .unwrap_or(0)
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 fn now_millis() -> u64 {
30 SystemTime::now()
31 .duration_since(UNIX_EPOCH)
32 .expect("system time should be later than the unix epoch")
33 .as_millis() as u64
34 }
35
36 #[test]
37 fn default_elect_master_request_header_matches_production_defaults() {
38 let header = default_elect_master_request_header();
39
40 assert_eq!(header.cluster_name, "");
41 assert_eq!(header.broker_name, "");
42 assert_eq!(header.broker_id, 0);
43 assert!(!header.designate_elect);
44 }
45
46 #[test]
47 fn default_elect_master_request_header_uses_wall_clock_invoke_time() {
48 let before = now_millis();
49 let header = default_elect_master_request_header();
50
51 assert!(header.invoke_time > 0);
52 assert!(header.invoke_time >= before);
53 }
54}