add lwt test

This commit is contained in:
Simon Cruanes 2023-09-13 14:45:28 -04:00
parent c76fc129b3
commit e6f01f57ac
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
3 changed files with 5290 additions and 0 deletions

7
test/lwt/dune Normal file
View file

@ -0,0 +1,7 @@
(test
(name t1)
(package trace-lwt)
(libraries trace trace-tef trace-lwt lwt lwt.unix))

5206
test/lwt/t1.expected Normal file

File diff suppressed because it is too large Load diff

77
test/lwt/t1.ml Normal file
View file

@ -0,0 +1,77 @@
open Lwt.Syntax
let ( let@ ) = ( @@ )
let inner_loop i =
let rec loop j =
if j >= 5 then
Lwt.return ()
else
let* () =
let@ _sp =
Trace_lwt.with_span_lwt ~__FILE__ ~__LINE__ "inner.loop.step"
in
Trace.messagef (fun k -> k "hello %d %d" i j);
Trace.message "world";
let* () =
if j = 2 then
let@ _sp =
Trace_lwt.with_span_lwt ~__FILE__ ~__LINE__ "sub-sleep"
in
Lwt_unix.sleep 0.010
else
Lwt.return ()
in
Lwt_unix.sleep 0.006
in
loop (j + 1)
in
let@ _sp =
Trace_lwt.with_span_lwt ~force_toplevel:true ~__FILE__ ~__LINE__
"inner.loop"
in
loop 0
let outer_loop () =
let rec loop i =
if i = 50 then
Lwt.return ()
else
let* () =
let@ _sp =
Trace_lwt.with_span_lwt ~__FILE__ ~__LINE__ "outer.loop.step"
in
let fut_sleep =
let@ _sp =
Trace_lwt.with_span_lwt ~__FILE__ ~__LINE__ "outer.sleep"
in
Lwt_unix.sleep 0.09
in
let* () = inner_loop i and* () = inner_loop i in
let* () = fut_sleep in
Lwt.return ()
in
loop (i + 1)
in
let@ _sp =
Trace_lwt.with_span_lwt ~force_toplevel:true ~__FILE__ ~__LINE__
"outer.loop"
in
loop 0
let run () : unit Lwt.t =
Trace.set_process_name "main";
Trace.set_thread_name "t1";
let* () = outer_loop () and* () = outer_loop () in
Lwt.return ()
let () =
Trace_tef.Internal_.mock_all_ ();
Trace_tef.with_setup ~out:`Stdout () @@ fun () -> Lwt_main.run (run ())