Auto merge of #27193 - gterzian:fix_monitor_test_timeout, r=jdm

improve reliability of hang monitor tests

<!-- Please describe your changes on the following line: -->

FIX https://github.com/servo/servo/issues/27191

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [ ] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because ___

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
bors-servo 2020-07-07 10:51:41 -04:00 committed by GitHub
commit e61628420b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 17 deletions

View file

@ -33,17 +33,19 @@ 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()
let mut monitor = BackgroundHangMonitorWorker::new( .spawn(move || {
constellation_chan, let mut monitor = BackgroundHangMonitorWorker::new(
control_port, constellation_chan,
port, control_port,
monitoring_enabled, port,
); monitoring_enabled,
while monitor.run() { );
// Monitoring until all senders have been dropped... while monitor.run() {
} // 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. // Send the exit message.
let _ = control_sender.send(BackgroundHangMonitorControlMsg::Exit(exit_sender)); if control_sender
.send(BackgroundHangMonitorControlMsg::Exit(exit_sender))
.is_ok()
{
// Assert we receive a confirmation back.
assert!(exit_receiver.recv().is_ok());
// Assert we receive a confirmation back. // Assert we get the exit signal.
assert!(exit_receiver.recv().is_ok()); while !closing.load(Ordering::SeqCst) {
thread::sleep(Duration::from_millis(10));
// Assert we get the exit signal. }
while !closing.load(Ordering::SeqCst) {} }
} }