test: update and improve fuchsia tests

This commit is contained in:
Simon Cruanes 2025-05-07 15:35:17 -04:00
parent 7acc1b930f
commit 86e65d2046
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
7 changed files with 62 additions and 32 deletions

1
test/fuchsia/t1.expected Normal file

File diff suppressed because one or more lines are too long

View file

@ -43,6 +43,33 @@ let run () =
done
done
let to_hex (s : string) : string =
let i_to_hex (i : int) =
if i < 10 then
Char.chr (i + Char.code '0')
else
Char.chr (i - 10 + Char.code 'a')
in
let res = Bytes.create (2 * String.length s) in
for i = 0 to String.length s - 1 do
let n = Char.code (String.get s i) in
Bytes.set res (2 * i) (i_to_hex ((n land 0xf0) lsr 4));
Bytes.set res ((2 * i) + 1) (i_to_hex (n land 0x0f))
done;
Bytes.unsafe_to_string res
let () =
Trace_tef.Private_.mock_all_ ();
Trace_tef.with_setup ~out:`Stdout () @@ fun () -> run ()
Trace_fuchsia.Internal_.mock_all_ ();
let buf = Buffer.create 32 in
let exporter = Trace_fuchsia.Exporter.of_buffer buf in
Trace_fuchsia.with_setup ~out:(`Exporter exporter) () run;
exporter.close ();
let data = Buffer.contents buf in
(let oc = open_out_bin "t1.fxt" in
output_string oc data;
close_out_noerr oc);
print_endline (to_hex data);
flush stdout

View file

@ -1,4 +1,4 @@
(tests
(names t1 t2)
(package trace-fuchsia)
(libraries trace-fuchsia.write))
(libraries trace-fuchsia))

View file

@ -1,4 +1,4 @@
open Trace_fuchsia_write
open Trace_fuchsia
module Str_ = struct
open String
@ -39,14 +39,14 @@ module Str_ = struct
end
let () =
let l = List.init 100 (fun i -> Util.round_to_word i) in
let l = List.init 100 (fun i -> Writer.Util.round_to_word i) in
assert (List.for_all (fun x -> x mod 8 = 0) l)
let () =
assert (Str_ref.inline 0 = 0b0000_0000_0000_0000);
assert (Str_ref.inline 1 = 0b1000_0000_0000_0001);
assert (Str_ref.inline 6 = 0b1000_0000_0000_0110);
assert (Str_ref.inline 31999 = 0b1111_1100_1111_1111);
assert (Writer.Str_ref.inline 0 = 0b0000_0000_0000_0000);
assert (Writer.Str_ref.inline 1 = 0b1000_0000_0000_0001);
assert (Writer.Str_ref.inline 6 = 0b1000_0000_0000_0110);
assert (Writer.Str_ref.inline 31999 = 0b1111_1100_1111_1111);
()
let () =

View file

@ -1,4 +1,5 @@
open Trace_fuchsia_write
open Trace_fuchsia
open Trace_fuchsia.Writer
let pf = Printf.printf
@ -40,24 +41,27 @@ module Str_ = struct
Bytes.unsafe_to_string res
end
let with_buf_output (f : Output.t -> unit) : string =
let with_buf_chain (f : Buf_chain.t -> unit) : string =
let buf_pool = Buf_pool.create () in
let buffer = Buffer.create 32 in
let out = Output.into_buffer ~buf_pool buffer in
f out;
Output.flush out;
let buf_chain = Buf_chain.create ~sharded:true ~buf_pool () in
f buf_chain;
Buf_chain.ready_all_non_empty buf_chain;
let exp = Exporter.of_buffer buffer in
Buf_chain.pop_ready buf_chain ~f:exp.write_bufs;
Buffer.contents buffer
let () = pf "first trace\n"
let () =
let str =
with_buf_output (fun out ->
Metadata.Magic_record.encode out;
Thread_record.encode out ~as_ref:5 ~pid:1 ~tid:86 ();
Event.Instant.encode out ~name:"hello" ~time_ns:1234_5678L
with_buf_chain (fun bufs ->
Metadata.Magic_record.encode bufs;
Thread_record.encode bufs ~as_ref:5 ~pid:1 ~tid:86 ();
Event.Instant.encode bufs ~name:"hello" ~time_ns:1234_5678L
~t_ref:(Thread_ref.Ref 5)
~args:[ "x", `Int 42 ]
~args:[ "x", A_int 42 ]
())
in
pf "%s\n" (Str_.to_hex str)
@ -66,21 +70,21 @@ let () = pf "second trace\n"
let () =
let str =
with_buf_output (fun out ->
Metadata.Magic_record.encode out;
with_buf_chain (fun bufs ->
Metadata.Magic_record.encode bufs;
Metadata.Initialization_record.(
encode out ~ticks_per_secs:default_ticks_per_sec ());
Thread_record.encode out ~as_ref:5 ~pid:1 ~tid:86 ();
Metadata.Provider_info.encode out ~id:1 ~name:"ocaml-trace" ();
Event.Duration_complete.encode out ~name:"outer"
encode bufs ~ticks_per_secs:default_ticks_per_sec ());
Thread_record.encode bufs ~as_ref:5 ~pid:1 ~tid:86 ();
Metadata.Provider_info.encode bufs ~id:1 ~name:"ocaml-trace" ();
Event.Duration_complete.encode bufs ~name:"outer"
~t_ref:(Thread_ref.Ref 5) ~time_ns:100_000L ~end_time_ns:5_000_000L
~args:[] ();
Event.Duration_complete.encode out ~name:"inner"
Event.Duration_complete.encode bufs ~name:"inner"
~t_ref:(Thread_ref.Ref 5) ~time_ns:180_000L ~end_time_ns:4_500_000L
~args:[] ();
Event.Instant.encode out ~name:"hello" ~time_ns:1_234_567L
Event.Instant.encode bufs ~name:"hello" ~time_ns:1_234_567L
~t_ref:(Thread_ref.Ref 5)
~args:[ "x", `Int 42 ]
~args:[ "x", A_int 42 ]
())
in
(let oc = open_out "foo.fxt" in

View file

@ -1049,5 +1049,4 @@
{"pid":2,"cat":"","tid": 3,"ts": 1299.00,"name":"world","ph":"I"},
{"pid":2,"tid":3,"ts":1300.00,"name":"c","ph":"C","args": {"n":200}},
{"pid":2,"cat":"","tid": 3,"dur": 4.00,"ts": 1297.00,"name":"inner.loop","ph":"X","args": {"i":50}},
{"pid":2,"cat":"","tid": 3,"dur": 25.00,"ts": 1277.00,"name":"outer.loop","ph":"X"},
{"pid":2,"cat":"","tid": 1,"ts": 1304.00,"name":"tef-worker.exit","ph":"I"}]
{"pid":2,"cat":"","tid": 3,"dur": 25.00,"ts": 1277.00,"name":"outer.loop","ph":"X"}]

View file

@ -929,5 +929,4 @@
{"pid":2,"cat":"","tid": 3,"dur": 217.00,"ts": 1642.00,"name":"Dune__exe__T2.fib2","ph":"X"},
{"pid":2,"cat":"","tid": 3,"dur": 353.00,"ts": 1507.00,"name":"Dune__exe__T2.fib2","ph":"X"},
{"pid":2,"cat":"","tid": 3,"dur": 573.00,"ts": 1288.00,"name":"Dune__exe__T2.fib2","ph":"X"},
{"pid":2,"cat":"","tid": 3,"dur": 929.00,"ts": 933.00,"name":"Dune__exe__T2.fib2","ph":"X"},
{"pid":2,"cat":"","tid": 1,"ts": 1864.00,"name":"tef-worker.exit","ph":"I"}]
{"pid":2,"cat":"","tid": 3,"dur": 929.00,"ts": 933.00,"name":"Dune__exe__T2.fib2","ph":"X"}]