#[cfg(test)]
mod test {
use std::collections::HashMap;
use mu_rust_message_client::MessageClient;
use mu_rust_message_common::exchange::Exchange;
use tracing::Level;
use tracing_subscriber::FmtSubscriber;
#[tokio::test]
#[ignore = "integration test"]
async fn test_client() {
let subscriber = FmtSubscriber::builder()
.with_max_level(Level::TRACE)
.finish();
tracing::subscriber::set_global_default(subscriber)
.expect("setting default subscriber failed");
let mut fut = vec![];
for i in 0..100 {
fut.push(tokio::spawn(async move {
tracing::info!("waiting..");
let mut client = MessageClient::new(&format!("person{i}")).await.unwrap();
tracing::info!("stop waiting");
client
.send(Exchange::new(
"Hello World".as_bytes(),
"Animal",
Some("artcoded".to_string()),
HashMap::new(),
))
.await
.unwrap();
drop(client);
}));
}
futures_util::future::join_all(fut).await;
let mut client = MessageClient::new("person_sub").await.unwrap();
client.subscribe("Animal").await.unwrap();
let mut count = 0;
while let Some(Ok(msg)) = client.recv().await {
tracing::info!("{msg:?}");
let msg = Exchange::get_message_as_string(&msg.message);
assert_eq!("Hello World", &msg);
count += 1;
}
assert_eq!(100, count);
}
}