rocketmq_protocol/protocol/header/
get_consumer_running_info_request_header.rs1use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodec;
17use serde::Deserialize;
18use serde::Serialize;
19
20use crate::rpc::rpc_request_header::RpcRequestHeader;
21
22#[derive(Clone, Debug, Serialize, Deserialize, Default, RequestHeaderCodec)]
23#[header(
24 type_id = "rocketmq_protocol::protocol::header::get_consumer_running_info_request_header::GetConsumerRunningInfoRequestHeader",
25 java_class = "org.apache.rocketmq.remoting.protocol.header.GetConsumerRunningInfoRequestHeader"
26)]
27#[serde(rename_all = "camelCase")]
28pub struct GetConsumerRunningInfoRequestHeader {
29 #[header(required)]
30 pub consumer_group: CheetahString,
31
32 #[header(required)]
33 pub client_id: CheetahString,
34
35 #[serde(default)]
36 #[header(default, default_semantic = "literal:false")]
37 pub jstack_enable: bool,
38
39 #[serde(flatten)]
40 #[header(flatten, presence = "always")]
41 pub rpc_request_header: Option<RpcRequestHeader>,
42}
43
44#[cfg(test)]
45mod tests {
46 use cheetah_string::CheetahString;
47
48 use super::*;
49
50 #[test]
51 fn get_consumer_running_info_request_header_serializes_correctly() {
52 let header = GetConsumerRunningInfoRequestHeader {
53 consumer_group: CheetahString::from_static_str("test_group"),
54 client_id: CheetahString::from_static_str("client_id"),
55 jstack_enable: true,
56 rpc_request_header: None,
57 };
58 let serialized = serde_json::to_string(&header).unwrap();
59 let expected = r#"{"consumerGroup":"test_group","clientId":"client_id","jstackEnable":true}"#;
60 assert_eq!(serialized, expected);
61 }
62
63 #[test]
64 fn get_consumer_running_info_request_header_deserializes_correctly() {
65 let data = r#"{"consumerGroup":"test_group","clientId":"client_id","jstackEnable":true}"#;
66 let header: GetConsumerRunningInfoRequestHeader = serde_json::from_str(data).unwrap();
67 assert_eq!(header.consumer_group, CheetahString::from_static_str("test_group"));
68 assert_eq!(header.client_id, CheetahString::from_static_str("client_id"));
69 assert!(header.jstack_enable);
70 assert!(header.rpc_request_header.is_some());
71 }
72
73 #[test]
74 fn get_consumer_running_info_request_header_handles_missing_optional_fields() {
75 let data = r#"{"consumerGroup":"test_group","clientId":"client_id","jstackEnable":false}"#;
76 let header: GetConsumerRunningInfoRequestHeader = serde_json::from_str(data).unwrap();
77 assert_eq!(header.consumer_group, CheetahString::from_static_str("test_group"));
78 assert_eq!(header.client_id, CheetahString::from_static_str("client_id"));
79 assert!(!header.jstack_enable);
80 assert!(header.rpc_request_header.is_some());
81 }
82
83 #[test]
84 fn get_consumer_running_info_request_header_handles_invalid_data() {
85 let data = r#"{"consumerGroup":12345,"clientId":"client_id"}"#;
86 let result: Result<GetConsumerRunningInfoRequestHeader, _> = serde_json::from_str(data);
87 assert!(result.is_err());
88 }
89}