wip: fix tests

This commit is contained in:
Simon Cruanes 2025-12-05 23:52:08 -05:00
parent c24dbebbf3
commit 2e3120fc49
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
3 changed files with 44 additions and 36 deletions

View file

@ -1,4 +1,4 @@
module T = Opentelemetry
module OT = Opentelemetry
module Otel_lwt = Opentelemetry_lwt
let spf = Printf.sprintf
@ -10,19 +10,20 @@ let sleep_inner = ref 0.1
let sleep_outer = ref 2.0
let mk_client ~scope =
Opentelemetry_cohttp_lwt.client ~scope (module Cohttp_lwt_unix.Client)
Opentelemetry_cohttp_lwt.client ~span:scope (module Cohttp_lwt_unix.Client)
let run () =
let open Lwt.Syntax in
let tracer = OT.Tracer.get_main () in
let rec go () =
let@ scope =
Otel_lwt.Trace.with_ ~kind:T.Span.Span_kind_producer "loop.outer"
Otel_lwt.Tracer.with_ tracer ~kind:OT.Span.Span_kind_producer "loop.outer"
in
let* () = Lwt_unix.sleep !sleep_outer in
let module C = (val mk_client ~scope) in
(* Using the same default server O *)
let* _res, body =
C.get (Uri.of_string Opentelemetry_client.Config.default_url)
C.get (Uri.of_string Opentelemetry_client.Client_config.default_url)
in
let* () = Cohttp_lwt.Body.drain_body body in
go ()
@ -31,8 +32,8 @@ let run () =
let () =
Sys.catch_break true;
T.Globals.service_name := "ocaml-otel-cohttp-client";
T.Globals.service_namespace := Some "ocaml-otel.test";
OT.Globals.service_name := "ocaml-otel-cohttp-client";
OT.Globals.service_namespace := Some "ocaml-otel.test";
let debug = ref false in
let batch_traces = ref 400 in

View file

@ -1,4 +1,4 @@
module T = Opentelemetry
module OT = Opentelemetry
module Atomic = Opentelemetry_atomic.Atomic
let spf = Printf.sprintf
@ -23,13 +23,14 @@ let num_tr = Atomic.make 0
let run_job () =
let@ () = Fun.protect ~finally:(fun () -> Atomic.set stop true) in
let tracer = OT.Tracer.get_main () in
let i = ref 0 in
let cnt = ref 0 in
while (not @@ Atomic.get stop) && !cnt < !n do
let@ _scope =
Atomic.incr num_tr;
T.Trace.with_ ~kind:T.Span.Span_kind_producer "loop.outer"
OT.Tracer.with_ tracer ~kind:OT.Span.Span_kind_producer "loop.outer"
~attrs:[ "i", `Int !i ]
in
@ -40,7 +41,7 @@ let run_job () =
(* parent scope is found via thread local storage *)
let@ scope =
Atomic.incr num_tr;
T.Trace.with_ ~kind:T.Span.Span_kind_internal
OT.Tracer.with_ tracer ~kind:OT.Span.Span_kind_internal
~attrs:[ "j", `Int j ]
"loop.inner"
in
@ -48,18 +49,22 @@ let run_job () =
Unix.sleepf !sleep_outer;
Atomic.incr num_sleep;
T.Logs.(
emit
[
make_strf ~trace_id:scope.trace_id ~span_id:scope.span_id
~severity:Severity_number_info "inner at %d" j;
]);
let logger = OT.Logger.get_main () in
OT.Emitter.emit logger
[
OT.Log_record.make_strf ~trace_id:(OT.Span.trace_id scope)
~span_id:(OT.Span.id scope) ~severity:Severity_number_info
"inner at %d" j;
];
incr i;
try
Atomic.incr num_tr;
let@ _ = T.Trace.with_ ~kind:T.Span.Span_kind_internal ~scope "alloc" in
let@ _ =
OT.Tracer.with_ tracer ~kind:OT.Span.Span_kind_internal ~parent:scope
"alloc"
in
(* allocate some stuff *)
if !stress_alloc_ then (
let _arr = Sys.opaque_identity @@ Array.make (25 * 25551) 42.0 in
@ -72,23 +77,23 @@ let run_job () =
if j = 4 && !i mod 13 = 0 then failwith "oh no";
(* simulate a failure *)
Opentelemetry.Scope.add_event scope (fun () ->
T.Event.make "done with alloc")
OT.Span.add_event scope (OT.Event.make "done with alloc")
with Failure _ -> ()
done
done
let run () =
T.GC_metrics.basic_setup ();
OT.Gc_metrics.setup_on_main_exporter ();
T.Metrics_callbacks.register (fun () ->
T.Metrics.
[
sum ~name:"num-sleep" ~is_monotonic:true
[ int (Atomic.get num_sleep) ];
sum ~name:"otel.bytes-sent" ~is_monotonic:true ~unit_:"B"
[ int (Opentelemetry_client_ocurl.n_bytes_sent ()) ];
]);
OT.Metrics_callbacks.with_set_added_to_main_exporter (fun set ->
OT.Metrics_callbacks.add_metrics_cb set (fun () ->
OT.Metrics.
[
sum ~name:"num-sleep" ~is_monotonic:true
[ int (Atomic.get num_sleep) ];
sum ~name:"otel.bytes-sent" ~is_monotonic:true ~unit_:"B"
[ int (Opentelemetry_client_ocurl.n_bytes_sent ()) ];
]));
let n_jobs = max 1 !n_jobs in
Printf.printf "run %d jobs\n%!" n_jobs;
@ -101,8 +106,8 @@ let run () =
Array.iter Thread.join jobs
let () =
T.Globals.service_name := "t1";
T.Globals.service_namespace := Some "ocaml-otel.test";
OT.Globals.service_name := "t1";
OT.Globals.service_namespace := Some "ocaml-otel.test";
let ts_start = Unix.gettimeofday () in
let debug = ref false in

View file

@ -82,12 +82,14 @@ let run_job clock _job_id iterations : unit =
let run env proc iterations () : unit =
OT.Gc_metrics.setup_on_main_exporter ();
OT.Metrics_callbacks.register (fun () ->
OT.Metrics.
[
sum ~name:"num-sleep" ~is_monotonic:true
[ int (Atomic.get num_sleep) ];
]);
OT.Metrics_callbacks.(
with_set_added_to_main_exporter (fun set ->
add_metrics_cb set (fun () ->
OT.Metrics.
[
sum ~name:"num-sleep" ~is_monotonic:true
[ int (Atomic.get num_sleep) ];
])));
let n_jobs = max 1 !n_jobs in
Printf.printf "run %d jobs in proc %d\n%!" n_jobs proc;
@ -172,4 +174,4 @@ let () =
Eio.Fiber.fork ~sw @@ fun () ->
Eio.Domain_manager.run dm (run env proc !n_iterations)
done));
Opentelemetry.Collector.remove_backend () ~on_done:ignore
Opentelemetry.Main_exporter.remove () ~on_done:ignore