Skip to content

Commit b90fefb

Browse files
[ISSUE #1342]🧪Add Unit test for BrokerMemberGroup
1 parent 5cbca70 commit b90fefb

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

rocketmq-remoting/src/protocol/body/broker_body/broker_member_group.rs

+84
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,87 @@ impl BrokerMemberGroup {
4343
pub struct GetBrokerMemberGroupResponseBody {
4444
pub broker_member_group: Option<BrokerMemberGroup>,
4545
}
46+
47+
#[cfg(test)]
48+
mod tests {
49+
use std::collections::HashMap;
50+
51+
use cheetah_string::CheetahString;
52+
53+
use super::*;
54+
55+
#[test]
56+
fn new_creates_broker_member_group_with_empty_broker_addrs() {
57+
let cluster = CheetahString::from("test_cluster");
58+
let broker_name = CheetahString::from("test_broker");
59+
let group = BrokerMemberGroup::new(cluster.clone(), broker_name.clone());
60+
61+
assert_eq!(group.cluster, cluster);
62+
assert_eq!(group.broker_name, broker_name);
63+
assert!(group.broker_addrs.is_empty());
64+
}
65+
66+
#[test]
67+
fn broker_member_group_serializes_correctly() {
68+
let cluster = CheetahString::from("test_cluster");
69+
let broker_name = CheetahString::from("test_broker");
70+
let mut broker_addrs = HashMap::new();
71+
broker_addrs.insert(1, CheetahString::from("127.0.0.1:10911"));
72+
let group = BrokerMemberGroup {
73+
cluster: cluster.clone(),
74+
broker_name: broker_name.clone(),
75+
broker_addrs: broker_addrs.clone(),
76+
};
77+
78+
let serialized = serde_json::to_string(&group).unwrap();
79+
let expected = format!(
80+
r#"{{"cluster":"{}","brokerName":"{}","brokerAddrs":{{"1":"{}"}}}}"#,
81+
cluster,
82+
broker_name,
83+
broker_addrs.get(&1).unwrap()
84+
);
85+
assert_eq!(serialized, expected);
86+
}
87+
88+
#[test]
89+
fn broker_member_group_deserializes_correctly() {
90+
let data = r#"{"cluster":"test_cluster","brokerName":"test_broker","brokerAddrs":{"1":"127.0.0.1:10911"}}"#;
91+
let group: BrokerMemberGroup = serde_json::from_str(data).unwrap();
92+
93+
assert_eq!(group.cluster, CheetahString::from("test_cluster"));
94+
assert_eq!(group.broker_name, CheetahString::from("test_broker"));
95+
assert_eq!(
96+
group.broker_addrs.get(&1).unwrap(),
97+
&CheetahString::from("127.0.0.1:10911")
98+
);
99+
}
100+
101+
#[test]
102+
fn get_broker_member_group_response_body_serializes_correctly() {
103+
let cluster = CheetahString::from("test_cluster");
104+
let broker_name = CheetahString::from("test_broker");
105+
let group = BrokerMemberGroup::new(cluster.clone(), broker_name.clone());
106+
let response_body = GetBrokerMemberGroupResponseBody {
107+
broker_member_group: Some(group.clone()),
108+
};
109+
110+
let serialized = serde_json::to_string(&response_body).unwrap();
111+
let expected = format!(
112+
r#"{{"brokerMemberGroup":{{"cluster":"{}","brokerName":"{}","brokerAddrs":{{}}}}}}"#,
113+
cluster, broker_name
114+
);
115+
assert_eq!(serialized, expected);
116+
}
117+
118+
#[test]
119+
fn get_broker_member_group_response_body_deserializes_correctly() {
120+
let data = r#"{"brokerMemberGroup":{"cluster":"test_cluster","brokerName":"test_broker","brokerAddrs":{}}}"#;
121+
let response_body: GetBrokerMemberGroupResponseBody = serde_json::from_str(data).unwrap();
122+
123+
assert!(response_body.broker_member_group.is_some());
124+
let group = response_body.broker_member_group.unwrap();
125+
assert_eq!(group.cluster, CheetahString::from("test_cluster"));
126+
assert_eq!(group.broker_name, CheetahString::from("test_broker"));
127+
assert!(group.broker_addrs.is_empty());
128+
}
129+
}

0 commit comments

Comments
 (0)