miragesdk: be a bit less verbose in debug mode

It's not very interesting to see the forwarded stdout/stderr messages as
they will end-up being printed anyway.

Signed-off-by: Thomas Gazagnaire <thomas@gazagnaire.org>
This commit is contained in:
Thomas Gazagnaire 2017-04-12 12:08:32 +02:00
parent b18d50b5e4
commit 2b0009ee06
3 changed files with 23 additions and 15 deletions

View File

@ -35,7 +35,7 @@ let pp ppf (Flow (name, _, _)) = Fmt.string ppf name
type t = flow type t = flow
let forward ~src ~dst = let forward ?(verbose=false) ~src ~dst =
let rec loop () = let rec loop () =
read src >>= function read src >>= function
| Ok `Eof -> | Ok `Eof ->
@ -45,8 +45,12 @@ let forward ~src ~dst =
Log.err (fun l -> l "forward[%a => %a] %a" pp src pp dst pp_error e); Log.err (fun l -> l "forward[%a => %a] %a" pp src pp dst pp_error e);
Lwt.return_unit Lwt.return_unit
| Ok (`Data buf) -> | Ok (`Data buf) ->
Log.debug (fun l -> l "forward[%a => %a] %d bytes" Log.debug (fun l ->
pp src pp dst @@ Cstruct.len buf); let payload =
if verbose then Fmt.strf "[%S]" @@ Cstruct.to_string buf
else Fmt.strf "%d bytes" (Cstruct.len buf)
in
l "forward[%a => %a] %s" pp src pp dst payload);
write dst buf >>= function write dst buf >>= function
| Ok () -> loop () | Ok () -> loop ()
| Error e -> | Error e ->
@ -56,8 +60,8 @@ let forward ~src ~dst =
in in
loop () loop ()
let proxy f1 f2 = let proxy ?verbose f1 f2 =
Lwt.join [ Lwt.join [
forward ~src:f1 ~dst:f2; forward ?verbose ~src:f1 ~dst:f2;
forward ~src:f2 ~dst:f1; forward ?verbose ~src:f2 ~dst:f1;
] ]

View File

@ -12,10 +12,14 @@ val create: (module Mirage_flow_lwt.S with type flow = 'a) -> 'a -> string -> fl
val pp: flow Fmt.t val pp: flow Fmt.t
(** [pp] is the pretty-printer for IO flows. *) (** [pp] is the pretty-printer for IO flows. *)
val forward: src:t -> dst:t -> unit Lwt.t val forward: ?verbose:bool -> src:t -> dst:t -> unit Lwt.t
(** [forward ~src ~dst] forwards writes from [src] to [dst]. Block (** [forward ?verbose ~src ~dst] forwards writes from [src] to
until either [src] or [dst] is closed. *) [dst]. Block until either [src] or [dst] is closed. If [verbose]
is set (by default it is not), show the raw flow in debug mode,
otherwise just show the lenght. *)
val proxy: t -> t -> unit Lwt.t val proxy: ?verbose:bool -> t -> t -> unit Lwt.t
(** [proxy x y] is the same as [forward x y <*> forward y x]. Block (** [proxy ?verbose x y] is the same as [forward x y <*> forward y
until both flows are closed. *) x]. Block until both flows are closed. If [verbose] is set (by
default it is not), show the raw flow in debug mode, otherwise
just show the lenght. *)

View File

@ -291,11 +291,11 @@ let exec_and_forward ?(handlers=block_for_ever) ~pid ~cmd ~net ~ctl t =
Lwt.pick ([ Lwt.pick ([
wait (); wait ();
(* data *) (* data *)
IO.proxy net priv_net; IO.proxy ~verbose:true net priv_net;
(* redirect the calf stdout to the shim stdout *) (* redirect the calf stdout to the shim stdout *)
IO.forward ~src:priv_stdout ~dst:Fd.(flow stdout); IO.forward ~verbose:false ~src:priv_stdout ~dst:Fd.(flow stdout);
IO.forward ~src:priv_stderr ~dst:Fd.(flow stderr); IO.forward ~verbose:false ~src:priv_stderr ~dst:Fd.(flow stderr);
(* TODO: Init.Fd.forward ~src:Init.Pipe.(priv metrics) (* TODO: Init.Fd.forward ~src:Init.Pipe.(priv metrics)
~dst:Init.Fd.metric; *) ~dst:Init.Fd.metric; *)
ctl priv_ctl; ctl priv_ctl;