use std::sync::Arc;
use obs_kit::{InMemorySink, Observer, StandardObserver, Tier};
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
async fn test_worker_pool_should_deliver_to_log_sink() {
let sink = InMemorySink::new();
let handle = sink.handle();
let observer = StandardObserver::builder()
.service("worker-pool", "0.0.0")
.filter("info")
.sink_for(Tier::Log, Arc::new(sink))
.build()
.unwrap();
let env = obs_kit::ObsEnvelope {
full_name: "test.v1.WorkerPool".to_string(),
tier: ::obs_kit::__private::EnumValue::Known(::obs_kit::__private::ProtoTier::TIER_LOG),
sev: ::obs_kit::__private::EnumValue::Known(
::obs_kit::__private::ProtoSeverity::SEVERITY_INFO,
),
..Default::default()
};
observer.emit_envelope(env);
observer.flush().await;
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
let drained = handle.snapshot();
assert_eq!(drained.len(), 1, "worker pool should deliver one envelope");
assert_eq!(drained[0].full_name, "test.v1.WorkerPool");
observer.shutdown().await;
}