mod test_shared;
#[cfg(all(feature = "std", feature = "transport-tcp", feature = "dialect-common"))]
mod test_tcp_connections {
use std::thread;
#[cfg(feature = "mav2-message-signing")]
use crate::test_shared;
#[cfg(feature = "mav2-message-signing")]
use mavlink::SigningConfig;
use mavlink::{MavConnection, MessageData};
#[test]
fn test_tcp_loopback() {
const RECEIVE_CHECK_COUNT: i32 = 5;
#[cfg(feature = "mav2-message-signing")]
let singing_cfg_server = SigningConfig::new(test_shared::SECRET_KEY, 0, true, false);
#[cfg(feature = "mav2-message-signing")]
let singing_cfg_client = singing_cfg_server.clone();
let server_thread = thread::spawn(move || {
#[allow(unused_mut)]
let mut server =
mavlink::connect("tcpin:0.0.0.0:14550").expect("Couldn't create server");
#[cfg(feature = "mav2-message-signing")]
server.setup_signing(Some(singing_cfg_server));
let mut recv_count = 0;
for _i in 0..RECEIVE_CHECK_COUNT {
match server.recv() {
Ok((_header, msg)) => {
if let mavlink::dialects::common::MavMessage::HEARTBEAT(_heartbeat_msg) =
msg
{
recv_count += 1;
} else {
break;
}
}
Err(..) => {
break;
}
}
}
assert_eq!(recv_count, RECEIVE_CHECK_COUNT);
});
thread::sleep(std::time::Duration::from_millis(100));
thread::spawn(move || {
let msg = mavlink::dialects::common::MavMessage::HEARTBEAT(
crate::test_shared::get_heartbeat_msg(),
);
#[allow(unused_mut)]
let mut client =
mavlink::connect("tcpout:127.0.0.1:14550").expect("Couldn't create client");
#[cfg(feature = "mav2-message-signing")]
client.setup_signing(Some(singing_cfg_client));
for _i in 0..RECEIVE_CHECK_COUNT {
client.send_default(&msg).ok();
}
});
server_thread.join().unwrap();
}
#[test]
fn test_tcp_loopback_recv_raw() {
const RECEIVE_CHECK_COUNT: i32 = 5;
#[cfg(feature = "mav2-message-signing")]
let singing_cfg_server = SigningConfig::new(test_shared::SECRET_KEY, 0, true, false);
#[cfg(feature = "mav2-message-signing")]
let singing_cfg_client = singing_cfg_server.clone();
let server_thread = thread::spawn(move || {
#[allow(unused_mut)]
let mut server =
mavlink::connect::<mavlink::dialects::common::MavMessage>("tcpin:0.0.0.0:14560")
.expect("Couldn't create server");
#[cfg(feature = "mav2-message-signing")]
server.setup_signing(Some(singing_cfg_server));
let mut recv_count = 0;
for _i in 0..RECEIVE_CHECK_COUNT {
match server.recv_raw() {
Ok(message) => {
if message.message_id() == mavlink::dialects::common::HEARTBEAT_DATA::ID {
recv_count += 1;
} else {
break;
}
}
Err(..) => {
break;
}
}
}
assert_eq!(recv_count, RECEIVE_CHECK_COUNT);
});
thread::sleep(std::time::Duration::from_millis(100));
thread::spawn(move || {
let msg = mavlink::dialects::common::MavMessage::HEARTBEAT(
crate::test_shared::get_heartbeat_msg(),
);
#[allow(unused_mut)]
let mut client =
mavlink::connect("tcpout:127.0.0.1:14560").expect("Couldn't create client");
#[cfg(feature = "mav2-message-signing")]
client.setup_signing(Some(singing_cfg_client));
for _i in 0..RECEIVE_CHECK_COUNT {
client.send_default(&msg).ok();
}
});
server_thread.join().unwrap();
}
}