From c5d15d3640779051e2aebe49999a814949914fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Henry?= Date: Sat, 28 Oct 2017 20:32:39 +0200 Subject: [PATCH] Test/Alpha: allows distinct port for distinct test. --- test/proto_alpha/proto_alpha_helpers.ml | 67 +++++++++++++----------- test/proto_alpha/proto_alpha_helpers.mli | 7 +-- test/proto_alpha/test_endorsement.ml | 2 +- test/proto_alpha/test_origination.ml | 2 +- test/proto_alpha/test_transaction.ml | 2 +- test/proto_alpha/test_vote.ml | 2 +- 6 files changed, 44 insertions(+), 38 deletions(-) diff --git a/test/proto_alpha/proto_alpha_helpers.ml b/test/proto_alpha/proto_alpha_helpers.ml index ca7a8ed2c..53a71a10d 100644 --- a/test/proto_alpha/proto_alpha_helpers.ml +++ b/test/proto_alpha/proto_alpha_helpers.ml @@ -13,8 +13,8 @@ let (//) = Filename.concat let () = Random.self_init () -let rpc_config : Client_rpcs.config = { - host = "localhost" ; +let rpc_config = ref { + Client_rpcs.host = "localhost" ; port = 8192 + Random.int 8192 ; tls = false ; logger = Client_rpcs.null_logger ; @@ -28,11 +28,16 @@ let dictator_sk = let activate_alpha () = let fitness = Fitness_repr.from_int64 0L in Client_embedded_genesis.Client_proto_main.mine - rpc_config (`Head 0) + !rpc_config (`Head 0) (Activate Client_proto_main.protocol) fitness dictator_sk -let init ?(sandbox = "sandbox.json") () = +let init ?(sandbox = "sandbox.json") ?rpc_port () = + begin + match rpc_port with + | None -> () + | Some port -> rpc_config := { !rpc_config with port } + end ; (* Handles relative path on OSX *) let executable_path = if Filename.is_relative Sys.argv.(0) @@ -42,14 +47,14 @@ let init ?(sandbox = "sandbox.json") () = Unix.chdir ".." ; let pid = Node_helpers.fork_node - ~port:rpc_config.port + ~port:!rpc_config.port ~sandbox:(Filename.dirname executable_path // sandbox) () in activate_alpha () >>=? fun hash -> return (pid, hash) let level block = - Client_proto_rpcs.Context.level rpc_config block + Client_proto_rpcs.Context.level !rpc_config block module Account = struct @@ -178,7 +183,7 @@ module Account = struct ~amount () = let amount = match Tez.of_cents amount with None -> Tez.zero | Some a -> a in let fee = match Tez.of_cents fee with None -> Tez.zero | Some a -> a in - Client_proto_context.transfer rpc_config + Client_proto_context.transfer !rpc_config block ~source:account.contract ~src_pk:account.pk @@ -205,7 +210,7 @@ module Account = struct let delegatable, delegate = match delegate with | None -> false, None | Some delegate -> true, Some delegate in - Client_proto_context.originate_account rpc_config block + Client_proto_context.originate_account !rpc_config block ~source:src.contract ~src_pk:src.pk ~src_sk:src.sk @@ -225,19 +230,19 @@ module Account = struct let fee = match Tez.of_cents fee with | None -> Tez.zero | Some amount -> amount in - Client_proto_context.delegate_contract rpc_config block + Client_proto_context.delegate_contract !rpc_config block ~source:contract ~manager_sk ~fee delegate_opt let balance ?(block = `Prevalidation) (account : t) = - Client_proto_rpcs.Context.Contract.balance rpc_config + Client_proto_rpcs.Context.Contract.balance !rpc_config block account.contract (* TODO: gather contract related functions in a Contract module? *) let delegate ?(block = `Prevalidation) (contract : Contract.t) = - Client_proto_rpcs.Context.Contract.delegate rpc_config + Client_proto_rpcs.Context.Contract.delegate !rpc_config block contract end @@ -247,12 +252,12 @@ module Protocol = struct open Account let voting_period_kind ?(block = `Prevalidation) () = - Client_proto_rpcs.Context.voting_period_kind rpc_config block + Client_proto_rpcs.Context.voting_period_kind !rpc_config block let proposals ?(block = `Prevalidation) ~src:({ pk; sk } : Account.t) proposals = - Client_node_rpcs.Blocks.info rpc_config block >>=? fun block_info -> - Client_proto_rpcs.Context.next_level rpc_config block >>=? fun next_level -> - Client_proto_rpcs.Helpers.Forge.Delegate.proposals rpc_config block + Client_node_rpcs.Blocks.info !rpc_config block >>=? fun block_info -> + Client_proto_rpcs.Context.next_level !rpc_config block >>=? fun next_level -> + Client_proto_rpcs.Helpers.Forge.Delegate.proposals !rpc_config block ~net_id:block_info.net_id ~branch:block_info.hash ~source:pk @@ -263,9 +268,9 @@ module Protocol = struct return (Tezos_data.Operation.of_bytes_exn signed_bytes) let ballot ?(block = `Prevalidation) ~src:({ pk; sk } : Account.t) ~proposal ballot = - Client_node_rpcs.Blocks.info rpc_config block >>=? fun block_info -> - Client_proto_rpcs.Context.next_level rpc_config block >>=? fun next_level -> - Client_proto_rpcs.Helpers.Forge.Delegate.ballot rpc_config block + Client_node_rpcs.Blocks.info !rpc_config block >>=? fun block_info -> + Client_proto_rpcs.Context.next_level !rpc_config block >>=? fun next_level -> + Client_proto_rpcs.Helpers.Forge.Delegate.ballot !rpc_config block ~net_id:block_info.net_id ~branch:block_info.hash ~source:pk @@ -388,7 +393,7 @@ module Assert = struct end let check_protocol ?msg ~block h = - Client_node_rpcs.Blocks.protocol rpc_config block >>=? fun block_proto -> + Client_node_rpcs.Blocks.protocol !rpc_config block >>=? fun block_proto -> return @@ Assert.equal ?msg:(Assert.format_msg msg) ~prn:Protocol_hash.to_b58check @@ -396,7 +401,7 @@ module Assert = struct block_proto h let check_voting_period_kind ?msg ~block kind = - Client_proto_rpcs.Context.voting_period_kind rpc_config block + Client_proto_rpcs.Context.voting_period_kind !rpc_config block >>=? fun current_kind -> return @@ Assert.equal ?msg:(Assert.format_msg msg) @@ -415,7 +420,7 @@ module Mining = struct | Ok nonce -> nonce in let seed_nonce_hash = Nonce.hash seed_nonce in Client_mining_forge.forge_block - rpc_config + !rpc_config block ~operations ~force:true @@ -427,7 +432,7 @@ module Mining = struct () let endorsement_reward block = - Client_proto_rpcs.Header.priority rpc_config block >>=? fun prio -> + Client_proto_rpcs.Header.priority !rpc_config block >>=? fun prio -> Mining.endorsement_reward ~block_priority:prio >|= Environment.wrap_error >>|? Tez.to_cents @@ -442,8 +447,8 @@ module Endorse = struct source slot = let block = Client_rpcs.last_mined_block block in - Client_node_rpcs.Blocks.info rpc_config block >>=? fun { hash ; net_id } -> - Client_proto_rpcs.Helpers.Forge.Delegate.endorsement rpc_config + Client_node_rpcs.Blocks.info !rpc_config block >>=? fun { hash ; net_id } -> + Client_proto_rpcs.Helpers.Forge.Delegate.endorsement !rpc_config block ~net_id:net_id ~branch:hash @@ -460,7 +465,7 @@ module Endorse = struct delegate level = Client_proto_rpcs.Helpers.Rights.endorsement_rights_for_delegate - rpc_config ~max_priority ~first_level:level ~last_level:level + !rpc_config ~max_priority ~first_level:level ~last_level:level block delegate () >>=? fun possibilities -> let slots = List.map (fun (_,slot) -> slot) @@ -471,7 +476,7 @@ module Endorse = struct ?slot (contract : Account.t) block = - Client_proto_rpcs.Context.next_level rpc_config block >>=? fun { level } -> + Client_proto_rpcs.Context.next_level !rpc_config block >>=? fun { level } -> begin match slot with | Some slot -> return slot @@ -490,7 +495,7 @@ module Endorse = struct let endorsers_list block = let get_endorser_list result (account : Account.t) level block = Client_proto_rpcs.Helpers.Rights.endorsement_rights_for_delegate - rpc_config block account.pkh + !rpc_config block account.pkh ~max_priority:16 ~first_level:level ~last_level:level () >>|? fun slots -> @@ -498,7 +503,7 @@ module Endorse = struct in let { Account.b1 ; b2 ; b3 ; b4 ; b5 } = Account.bootstrap_accounts in let result = Array.make 16 b1 in - Client_proto_rpcs.Context.level rpc_config block >>=? fun level -> + Client_proto_rpcs.Context.level !rpc_config block >>=? fun level -> let level = Raw_level.succ @@ level.level in get_endorser_list result b1 level block >>=? fun () -> get_endorser_list result b2 level block >>=? fun () -> @@ -510,11 +515,11 @@ module Endorse = struct let endorsement_rights ?(max_priority = 1024) (contract : Account.t) block = - Client_proto_rpcs.Context.level rpc_config block >>=? fun level -> + Client_proto_rpcs.Context.level !rpc_config block >>=? fun level -> let delegate = contract.pkh in let level = level.level in Client_proto_rpcs.Helpers.Rights.endorsement_rights_for_delegate - rpc_config + !rpc_config ~max_priority ~first_level:level ~last_level:level @@ -523,6 +528,6 @@ module Endorse = struct end let display_level block = - Client_proto_rpcs.Context.level rpc_config block >>=? fun lvl -> + Client_proto_rpcs.Context.level !rpc_config block >>=? fun lvl -> Format.eprintf "Level: %a@." Level.pp_full lvl ; return () diff --git a/test/proto_alpha/proto_alpha_helpers.mli b/test/proto_alpha/proto_alpha_helpers.mli index 515e92d62..fa3ebef34 100644 --- a/test/proto_alpha/proto_alpha_helpers.mli +++ b/test/proto_alpha/proto_alpha_helpers.mli @@ -9,7 +9,10 @@ module Ed25519 = Environment.Ed25519 -val init : ?sandbox:string -> unit -> (int * Block_hash.t) tzresult Lwt.t +val init : + ?sandbox:string -> + ?rpc_port:int -> + unit -> (int * Block_hash.t) tzresult Lwt.t (** [init ()] sets up the test environment, and return the PID of forked Tezos node and the block info of the block from where the tests will begin. *) @@ -192,6 +195,4 @@ module Assert : sig end -val rpc_config: Client_rpcs.config - val display_level: Client_proto_rpcs.block -> unit tzresult Lwt.t diff --git a/test/proto_alpha/test_endorsement.ml b/test/proto_alpha/test_endorsement.ml index 55bbe0f8a..9ed70c681 100644 --- a/test/proto_alpha/test_endorsement.ml +++ b/test/proto_alpha/test_endorsement.ml @@ -237,7 +237,7 @@ let run genesis = return () let main () = - Helpers.init () >>=? fun (_node_pid, genesis) -> + Helpers.init ~rpc_port:18100 () >>=? fun (_node_pid, genesis) -> run (`Hash genesis) diff --git a/test/proto_alpha/test_origination.ml b/test/proto_alpha/test_origination.ml index 7db1cdebe..f3f6e7c9c 100644 --- a/test/proto_alpha/test_origination.ml +++ b/test/proto_alpha/test_origination.ml @@ -79,7 +79,7 @@ let run blkid ({ b1 ; b2 ; _ } : Helpers.Account.bootstrap_accounts) = return blkh let main () = - Helpers.init () >>=? fun (_node_pid, hash) -> + Helpers.init ~rpc_port:18200 () >>=? fun (_node_pid, hash) -> run (`Hash hash) Helpers.Account.bootstrap_accounts >>=? fun _blkh -> return () diff --git a/test/proto_alpha/test_transaction.ml b/test/proto_alpha/test_transaction.ml index c971c6eb0..a8d6773c0 100644 --- a/test/proto_alpha/test_transaction.ml +++ b/test/proto_alpha/test_transaction.ml @@ -105,7 +105,7 @@ let run blkid ({ b1 ; b2 ; b3 ; _ } : Helpers.Account.bootstrap_accounts) = return blkh let main () = - Helpers.init () >>=? fun (_node_pid, hash) -> + Helpers.init ~rpc_port:18300 () >>=? fun (_node_pid, hash) -> run (`Hash hash) Helpers.Account.bootstrap_accounts >>=? fun _blkh -> return () diff --git a/test/proto_alpha/test_vote.ml b/test/proto_alpha/test_vote.ml index e49a219d1..9c2a5706c 100644 --- a/test/proto_alpha/test_vote.ml +++ b/test/proto_alpha/test_vote.ml @@ -84,7 +84,7 @@ let run_change_to_demo_proto block return (`Hash head) let change_to_demo_proto () = - init ~sandbox:"sandbox-vote.json" () >>=? fun (_node_pid, hash) -> + init ~sandbox:"sandbox-vote.json" ~rpc_port:18400 () >>=? fun (_node_pid, hash) -> run_change_to_demo_proto (`Hash hash) Account.bootstrap_accounts >>=? fun _blkh -> return ()