mte/unikernel/duniverse/mirage-logs/test/test.ml
2025-11-11 02:07:51 +01:00

49 lines
1.6 KiB
OCaml

(* Copyright (C) 2016, Thomas Leonard <thomas.leonard@unikernel.com>
See the README file for details. *)
let src = Logs.Src.create "test" ~doc:"mirage-logs test code"
module Log = (val Logs.src_log src : Logs.LOG)
let noisy_src = Logs.Src.create "noisy" ~doc:"mirage-logs test noisy library"
module Noisy = (val Logs.src_log noisy_src : Logs.LOG)
let src_tag = Logs.Tag.def "src" ~doc:"Source address" Format.pp_print_string
let port_tag = Logs.Tag.def "port" ~doc:"Port number" Format.pp_print_int
let tags ~src ~port = Logs.Tag.(empty |> add src_tag src |> add port_tag port)
let with_pipe fn =
let r, w = Unix.pipe () in
let r = Unix.in_channel_of_descr r in
let w = Unix.out_channel_of_descr w in
fn ~r ~w;
close_out w;
try
Alcotest.fail (Printf.sprintf "Unexpected data in pipe: %S" (input_line r))
with End_of_file -> close_in r
let test_console r =
Log.info (fun f -> f "Simple test");
Alcotest.(check string)
"Simple" "1970-01-01T00:00:00Z: [INFO] [test] Simple test" (input_line r);
Log.warn (fun f ->
f ~tags:(tags ~src:"localhost" ~port:7000) "Packet rejected");
Alcotest.(check string)
"Tags"
"1970-01-01T00:00:00Z: src=localhost port=7000 [WARNING] [test] Packet \
rejected"
(input_line r);
Log.debug (fun f -> f "Not shown")
let test () =
with_pipe @@ fun ~r ~w ->
Mirage_ptime_set.set_tz_offset (Some 0);
Logs.(set_level (Some Info));
let reporter =
Mirage_logs.create ~ch:(Format.formatter_of_out_channel w) ()
in
Logs.set_reporter reporter;
test_console r
let () = Alcotest.run "mirage-logs" [ ("Tests", [ ("Logging", `Quick, test) ]) ]