Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit f7981fc

Browse files
add tests
1 parent 0b7f4f8 commit f7981fc

File tree

3 files changed

+108
-19
lines changed

3 files changed

+108
-19
lines changed

client/tracing/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ sp-tracing = { version = "2.0.0-rc2", path = "../../primitives/tracing" }
2626
sc-telemetry = { version = "2.0.0-rc4", path = "../telemetry" }
2727

2828
[dev-dependencies]
29-
tracing = "0.1.10"
29+
tracing = "0.1.16"

client/tracing/src/lib.rs

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,3 +442,110 @@ impl TraceHandler for TelemetryTraceHandler {
442442
);
443443
}
444444
}
445+
446+
#[cfg(test)]
447+
mod tests {
448+
use super::*;
449+
use std::sync::Arc;
450+
451+
struct TestTraceHandler{
452+
spans: Arc<Mutex<Vec<SpanDatum>>>,
453+
events: Arc<Mutex<Vec<TraceEvent>>>,
454+
}
455+
456+
impl TraceHandler for TestTraceHandler {
457+
fn process_span(&self, sd: SpanDatum) {
458+
self.spans.lock().push(sd);
459+
}
460+
461+
fn process_event(&self, event: TraceEvent) {
462+
self.events.lock().push(event);
463+
}
464+
}
465+
466+
fn setup_subscriber() -> (ProfilingSubscriber, Arc<Mutex<Vec<SpanDatum>>>, Arc<Mutex<Vec<TraceEvent>>>) {
467+
let spans = Arc::new(Mutex::new(Vec::new()));
468+
let events = Arc::new(Mutex::new(Vec::new()));
469+
let handler = TestTraceHandler {
470+
spans: spans.clone(),
471+
events: events.clone(),
472+
};
473+
let test_subscriber = ProfilingSubscriber::new_with_handler(
474+
Box::new(handler),
475+
"test_target"
476+
);
477+
(test_subscriber, spans, events)
478+
}
479+
480+
#[test]
481+
fn test_span() {
482+
let (sub, spans, events) = setup_subscriber();
483+
let _sub_guard = tracing::subscriber::set_default(sub);
484+
let span = tracing::info_span!(target: "test_target", "test_span1");
485+
assert_eq!(spans.lock().len(), 0);
486+
assert_eq!(events.lock().len(), 0);
487+
let _guard = span.enter();
488+
assert_eq!(spans.lock().len(), 0);
489+
assert_eq!(events.lock().len(), 0);
490+
drop(_guard);
491+
drop(span);
492+
assert_eq!(spans.lock().len(), 1);
493+
assert_eq!(events.lock().len(), 0);
494+
let sd = spans.lock().remove(0);
495+
assert_eq!(sd.name, "test_span1");
496+
assert_eq!(sd.target, "test_target");
497+
let time: u128 = sd.overall_time.as_nanos();
498+
assert!(time > 0);
499+
}
500+
501+
#[test]
502+
fn test_span_parent_id() {
503+
let (sub, spans, _events) = setup_subscriber();
504+
let _sub_guard = tracing::subscriber::set_default(sub);
505+
let span1 = tracing::info_span!(target: "test_target", "test_span1");
506+
let _guard1 = span1.enter();
507+
let span2 = tracing::info_span!(target: "test_target", "test_span2");
508+
let _guard2 = span2.enter();
509+
drop(_guard2);
510+
drop(span2);
511+
let sd2 = spans.lock().remove(0);
512+
drop(_guard1);
513+
drop(span1);
514+
let sd1 = spans.lock().remove(0);
515+
assert_eq!(sd1.id, sd2.parent_id.unwrap())
516+
}
517+
518+
#[test]
519+
fn test_event() {
520+
let (sub, _spans, events) = setup_subscriber();
521+
let _sub_guard = tracing::subscriber::set_default(sub);
522+
tracing::event!(target: "test_target", tracing::Level::INFO, "test_event");
523+
let mut te1 = events.lock().remove(0);
524+
assert_eq!(te1.visitor.0.remove(&"message".to_owned()).unwrap(), "test_event".to_owned());
525+
}
526+
527+
#[test]
528+
fn test_event_parent_id() {
529+
let (sub, spans, events) = setup_subscriber();
530+
let _sub_guard = tracing::subscriber::set_default(sub);
531+
532+
// enter span
533+
let span1 = tracing::info_span!(target: "test_target", "test_span1");
534+
let _guard1 = span1.enter();
535+
536+
// emit event
537+
tracing::event!(target: "test_target", tracing::Level::INFO, "test_event");
538+
539+
//exit span
540+
drop(_guard1);
541+
drop(span1);
542+
543+
// check span is not emitted separately
544+
assert!(events.lock().is_empty());
545+
546+
let sd1 = spans.lock().remove(0);
547+
548+
// Check span contains the event
549+
assert_eq!(sd1.events.len(), 1);
550+
}
551+
}

primitives/tracing/src/lib.rs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -93,24 +93,6 @@ macro_rules! enter_span {
9393
}
9494
}
9595

96-
/// Create a tracing Event
97-
///
98-
/// See the documentation for the tracing::event! macro for details
99-
///
100-
/// # Example
101-
///
102-
/// ```
103-
/// sp_tracing::tracing_event!(key = "value", "test-event");
104-
/// ```
105-
#[macro_export]
106-
macro_rules! tracing_event {
107-
( $( $code:tt )* ) => {
108-
$crate::if_tracing!(
109-
$crate::tracing::event!( $( $code )* )
110-
);
111-
}
112-
}
113-
11496
/// Generates the given code if the tracing dependency is enabled.
11597
#[macro_export]
11698
#[cfg(feature = "std")]

0 commit comments

Comments
 (0)