From 654d1b265c5d8c2a60aebcd4cd5693995b22e19a Mon Sep 17 00:00:00 2001 From: Valentin Chaboche Date: Mon, 24 Apr 2023 14:52:01 +0200 Subject: [PATCH] Lib_context: allow context binary creation --- src/lib_context/disk/context.ml | 2 +- src/lib_context/memory/test/test.ml | 3 +- .../memory/tezos_context_memory.ml | 42 ++++++++++--------- .../memory_context.ml | 2 +- src/lib_protocol_environment/proxy_context.ml | 4 +- .../test_shell_context/test_proxy_context.ml | 2 +- src/lib_proxy/light_core.ml | 2 +- src/lib_proxy/proxy_getter.ml | 5 ++- .../test_helpers_shell_services.ml | 2 +- .../lib_client/client_proto_rollups.ml | 4 +- .../test/helpers/sc_rollup_helpers.ml | 2 +- .../test/helpers/sc_rollup_helpers.ml | 2 +- .../test/helpers/sc_rollup_helpers.ml | 25 ++--------- .../lib_sc_rollup/context_helpers.ml | 16 +------ 14 files changed, 45 insertions(+), 68 deletions(-) diff --git a/src/lib_context/disk/context.ml b/src/lib_context/disk/context.ml index 30b026d9e7e8..c0c0429270a5 100644 --- a/src/lib_context/disk/context.ml +++ b/src/lib_context/disk/context.ml @@ -545,7 +545,7 @@ module Make (Encoding : module type of Tezos_context_encoding.Context) = struct ~uniq:`False ~contents tree - (Tezos_context_memory.make_empty_tree ()) + (Tezos_context_memory.Context.make_empty_tree ()) let to_memory_tree (ctxt : t) (key : string list) : Tezos_context_memory.Context.tree option Lwt.t = diff --git a/src/lib_context/memory/test/test.ml b/src/lib_context/memory/test/test.ml index 7d73860e28e5..e3fe33fc4381 100644 --- a/src/lib_context/memory/test/test.ml +++ b/src/lib_context/memory/test/test.ml @@ -66,7 +66,8 @@ end module M = struct include Tezos_context_memory.Context - let make_context () = Lwt.return (Tezos_context_memory.make_empty_context ()) + let make_context () = + Lwt.return (Tezos_context_memory.Context.make_empty_context ()) end module Make (A : sig diff --git a/src/lib_context/memory/tezos_context_memory.ml b/src/lib_context/memory/tezos_context_memory.ml index d3d4c77b29ca..1f24ac9bd76c 100644 --- a/src/lib_context/memory/tezos_context_memory.ml +++ b/src/lib_context/memory/tezos_context_memory.ml @@ -25,25 +25,29 @@ (** See [src/lib_context/tezos_context.ml] for some information. *) -(** Variant of [Tezos_context.Context_binary] purely in-memory. *) -module Context_binary = Context.Make (Tezos_context_encoding.Context_binary) +module Make (Encoding : module type of Tezos_context_encoding.Context) = struct + include Context.Make (Encoding) -(** Variant of [Tezos_context.Context] purely in-memory. *) -module Context = Context.Make (Tezos_context_encoding.Context) + let make_empty_context ?(root = "/tmp") () = + let open Lwt_syntax in + let context_promise = + let+ index = init root in + empty index + in + match Lwt.state context_promise with + | Lwt.Return result -> result + | Lwt.Fail exn -> raise exn + | Lwt.Sleep -> + (* The in-memory context should never block *) + assert false -let make_empty_context ?(root = "/tmp") () = - let open Lwt_syntax in - let context_promise = - let+ index = Context.init root in - Context.empty index - in - match Lwt.state context_promise with - | Lwt.Return result -> result - | Lwt.Fail exn -> raise exn - | Lwt.Sleep -> - (* The in-memory context should never block *) - assert false + let make_empty_tree = + let dummy_context = make_empty_context ~root:"dummy" () in + fun () -> Tree.empty dummy_context +end -let make_empty_tree = - let dummy_context = make_empty_context ~root:"dummy" () in - fun () -> Context.Tree.empty dummy_context +(** Variant of [Tezos_context.Context_binary] purely in-memory. *) +module Context_binary = Make (Tezos_context_encoding.Context_binary) + +(** Variant of [Tezos_context.Context] purely in-memory. *) +module Context = Make (Tezos_context_encoding.Context) diff --git a/src/lib_protocol_environment/memory_context.ml b/src/lib_protocol_environment/memory_context.ml index 7401b463bd88..2b723f1bbd62 100644 --- a/src/lib_protocol_environment/memory_context.ml +++ b/src/lib_protocol_environment/memory_context.ml @@ -52,7 +52,7 @@ let project : Context.t -> t = let inject : t -> Context.t = fun ctxt -> Context.make ~ops ~ctxt ~kind:Context ~equality_witness ~impl_name -let empty = inject (Tezos_context_memory.make_empty_context ()) +let empty = inject (Tezos_context_memory.Context.make_empty_context ()) let encoding : Context.t Data_encoding.t = let open Data_encoding in diff --git a/src/lib_protocol_environment/proxy_context.ml b/src/lib_protocol_environment/proxy_context.ml index 8e6aa836e7b1..6324e992a4bd 100644 --- a/src/lib_protocol_environment/proxy_context.ml +++ b/src/lib_protocol_environment/proxy_context.ml @@ -36,7 +36,7 @@ module M = struct behave like [Memory_context]. *) type t = {proxy : Proxy_delegate.t option; local : Local.t} - let empty = Tezos_context_memory.make_empty_tree () + let empty = Tezos_context_memory.Context.make_empty_tree () end module C = struct @@ -401,7 +401,7 @@ include Environment_context.Register (C) let proxy_impl_name = "proxy" let empty proxy = - let local = Tezos_context_memory.make_empty_context () in + let local = Tezos_context_memory.Context.make_empty_context () in let ctxt = M.{proxy; local} in Context.make ~ops diff --git a/src/lib_protocol_environment/test_shell_context/test_proxy_context.ml b/src/lib_protocol_environment/test_shell_context/test_proxy_context.ml index 8f29a28e713e..98323bc4f021 100644 --- a/src/lib_protocol_environment/test_shell_context/test_proxy_context.ml +++ b/src/lib_protocol_environment/test_shell_context/test_proxy_context.ml @@ -56,7 +56,7 @@ let key_to_string : String.t list -> String.t = String.concat ";" (* Initialize the Context before starting the tests *) let init_contexts (f : Context.t -> unit Lwt.t) _ () : 'a Lwt.t = let open Lwt_syntax in - let ctxt = Tezos_context_memory.make_empty_context () in + let ctxt = Tezos_context_memory.Context.make_empty_context () in let* ctxt = create_block ctxt in let proxy : Context.t = Tezos_protocol_environment.Proxy_context.empty diff --git a/src/lib_proxy/light_core.ml b/src/lib_proxy/light_core.ml index 9e1e6e9b150e..502765cadb3a 100644 --- a/src/lib_proxy/light_core.ml +++ b/src/lib_proxy/light_core.ml @@ -73,7 +73,7 @@ let get_core (module Light_proto : Light_proto.PROTO_RPCS) let open Lwt_syntax in let+ repo = Store.Tree.make_repo () in let root = - Store.Tree.empty (Tezos_context_memory.make_empty_context ()) + Store.Tree.empty (Tezos_context_memory.Context.make_empty_context ()) in {repo; root} diff --git a/src/lib_proxy/proxy_getter.ml b/src/lib_proxy/proxy_getter.ml index e23914b5ce7e..e3745c61c1cf 100644 --- a/src/lib_proxy/proxy_getter.ml +++ b/src/lib_proxy/proxy_getter.ml @@ -106,7 +106,7 @@ let rec raw_context_to_tree (raw : Proof.raw_context) : Local.tree option Lwt.t String.Map.bindings map |> List.fold_left_s add_to_tree - (Tezos_context_memory.make_empty_tree ()) + (Tezos_context_memory.Context.make_empty_tree ()) in if Local.Tree.is_empty dir then return_none else return_some dir @@ -170,7 +170,8 @@ struct type key = Local.key - let empty = Local.Tree.empty (Tezos_context_memory.make_empty_context ()) + let empty = + Local.Tree.empty (Tezos_context_memory.Context.make_empty_context ()) let get = Local.Tree.find_tree diff --git a/src/lib_proxy/test_helpers/shell_services/test_helpers_shell_services.ml b/src/lib_proxy/test_helpers/shell_services/test_helpers_shell_services.ml index 93a955294377..48563c7e7ec3 100644 --- a/src/lib_proxy/test_helpers/shell_services/test_helpers_shell_services.ml +++ b/src/lib_proxy/test_helpers/shell_services/test_helpers_shell_services.ml @@ -53,7 +53,7 @@ let print_raw_context = Format.asprintf "%a" Proof.pp_raw_context module Store = Tezos_context_memory.Context -let empty = Tezos_context_memory.make_empty_context () +let empty = Tezos_context_memory.Context.make_empty_context () (* Stolen from src/lib_proxy/test/test_fuzzing_light.ml *) let irmin_tree_gen = diff --git a/src/proto_015_PtLimaPt/lib_client/client_proto_rollups.ml b/src/proto_015_PtLimaPt/lib_client/client_proto_rollups.ml index f41391a9c48c..055d068c8be8 100644 --- a/src/proto_015_PtLimaPt/lib_client/client_proto_rollups.ml +++ b/src/proto_015_PtLimaPt/lib_client/client_proto_rollups.ml @@ -152,7 +152,7 @@ module ScRollup = struct let aux = function | Sc_rollup.Kind.Example_arith -> let open Lwt_result_syntax in - let context = Tezos_context_memory.make_empty_context () in + let context = Tezos_context_memory.Context.make_empty_context () in let* proof = Arith_pvm.produce_origination_proof context boot_sector in @@ -165,7 +165,7 @@ module ScRollup = struct end)) | Sc_rollup.Kind.Wasm_2_0_0 -> let open Lwt_result_syntax in - let context = Tezos_context_memory.make_empty_context () in + let context = Tezos_context_memory.Context.make_empty_context () in let* proof = Wasm_pvm.produce_origination_proof context boot_sector in return (Sc_rollup.Wasm_2_0_0_pvm_with_proof diff --git a/src/proto_016_PtMumbai/lib_protocol/test/helpers/sc_rollup_helpers.ml b/src/proto_016_PtMumbai/lib_protocol/test/helpers/sc_rollup_helpers.ml index 9831d1fafba0..5ce360934fc6 100644 --- a/src/proto_016_PtMumbai/lib_protocol/test/helpers/sc_rollup_helpers.ml +++ b/src/proto_016_PtMumbai/lib_protocol/test/helpers/sc_rollup_helpers.ml @@ -167,7 +167,7 @@ let origination_proof ~boot_sector = function about the arity of its trees. *) let wrong_arith_origination_proof ~alter_binary_bit ~boot_sector = let open Lwt_syntax in - let context = Tezos_context_memory.make_empty_context () in + let context = Tezos_context_memory.Context.make_empty_context () in let+ proof = Wrong_arith_pvm.produce_origination_proof context boot_sector in let proof = WithExceptions.Result.get_ok ~loc:__LOC__ proof in let proof = diff --git a/src/proto_017_PtNairob/lib_protocol/test/helpers/sc_rollup_helpers.ml b/src/proto_017_PtNairob/lib_protocol/test/helpers/sc_rollup_helpers.ml index 401d5dfe7837..71123093c6bd 100644 --- a/src/proto_017_PtNairob/lib_protocol/test/helpers/sc_rollup_helpers.ml +++ b/src/proto_017_PtNairob/lib_protocol/test/helpers/sc_rollup_helpers.ml @@ -167,7 +167,7 @@ let compute_origination_proof ~boot_sector = function about the arity of its trees. *) let wrong_arith_origination_proof ~alter_binary_bit ~boot_sector = let open Lwt_syntax in - let context = Tezos_context_memory.make_empty_context () in + let context = Tezos_context_memory.Context.make_empty_context () in let+ proof = Wrong_arith_pvm.produce_origination_proof context boot_sector in let proof = WithExceptions.Result.get_ok ~loc:__LOC__ proof in let proof = diff --git a/src/proto_alpha/lib_protocol/test/helpers/sc_rollup_helpers.ml b/src/proto_alpha/lib_protocol/test/helpers/sc_rollup_helpers.ml index 401d5dfe7837..c36c33eb5abe 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/sc_rollup_helpers.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/sc_rollup_helpers.ml @@ -122,26 +122,9 @@ module Wasm_pvm : Tezos_context_memory.Context.Proof.t = Sc_rollup.Wasm_2_0_0PVM.Make (Environment.Wasm_2_0_0.Make) (In_memory_context) -(* TODO: https://gitlab.com/tezos/tezos/-/issues/4386 - Extracted and adapted from {!Tezos_context_memory}. *) -let make_empty_context ?(root = "/tmp") () = - let open Lwt_syntax in - let context_promise = - let+ index = Tezos_context_memory.Context_binary.init root in - Tezos_context_memory.Context_binary.empty index - in - match Lwt.state context_promise with - | Lwt.Return result -> result - | Lwt.Fail exn -> raise exn - | Lwt.Sleep -> - (* The in-memory context should never block *) - assert false - -(* TODO: https://gitlab.com/tezos/tezos/-/issues/4386 - Extracted and adapted from {!Tezos_context_memory}. *) -let make_empty_tree = - let dummy_context = make_empty_context ~root:"dummy" () in - fun () -> Tezos_context_memory.Context_binary.Tree.empty dummy_context +let make_empty_context = Tezos_context_memory.Context_binary.make_empty_context + +let make_empty_tree = Tezos_context_memory.Context_binary.make_empty_tree let compute_origination_proof ~boot_sector = function | Sc_rollup.Kind.Example_arith -> @@ -167,7 +150,7 @@ let compute_origination_proof ~boot_sector = function about the arity of its trees. *) let wrong_arith_origination_proof ~alter_binary_bit ~boot_sector = let open Lwt_syntax in - let context = Tezos_context_memory.make_empty_context () in + let context = Tezos_context_memory.Context.make_empty_context () in let+ proof = Wrong_arith_pvm.produce_origination_proof context boot_sector in let proof = WithExceptions.Result.get_ok ~loc:__LOC__ proof in let proof = diff --git a/src/proto_alpha/lib_sc_rollup/context_helpers.ml b/src/proto_alpha/lib_sc_rollup/context_helpers.ml index 122bb2ca52fd..2ab44f26d043 100644 --- a/src/proto_alpha/lib_sc_rollup/context_helpers.ml +++ b/src/proto_alpha/lib_sc_rollup/context_helpers.ml @@ -73,18 +73,6 @@ module In_memory = struct Tezos_context_merkle_proof_encoding.Merkle_proof_encoding.V2.Tree2 .tree_proof_encoding - (* TODO: https://gitlab.com/tezos/tezos/-/issues/4386 - Extracted and adapted from {!Tezos_context_memory}. *) - let make_empty_context ?(root = "/tmp") () = - let open Lwt_syntax in - let context_promise = - let+ index = Tezos_context_memory.Context_binary.init root in - Tezos_context_memory.Context_binary.empty index - in - match Lwt.state context_promise with - | Lwt.Return result -> result - | Lwt.Fail exn -> raise exn - | Lwt.Sleep -> - (* The in-memory context should never block *) - assert false + let make_empty_context = + Tezos_context_memory.Context_binary.make_empty_context end -- GitLab