rocketmq_remoting/protocol/body/
queue_time_span.rs1use rocketmq_common::common::message::message_queue::MessageQueue;
16use rocketmq_common::UtilAll::time_millis_to_human_string2;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Debug, Clone, Serialize, Deserialize, Default)]
21pub struct QueueTimeSpan {
22 pub message_queue: Option<MessageQueue>,
23 pub min_time_stamp: i64,
24 pub max_time_stamp: i64,
25 pub consume_time_stamp: i64,
26 pub delay_time: i64,
27}
28
29impl QueueTimeSpan {
30 pub fn get_message_queue(&self) -> Option<MessageQueue> {
31 self.message_queue.clone()
32 }
33
34 pub fn set_message_queue(&mut self, message_queue: MessageQueue) {
35 self.message_queue = Some(message_queue);
36 }
37
38 pub fn get_min_time_stamp(&self) -> i64 {
39 self.min_time_stamp
40 }
41
42 pub fn set_min_time_stamp(&mut self, min_time_stamp: i64) {
43 self.min_time_stamp = min_time_stamp;
44 }
45
46 pub fn get_max_time_stamp(&self) -> i64 {
47 self.max_time_stamp
48 }
49
50 pub fn set_max_time_stamp(&mut self, max_time_stamp: i64) {
51 self.max_time_stamp = max_time_stamp;
52 }
53
54 pub fn get_consume_time_stamp(&self) -> i64 {
55 self.consume_time_stamp
56 }
57
58 pub fn set_consume_time_stamp(&mut self, consume_time_stamp: i64) {
59 self.consume_time_stamp = consume_time_stamp;
60 }
61
62 pub fn get_delay_time(&self) -> i64 {
63 self.delay_time
64 }
65
66 pub fn set_delay_time(&mut self, delay_time: i64) {
67 self.delay_time = delay_time;
68 }
69
70 pub fn get_min_time_stamp_str(&self) -> String {
71 time_millis_to_human_string2(self.min_time_stamp)
72 }
73
74 pub fn get_max_time_stamp_str(&self) -> String {
75 time_millis_to_human_string2(self.max_time_stamp)
76 }
77
78 pub fn get_consume_time_stamp_str(&self) -> String {
79 time_millis_to_human_string2(self.consume_time_stamp)
80 }
81}
82
83#[cfg(test)]
84mod tests {
85
86 use super::*;
87
88 #[test]
89 fn queue_span_init() {
90 let body: QueueTimeSpan = Default::default();
91 assert_eq!(body.consume_time_stamp, 0);
92 assert_eq!(body.delay_time, 0);
93 assert_eq!(body.max_time_stamp, 0);
94 assert_eq!(body.min_time_stamp, 0);
95 assert_eq!(body.message_queue, None);
96 }
97 #[test]
98 fn queue_span_clone() {
99 let body: QueueTimeSpan = QueueTimeSpan {
100 message_queue: Some(MessageQueue::new()),
101 min_time_stamp: 1,
102 max_time_stamp: 2,
103 consume_time_stamp: 3,
104 delay_time: 4,
105 };
106 let body_clone = body.clone();
107 assert_eq!(body_clone.consume_time_stamp, 3);
108 assert_eq!(body_clone.delay_time, 4);
109 assert_eq!(body_clone.max_time_stamp, 2);
110 assert_eq!(body_clone.min_time_stamp, 1);
111 assert_eq!(body_clone.message_queue, Some(MessageQueue::new()),);
112 }
113 #[test]
114 fn queue_span_deserialise() {
115 let body: QueueTimeSpan = QueueTimeSpan {
116 message_queue: Some(MessageQueue::new()),
117 min_time_stamp: 1,
118 max_time_stamp: 2,
119 consume_time_stamp: 3,
120 delay_time: 4,
121 };
122
123 let json = serde_json::to_string(&body).unwrap();
124 let deserialized: QueueTimeSpan = serde_json::from_str(&json).unwrap();
125 assert_eq!(deserialized.consume_time_stamp, 3);
126 assert_eq!(deserialized.delay_time, 4);
127 assert_eq!(deserialized.max_time_stamp, 2);
128 assert_eq!(deserialized.min_time_stamp, 1);
129 assert_eq!(deserialized.message_queue, Some(MessageQueue::new()),);
130 }
131 #[test]
132 fn queue_span_serialise() {
133 let body: QueueTimeSpan = QueueTimeSpan {
134 message_queue: Some(MessageQueue::new()),
135 min_time_stamp: 1,
136 max_time_stamp: 2,
137 consume_time_stamp: 3,
138 delay_time: 4,
139 };
140
141 let json = serde_json::to_string(&body).unwrap();
142 assert_eq!(
143 json,
144 "{\"message_queue\":{\"topic\":\"\",\"brokerName\":\"\",\"queueId\":0},\"min_time_stamp\":1,\"\
145 max_time_stamp\":2,\"consume_time_stamp\":3,\"delay_time\":4}"
146 );
147 }
148 #[test]
149 fn queue_span_setters() {
150 let mut body: QueueTimeSpan = Default::default();
151 body.set_message_queue(MessageQueue::new());
152 body.set_min_time_stamp(1);
153 body.set_max_time_stamp(2);
154 body.set_consume_time_stamp(3);
155 body.set_delay_time(4);
156
157 assert_eq!(body.consume_time_stamp, 3);
158 assert_eq!(body.delay_time, 4);
159 assert_eq!(body.max_time_stamp, 2);
160 assert_eq!(body.min_time_stamp, 1);
161 assert_eq!(body.message_queue, Some(MessageQueue::new()),);
162 }
163 #[test]
164 fn queue_span_getters() {
165 let body: QueueTimeSpan = QueueTimeSpan {
166 message_queue: Some(MessageQueue::new()),
167 min_time_stamp: 1,
168 max_time_stamp: 2,
169 consume_time_stamp: 3,
170 delay_time: 4,
171 };
172
173 assert_eq!(body.get_consume_time_stamp(), 3);
174 assert_eq!(body.get_delay_time(), 4);
175 assert_eq!(body.get_max_time_stamp(), 2);
176 assert_eq!(body.get_min_time_stamp(), 1);
177 assert_eq!(body.get_message_queue(), Some(MessageQueue::new()),);
178 }
179
180 #[test]
181 fn queue_span_time_str() {
182 let body: QueueTimeSpan = QueueTimeSpan {
183 message_queue: Some(MessageQueue::new()),
184 min_time_stamp: 1,
185 max_time_stamp: 2,
186 consume_time_stamp: 3,
187 delay_time: 4,
188 };
189
190 let expected_min = time_millis_to_human_string2(body.get_min_time_stamp());
191 let expected_max = time_millis_to_human_string2(body.get_max_time_stamp());
192 let expected_consume = time_millis_to_human_string2(body.get_consume_time_stamp());
193
194 assert_eq!(body.get_min_time_stamp_str(), expected_min);
195 assert_eq!(body.get_max_time_stamp_str(), expected_max);
196 assert_eq!(body.get_consume_time_stamp_str(), expected_consume);
197 }
198}