rocketmq_remoting/protocol/body/
set_message_request_mode_request_body.rs1use cheetah_string::CheetahString;
18use rocketmq_common::common::message::message_enum::MessageRequestMode;
19use serde::Deserialize;
20use serde::Serialize;
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23#[serde(rename_all = "camelCase")]
24pub struct SetMessageRequestModeRequestBody {
25 pub topic: CheetahString,
26 pub consumer_group: CheetahString,
27 pub mode: MessageRequestMode,
28 pub pop_share_queue_num: i32,
33}
34
35impl Default for SetMessageRequestModeRequestBody {
36 fn default() -> Self {
37 SetMessageRequestModeRequestBody {
38 topic: CheetahString::new(),
39 consumer_group: CheetahString::new(),
40 mode: MessageRequestMode::Pull,
41 pop_share_queue_num: 0,
42 }
43 }
44}
45
46#[cfg(test)]
47mod tests {
48 use serde_json;
49
50 use super::*;
51
52 #[test]
53 fn serialize_set_message_request_mode_request_body() {
54 let body = SetMessageRequestModeRequestBody {
55 topic: CheetahString::from("test_topic"),
56 consumer_group: CheetahString::from("test_group"),
57 mode: MessageRequestMode::Pop,
58 pop_share_queue_num: 5,
59 };
60 let serialized = serde_json::to_string(&body).unwrap();
61 assert!(serialized.contains("\"topic\":\"test_topic\""));
62 assert!(serialized.contains("\"consumerGroup\":\"test_group\""));
63 assert!(serialized.contains("\"mode\":\"POP\""));
64 assert!(serialized.contains("\"popShareQueueNum\":5"));
65 }
66
67 #[test]
68 fn default_set_message_request_mode_request_body() {
69 let default_body = SetMessageRequestModeRequestBody::default();
70 assert_eq!(default_body.topic, CheetahString::new());
71 assert_eq!(default_body.consumer_group, CheetahString::new());
72 assert_eq!(default_body.mode, MessageRequestMode::Pull);
73 assert_eq!(default_body.pop_share_queue_num, 0);
74 }
75
76 #[test]
77 fn deserialize_set_message_request_mode_request_body() {
78 let json = r#"
79 {
80 "topic": "test_topic",
81 "consumerGroup": "test_group",
82 "mode": "PULL",
83 "popShareQueueNum": 3
84 }"#;
85 let deserialized: SetMessageRequestModeRequestBody = serde_json::from_str(json).unwrap();
86 assert_eq!(deserialized.topic, CheetahString::from("test_topic"));
87 assert_eq!(
88 deserialized.consumer_group,
89 CheetahString::from("test_group")
90 );
91 assert_eq!(deserialized.mode, MessageRequestMode::Pull);
92 assert_eq!(deserialized.pop_share_queue_num, 3);
93 }
94
95 #[test]
96 fn deserialize_set_message_request_mode_request_body_invalid_mode() {
97 let json = r#"{
98 "topic": "test_topic",
99 "consumerGroup": "test_group",
100 "mode": "INVALID",
101 "popShareQueueNum": 3
102 }"#;
103 let deserialized: Result<SetMessageRequestModeRequestBody, _> = serde_json::from_str(json);
104 assert!(deserialized.is_err());
105 }
106}