mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-07-21 18:02:50 +02:00
69 lines
2.6 KiB
Rust
69 lines
2.6 KiB
Rust
#![cfg(feature = "std")]
|
|
|
|
use tracing::Level;
|
|
use tracing_mock::*;
|
|
|
|
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
|
#[test]
|
|
fn multiple_max_level_hints() {
|
|
// This test ensures that when multiple subscribers are active, their max
|
|
// level hints are handled correctly. The global max level should be the
|
|
// maximum of the level filters returned by the two `Subscriber`'s
|
|
// `max_level_hint` method.
|
|
//
|
|
// In this test, we create a subscriber whose max level is `INFO`, and
|
|
// another whose max level is `DEBUG`. We then add an assertion to both of
|
|
// those subscribers' `enabled` method that no metadata for `TRACE` spans or
|
|
// events are filtered, since they are disabled by the global max filter.
|
|
|
|
fn do_events() {
|
|
tracing::info!("doing a thing that you might care about");
|
|
tracing::debug!("charging turboencabulator with interocitor");
|
|
tracing::warn!("extremely serious warning, pay attention");
|
|
tracing::trace!("interocitor charge level is 10%");
|
|
tracing::error!("everything is on fire");
|
|
}
|
|
|
|
let (subscriber1, handle1) = subscriber::mock()
|
|
.named("subscriber1")
|
|
.with_max_level_hint(Level::INFO)
|
|
.with_filter(|meta| {
|
|
let level = dbg!(meta.level());
|
|
assert!(
|
|
level <= &Level::DEBUG,
|
|
"a TRACE event was dynamically filtered by subscriber1"
|
|
);
|
|
level <= &Level::INFO
|
|
})
|
|
.event(event::mock().at_level(Level::INFO))
|
|
.event(event::mock().at_level(Level::WARN))
|
|
.event(event::mock().at_level(Level::ERROR))
|
|
.done()
|
|
.run_with_handle();
|
|
let (subscriber2, handle2) = subscriber::mock()
|
|
.named("subscriber2")
|
|
.with_max_level_hint(Level::DEBUG)
|
|
.with_filter(|meta| {
|
|
let level = dbg!(meta.level());
|
|
assert!(
|
|
level <= &Level::DEBUG,
|
|
"a TRACE event was dynamically filtered by subscriber2"
|
|
);
|
|
level <= &Level::DEBUG
|
|
})
|
|
.event(event::mock().at_level(Level::INFO))
|
|
.event(event::mock().at_level(Level::DEBUG))
|
|
.event(event::mock().at_level(Level::WARN))
|
|
.event(event::mock().at_level(Level::ERROR))
|
|
.done()
|
|
.run_with_handle();
|
|
|
|
let dispatch1 = tracing::Dispatch::new(subscriber1);
|
|
|
|
tracing::dispatcher::with_default(&dispatch1, do_events);
|
|
handle1.assert_finished();
|
|
|
|
let dispatch2 = tracing::Dispatch::new(subscriber2);
|
|
tracing::dispatcher::with_default(&dispatch2, do_events);
|
|
handle2.assert_finished();
|
|
}
|