rocketmq_remoting/protocol/header/controller/
register_broker_to_controller_response_header.rs1use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodecV2;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Clone, Debug, Serialize, Deserialize, Default, RequestHeaderCodecV2)]
21#[serde(rename_all = "camelCase")]
22pub struct RegisterBrokerToControllerResponseHeader {
23 pub cluster_name: Option<CheetahString>,
24 pub broker_name: Option<CheetahString>,
25 pub master_broker_id: Option<i64>,
26 pub master_address: Option<CheetahString>,
27 pub master_epoch: Option<i32>,
28 pub sync_state_set_epoch: Option<i32>,
29}
30
31#[cfg(test)]
32mod tests {
33 use std::collections::HashMap;
34
35 use super::*;
36 use crate::protocol::command_custom_header::CommandCustomHeader;
37 use crate::protocol::command_custom_header::FromMap;
38
39 #[test]
40 fn register_broker_to_controller_response_header_serializes_correctly() {
41 let header = RegisterBrokerToControllerResponseHeader {
42 cluster_name: Some(CheetahString::from_static_str("test_cluster")),
43 broker_name: Some(CheetahString::from_static_str("test_broker")),
44 master_broker_id: Some(123),
45 master_address: Some(CheetahString::from_static_str("127.0.0.1:10911")),
46 master_epoch: Some(5),
47 sync_state_set_epoch: Some(10),
48 };
49 let map = header.to_map().unwrap();
50 assert_eq!(
51 map.get(&CheetahString::from_static_str("clusterName")).unwrap(),
52 "test_cluster"
53 );
54 assert_eq!(
55 map.get(&CheetahString::from_static_str("brokerName")).unwrap(),
56 "test_broker"
57 );
58 assert_eq!(
59 map.get(&CheetahString::from_static_str("masterBrokerId")).unwrap(),
60 "123"
61 );
62 assert_eq!(
63 map.get(&CheetahString::from_static_str("masterAddress")).unwrap(),
64 "127.0.0.1:10911"
65 );
66 assert_eq!(map.get(&CheetahString::from_static_str("masterEpoch")).unwrap(), "5");
67 assert_eq!(
68 map.get(&CheetahString::from_static_str("syncStateSetEpoch")).unwrap(),
69 "10"
70 );
71 }
72
73 #[test]
74 fn register_broker_to_controller_response_header_deserializes_correctly() {
75 let mut map = HashMap::new();
76 map.insert(
77 CheetahString::from_static_str("clusterName"),
78 CheetahString::from_static_str("test_cluster"),
79 );
80 map.insert(
81 CheetahString::from_static_str("brokerName"),
82 CheetahString::from_static_str("test_broker"),
83 );
84 map.insert(
85 CheetahString::from_static_str("masterBrokerId"),
86 CheetahString::from_static_str("123"),
87 );
88 map.insert(
89 CheetahString::from_static_str("masterAddress"),
90 CheetahString::from_static_str("127.0.0.1:10911"),
91 );
92 map.insert(
93 CheetahString::from_static_str("masterEpoch"),
94 CheetahString::from_static_str("5"),
95 );
96 map.insert(
97 CheetahString::from_static_str("syncStateSetEpoch"),
98 CheetahString::from_static_str("10"),
99 );
100
101 let header = <RegisterBrokerToControllerResponseHeader as FromMap>::from(&map).unwrap();
102 assert_eq!(
103 header.cluster_name,
104 Some(CheetahString::from_static_str("test_cluster"))
105 );
106 assert_eq!(header.broker_name, Some(CheetahString::from_static_str("test_broker")));
107 assert_eq!(header.master_broker_id, Some(123));
108 assert_eq!(
109 header.master_address,
110 Some(CheetahString::from_static_str("127.0.0.1:10911"))
111 );
112 assert_eq!(header.master_epoch, Some(5));
113 assert_eq!(header.sync_state_set_epoch, Some(10));
114 }
115
116 #[test]
117 fn register_broker_to_controller_response_header_default() {
118 let header = RegisterBrokerToControllerResponseHeader::default();
119 assert_eq!(header.cluster_name, None);
120 assert_eq!(header.broker_name, None);
121 assert_eq!(header.master_broker_id, None);
122 assert_eq!(header.master_address, None);
123 assert_eq!(header.master_epoch, None);
124 assert_eq!(header.sync_state_set_epoch, None);
125 }
126
127 #[test]
128 fn register_broker_to_controller_response_header_clone() {
129 let header = RegisterBrokerToControllerResponseHeader {
130 cluster_name: Some(CheetahString::from_static_str("test_cluster")),
131 broker_name: Some(CheetahString::from_static_str("test_broker")),
132 master_broker_id: Some(123),
133 master_address: Some(CheetahString::from_static_str("127.0.0.1:10911")),
134 master_epoch: Some(5),
135 sync_state_set_epoch: Some(10),
136 };
137 let cloned = header.clone();
138 assert_eq!(header.cluster_name, cloned.cluster_name);
139 assert_eq!(header.broker_name, cloned.broker_name);
140 assert_eq!(header.master_broker_id, cloned.master_broker_id);
141 assert_eq!(header.master_address, cloned.master_address);
142 assert_eq!(header.master_epoch, cloned.master_epoch);
143 assert_eq!(header.sync_state_set_epoch, cloned.sync_state_set_epoch);
144 }
145}