From f000c114069a246103eea2dafa620b5817fc0c87 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Thu, 30 Oct 2025 16:48:04 -0400 Subject: [PATCH] update the emit test so it records how many bytes were emitted --- src/client-ocurl/opentelemetry_client_ocurl.ml | 12 +++++++++++- src/client-ocurl/opentelemetry_client_ocurl.mli | 3 +++ src/client/self_trace.ml | 2 +- tests/bin/emit1.ml | 2 ++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/client-ocurl/opentelemetry_client_ocurl.ml b/src/client-ocurl/opentelemetry_client_ocurl.ml index 55d4788c..a58f78b7 100644 --- a/src/client-ocurl/opentelemetry_client_ocurl.ml +++ b/src/client-ocurl/opentelemetry_client_ocurl.ml @@ -117,6 +117,8 @@ module Backend_impl : sig val send_event : t -> Event.t -> unit + val n_bytes_sent : unit -> int + val shutdown : t -> on_done:(unit -> unit) -> unit end = struct open Opentelemetry.Proto @@ -187,6 +189,10 @@ end = struct let[@inline] send_event (self : t) ev : unit = B_queue.push self.q ev + let n_bytes_sent_ = Atomic.make 0 + + let[@inline] n_bytes_sent () = Atomic.get n_bytes_sent_ + (** Thread that, in a loop, reads from [q] to get the next message to send via http *) let bg_thread_loop (self : t) : unit = @@ -199,7 +205,9 @@ end = struct Self_trace.with_ ~kind:Span_kind_producer name ~attrs:[ "n", `Int (List.length l) ] in - conv l |> send_http_ ~stop ~config ~url client + let msg = conv l in + ignore (Atomic.fetch_and_add n_bytes_sent_ (String.length msg) : int); + send_http_ ~stop ~config ~url client msg in try while not (Atomic.get stop) do @@ -471,3 +479,5 @@ let with_setup ?stop ?config ?(enable = true) () f = Fun.protect ~finally:remove_backend f ) else f () + +let n_bytes_sent = Backend_impl.n_bytes_sent diff --git a/src/client-ocurl/opentelemetry_client_ocurl.mli b/src/client-ocurl/opentelemetry_client_ocurl.mli index 47daf805..6d3918dc 100644 --- a/src/client-ocurl/opentelemetry_client_ocurl.mli +++ b/src/client-ocurl/opentelemetry_client_ocurl.mli @@ -11,6 +11,9 @@ val set_headers : (string * string) list -> unit module Atomic = Opentelemetry_atomic.Atomic module Config = Config +val n_bytes_sent : unit -> int +(** Global counter of bytes sent (or attempted to be sent) *) + val create_backend : ?stop:bool Atomic.t -> ?config:Config.t -> diff --git a/src/client/self_trace.ml b/src/client/self_trace.ml index 62d04cae..46757302 100644 --- a/src/client/self_trace.ml +++ b/src/client/self_trace.ml @@ -1,6 +1,6 @@ module OT = Opentelemetry -let enabled = Atomic.make true +let enabled = Atomic.make false let add_event (scope : OT.Scope.t) ev = OT.Scope.add_event scope (fun () -> ev) diff --git a/tests/bin/emit1.ml b/tests/bin/emit1.ml index 95a4d55b..fdcdbc06 100644 --- a/tests/bin/emit1.ml +++ b/tests/bin/emit1.ml @@ -86,6 +86,8 @@ let run () = [ 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