use cheetah_string::CheetahString;
use rocketmq_common::common::message::message_ext::MessageExt;
pub trait SendMessageBackHook {
fn execute_send_message_back(
&self,
msg_list: &mut [MessageExt],
broker_name: &CheetahString,
broker_addr: &CheetahString,
) -> bool;
}
#[cfg(test)]
mod tests {
use cheetah_string::CheetahString;
use rocketmq_common::common::message::message_ext::MessageExt;
use super::*;
struct MockSendMessageBackHook;
impl SendMessageBackHook for MockSendMessageBackHook {
fn execute_send_message_back(
&self,
msg_list: &mut [MessageExt],
broker_name: &CheetahString,
broker_addr: &CheetahString,
) -> bool {
!msg_list.is_empty() && !broker_name.is_empty() && !broker_addr.is_empty()
}
}
#[test]
fn execute_send_message_back_success() {
let hook = MockSendMessageBackHook;
let mut msg_list = vec![MessageExt::default()];
let broker_name = CheetahString::from("broker1");
let broker_addr = CheetahString::from("127.0.0.1:10911");
assert!(hook.execute_send_message_back(&mut msg_list, &broker_name, &broker_addr));
}
#[test]
fn execute_send_message_back_empty_message_list() {
let hook = MockSendMessageBackHook;
let mut msg_list = vec![];
let broker_name = CheetahString::from("broker1");
let broker_addr = CheetahString::from("127.0.0.1:10911");
assert!(!hook.execute_send_message_back(&mut msg_list, &broker_name, &broker_addr));
}
#[test]
fn execute_send_message_back_empty_broker_name() {
let hook = MockSendMessageBackHook;
let mut msg_list = vec![MessageExt::default()];
let broker_name = CheetahString::new();
let broker_addr = CheetahString::from("127.0.0.1:10911");
assert!(!hook.execute_send_message_back(&mut msg_list, &broker_name, &broker_addr));
}
#[test]
fn execute_send_message_back_empty_broker_addr() {
let hook = MockSendMessageBackHook;
let mut msg_list = vec![MessageExt::default()];
let broker_name = CheetahString::from("broker1");
let broker_addr = CheetahString::new();
assert!(!hook.execute_send_message_back(&mut msg_list, &broker_name, &broker_addr));
}
}