use std::ffi::CString;
use std::process::{Child, Command};
use std::time::Duration;
pub const TEST_CHANNEL: &str = "aeron:udp?endpoint=localhost:50000";
pub const TEST_STREAM_ID: i32 = 2000;
pub fn str_to_c(val: &str) -> CString {
CString::new(val).expect("Error converting str to CString")
}
pub fn start_aeron_md() -> Child {
let ret = Command::new("aeronmd")
.env("AERON_DIR_DELETE_ON_SHUTDOWN", "1")
.env("AERON_DIR_DELETE_ON_START", "1")
.spawn()
.expect("aeronmd failed to start");
std::thread::sleep(Duration::from_millis(2000));
ret
}
pub fn start_aeron_md_mtu(mtu: &str) -> Child {
let ret = Command::new("aeronmd")
.env("AERON_DIR_DELETE_ON_SHUTDOWN", "1")
.env("AERON_DIR_DELETE_ON_START", "1")
.env("AERON_MTU_LENGTH", mtu)
.spawn()
.expect("aeronmd failed to start");
std::thread::sleep(Duration::from_millis(2000));
ret
}
pub fn stop_aeron_md(driver_proc: Child) {
let pid = format!("{}", driver_proc.id());
println!("Killing aeronmd with pid {}", pid);
Command::new("kill")
.args(["-2", &pid]) .spawn()
.expect("problem while sending SIGINT to aeronmd");
std::thread::sleep(Duration::from_millis(1000));
}