test: extract recorder used for ambient tests

This commit is contained in:
Simon Cruanes 2026-04-13 13:09:43 -04:00
parent feb50a6b8e
commit 47b1a05e39
4 changed files with 38 additions and 34 deletions

3
test/common/dune Normal file
View file

@ -0,0 +1,3 @@
(library
(name test_trace_common)
(libraries trace.core))

View file

@ -0,0 +1,32 @@
(** Shared test utilities for ambient span tests. *)
type Trace_core.span += Named of string
let make_recorder () =
let open Trace_core.Collector in
let cbs =
Callbacks.make
~enter_span:(fun
()
~__FUNCTION__:_
~__FILE__:_
~__LINE__:_
~level:_
~params:_
~data:_
~parent:_
name
-> Named name)
~exit_span:(fun () _sp -> ())
~add_data_to_span:(fun () _sp _data -> ())
~message:(fun () ~level:_ ~params:_ ~data:_ ~span:_ _msg -> ())
~metric:(fun () ~level:_ ~params:_ ~data:_ _name _m -> ())
()
in
C_some ((), cbs)
let current_name () =
match Trace_core.current_span () with
| None -> "none"
| Some (Named s) -> s
| Some _ -> "<other>"

View file

@ -3,8 +3,7 @@
(modules t_tls)
(libraries
trace
; avoid using a recent dune with `enabled-if`, by just using `select` instead.
; the dummy case just echoes back the expected file.
test_trace_common
(select
t_tls.ml
from

View file

@ -1,39 +1,9 @@
(* Test ambient span tracking via thread-local-storage provider *)
open Test_trace_common
let ( let@ ) = ( @@ )
(* Unique span type so we can identify spans by name *)
type Trace_core.span += Named of string
let make_recorder () =
let open Trace_core.Collector in
let cbs =
Callbacks.make
~enter_span:(fun
()
~__FUNCTION__:_
~__FILE__:_
~__LINE__:_
~level:_
~params:_
~data:_
~parent:_
name
-> Named name)
~exit_span:(fun () _sp -> ())
~add_data_to_span:(fun () _sp _data -> ())
~message:(fun () ~level:_ ~params:_ ~data:_ ~span:_ _msg -> ())
~metric:(fun () ~level:_ ~params:_ ~data:_ _name _m -> ())
()
in
C_some ((), cbs)
let current_name () =
match Trace_core.current_span () with
| None -> "none"
| Some (Named s) -> s
| Some _ -> "<other>"
let () =
print_endline "=== ambient span (TLS) ===";
Trace_thread_local_storage.setup ();