package trace
Source file mock_.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46(** Mocking for tests *) module Inner = struct let mock = ref false let get_now_ns_ref = ref Time_util.get_time_ns let get_tid_ref = ref Thread_util.get_tid let get_pid_ref = ref Unix_util.get_pid (** used to mock timing *) let make_time_mock () : unit -> int64 = let time_ = ref 0 in let get_now_ns () : int64 = let x = !time_ in incr time_; Int64.(mul (of_int x) 1000L) in get_now_ns end (** Now, in nanoseconds. Uses {!get_now_ns_ref} *) let[@inline] now_ns () : int64 = if !Inner.mock then !Inner.get_now_ns_ref () else Time_util.get_time_ns () (** Current thread's ID. Uses {!get_tid_ref} *) let[@inline] get_tid () : int = if !Inner.mock then !Inner.get_tid_ref () else Thread_util.get_tid () let[@inline] get_pid () : int = if !Inner.mock then !Inner.get_pid_ref () else Unix_util.get_pid () let mock_all () : unit = Inner.mock := true; (Inner.get_pid_ref := fun () -> 2); (Inner.get_tid_ref := fun () -> 3); Inner.get_now_ns_ref := Inner.make_time_mock (); ()