Sha256: c0b3142543e7a10065c7583a8ee0b6bc978ea4f3979599651101c5a28966e7c8

Contents?: true

Size: 1.45 KB

Versions: 38

Compression:

Stored size: 1.45 KB

Contents

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");
}

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
wasmtime-29.0.0 ./ext/cargo-vendor/tracing-0.1.41/tests/register_callsite_deadlock.rs
wasmtime-28.0.0 ./ext/cargo-vendor/tracing-0.1.41/tests/register_callsite_deadlock.rs
wasmtime-27.0.0 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-26.0.0 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-25.0.2 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-25.0.1 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-25.0.0 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-24.0.0 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-23.0.2 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-22.0.0 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-21.0.1 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-20.0.2 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-20.0.0 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-18.0.3 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-17.0.1 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-17.0.0 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-16.0.0 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-15.0.1 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-15.0.0 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs
wasmtime-14.0.4 ./ext/cargo-vendor/tracing-0.1.40/tests/register_callsite_deadlock.rs