improve reliability of hang monitor tests

This commit is contained in:
Gregory Terzian 2020-07-07 12:45:14 +08:00
parent 39e3beb35c
commit 256167eff2
2 changed files with 25 additions and 17 deletions

View file

@ -33,7 +33,8 @@ impl HangMonitorRegister {
monitoring_enabled: bool, monitoring_enabled: bool,
) -> Box<dyn BackgroundHangMonitorRegister> { ) -> Box<dyn BackgroundHangMonitorRegister> {
let (sender, port) = unbounded(); let (sender, port) = unbounded();
let _ = thread::Builder::new().spawn(move || { let _ = thread::Builder::new()
.spawn(move || {
let mut monitor = BackgroundHangMonitorWorker::new( let mut monitor = BackgroundHangMonitorWorker::new(
constellation_chan, constellation_chan,
control_port, control_port,
@ -43,7 +44,8 @@ impl HangMonitorRegister {
while monitor.run() { while monitor.run() {
// Monitoring until all senders have been dropped... // Monitoring until all senders have been dropped...
} }
}); })
.expect("Couldn't start BHM worker.");
Box::new(HangMonitorRegister { Box::new(HangMonitorRegister {
sender, sender,
monitoring_enabled, monitoring_enabled,

View file

@ -197,12 +197,18 @@ fn test_hang_monitoring_exit_signal() {
); );
let (exit_sender, exit_receiver) = ipc::channel().expect("Failed to create IPC channel!"); let (exit_sender, exit_receiver) = ipc::channel().expect("Failed to create IPC channel!");
// Send the exit message.
let _ = control_sender.send(BackgroundHangMonitorControlMsg::Exit(exit_sender));
// Send the exit message.
if control_sender
.send(BackgroundHangMonitorControlMsg::Exit(exit_sender))
.is_ok()
{
// Assert we receive a confirmation back. // Assert we receive a confirmation back.
assert!(exit_receiver.recv().is_ok()); assert!(exit_receiver.recv().is_ok());
// Assert we get the exit signal. // Assert we get the exit signal.
while !closing.load(Ordering::SeqCst) {} while !closing.load(Ordering::SeqCst) {
thread::sleep(Duration::from_millis(10));
}
}
} }