Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
47
third-party/vendor/tracing/tests/register_callsite_deadlock.rs
vendored
Normal file
47
third-party/vendor/tracing/tests/register_callsite_deadlock.rs
vendored
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
use std::{sync::mpsc, thread, time::Duration};
|
||||
use tracing::{
|
||||
metadata::Metadata,
|
||||
span,
|
||||
subscriber::{self, Interest, Subscriber},
|
||||
Event,
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn register_callsite_doesnt_deadlock() {
|
||||
pub struct EvilSubscriber;
|
||||
|
||||
impl Subscriber for EvilSubscriber {
|
||||
fn register_callsite(&self, meta: &'static Metadata<'static>) -> Interest {
|
||||
tracing::info!(?meta, "registered a callsite");
|
||||
Interest::always()
|
||||
}
|
||||
|
||||
fn enabled(&self, _: &Metadata<'_>) -> bool {
|
||||
true
|
||||
}
|
||||
fn new_span(&self, _: &span::Attributes<'_>) -> span::Id {
|
||||
span::Id::from_u64(1)
|
||||
}
|
||||
fn record(&self, _: &span::Id, _: &span::Record<'_>) {}
|
||||
fn record_follows_from(&self, _: &span::Id, _: &span::Id) {}
|
||||
fn event(&self, _: &Event<'_>) {}
|
||||
fn enter(&self, _: &span::Id) {}
|
||||
fn exit(&self, _: &span::Id) {}
|
||||
}
|
||||
|
||||
subscriber::set_global_default(EvilSubscriber).unwrap();
|
||||
|
||||
// spawn a thread, and assert it doesn't hang...
|
||||
let (tx, didnt_hang) = mpsc::channel();
|
||||
let th = thread::spawn(move || {
|
||||
tracing::info!("hello world!");
|
||||
tx.send(()).unwrap();
|
||||
});
|
||||
|
||||
didnt_hang
|
||||
// Note: 60 seconds is *way* more than enough, but let's be generous in
|
||||
// case of e.g. slow CI machines.
|
||||
.recv_timeout(Duration::from_secs(60))
|
||||
.expect("the thread must not have hung!");
|
||||
th.join().expect("thread should join successfully");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue