diff --git a/etherlink/tezt/lib/evm_node.ml b/etherlink/tezt/lib/evm_node.ml index 3f9a50a74d9bfd71364f77000423a5a4b1528d0c..d5afadf01787c1ba8b908850614aad80f40382a6 100644 --- a/etherlink/tezt/lib/evm_node.ml +++ b/etherlink/tezt/lib/evm_node.ml @@ -470,12 +470,16 @@ let name evm_node = evm_node.name let rpc_port evm_node = evm_node.persistent_state.rpc_port -let data_dir evm_node = ["--data-dir"; evm_node.persistent_state.data_dir] +let data_dir evm_node = evm_node.persistent_state.data_dir + +let data_dir_arg evm_node = ["--data-dir"; evm_node.persistent_state.data_dir] (* assume a valid config for the given command and uses new latest run command format. *) let run_args evm_node = - let shared_args = data_dir evm_node @ evm_node.persistent_state.arguments in + let shared_args = + data_dir_arg evm_node @ evm_node.persistent_state.arguments + in let mode_args = match evm_node.persistent_state.mode with | Proxy -> ["run"; "proxy"] @@ -596,7 +600,9 @@ module Config_file = struct end let spawn_init_config ?(extra_arguments = []) evm_node = - let shared_args = data_dir evm_node @ evm_node.persistent_state.arguments in + let shared_args = + data_dir_arg evm_node @ evm_node.persistent_state.arguments + in let time_between_blocks_fmt = function | Nothing -> "none" | Time_between_blocks f -> Format.sprintf "%.3f" f @@ -849,7 +855,7 @@ let init_from_rollup_node_data_dir ?reconstruct evm_node rollup_node = spawn_command evm_node (["init"; "from"; "rollup"; "node"; rollup_node_data_dir] - @ data_dir evm_node + @ data_dir_arg evm_node @ Cli_arg.optional_arg "reconstruct" Fun.id reconstruct) in Process.check process @@ -923,7 +929,7 @@ let transform_dump ~dump_json ~dump_rlp = let reset evm_node ~l2_level = let args = - ["reset"; "at"; string_of_int l2_level; "--force"] @ data_dir evm_node + ["reset"; "at"; string_of_int l2_level; "--force"] @ data_dir_arg evm_node in let process = Process.spawn evm_node.path @@ args in Process.check process diff --git a/etherlink/tezt/lib/evm_node.mli b/etherlink/tezt/lib/evm_node.mli index 968968a50710df4059ca7d4da52d5d89f9eb87a0..b43d0ac8f444a3de0aa12811ec60fb409a488177 100644 --- a/etherlink/tezt/lib/evm_node.mli +++ b/etherlink/tezt/lib/evm_node.mli @@ -113,6 +113,9 @@ val mode : t -> mode (** Returns the name of the EVM node. *) val name : t -> string +(** Returns the data_dir of the EVM node. *) +val data_dir : t -> string + (** [create ?name ?runner ?mode ?data_dir ?rpc_addr ?rpc_port rollup_node_endpoint] creates an EVM node server. diff --git a/etherlink/tezt/lib/helpers.ml b/etherlink/tezt/lib/helpers.ml index e0c10448a1961bd42138db2a5e35ac7ffb931c62..3bbc2b9e58874eaa6727d7cd90c00cdef2e7725d 100644 --- a/etherlink/tezt/lib/helpers.ml +++ b/etherlink/tezt/lib/helpers.ml @@ -116,7 +116,7 @@ let upgrade ~sc_rollup_node ~sc_rollup_address ~admin ~admin_contract ~client ~burn_cap:Tez.one client in - let* () = Client.bake_for_and_wait ~keys:[] client in + let* _ = next_rollup_node_level ~sc_rollup_node ~client in unit let check_block_consistency ~left ~right ?error_msg ~block () = diff --git a/etherlink/tezt/tests/evm_sequencer.ml b/etherlink/tezt/tests/evm_sequencer.ml index e68eebe6c49066ec53488886b01ee8678e75ac58..ab7085002fa2c36056a94056a71363e53d20777f 100644 --- a/etherlink/tezt/tests/evm_sequencer.ml +++ b/etherlink/tezt/tests/evm_sequencer.ml @@ -240,10 +240,7 @@ let setup_sequencer ~mainnet_compat ?genesis_timestamp ?time_between_blocks in let* sequencer_mode = if threshold_encryption then - let sequencer_sidecar_port = Some (Port.fresh ()) in - let sequencer_sidecar = - Dsn_node.sequencer ?rpc_port:sequencer_sidecar_port () - in + let sequencer_sidecar = Dsn_node.sequencer () in let* () = Dsn_node.start sequencer_sidecar in return @@ Evm_node.Threshold_encryption_sequencer @@ -669,6 +666,7 @@ let test_persistent_state = register_both ~tags:["evm"; "sequencer"] ~title:"Sequencer state is persistent across runs" + ~time_between_blocks:Nothing @@ fun {sequencer; _} _protocol -> (* Force the sequencer to produce a block. *) let*@ _ = Rpc.produce_block sequencer in @@ -886,7 +884,15 @@ let test_resilient_to_rollup_node_disconnect = (* Go through several cooldown periods to let the sequencer sends the rest of the blueprints. *) - let* () = bake_until_sync ~sc_rollup_node ~client ~sequencer ~proxy () in + let* () = + bake_until_sync + ~timeout_in_blocks:(catchup_cooldown * 3) + ~sc_rollup_node + ~client + ~sequencer + ~proxy + () + in (* Check the consistency again *) check_head_consistency @@ -1106,6 +1112,7 @@ let test_delayed_transfer_is_included = ~da_fee:arb_da_fee_for_delayed_inbox ~tags:["evm"; "sequencer"; "delayed_inbox"; "inclusion"] ~title:"Delayed transaction is included" + ~time_between_blocks:Nothing @@ fun { client; l1_contracts; @@ -1214,6 +1221,7 @@ let test_largest_delayed_transfer_is_included = let test_delayed_deposit_is_included = register_both + ~time_between_blocks:Nothing ~da_fee:arb_da_fee_for_delayed_inbox ~tags:["evm"; "sequencer"; "delayed_inbox"; "inclusion"; "deposit"] ~title:"Delayed deposit is included" @@ -1534,7 +1542,8 @@ let test_init_from_rollup_node_data_dir = ~tags:["evm"; "rollup_node"; "init"; "reconstruct"] ~title:"Init evm node sequencer data dir from a rollup node data dir" ~history_mode:Archive - @@ fun {sc_rollup_node; sequencer; proxy; client; boot_sector; _} _protocol -> + @@ fun {sc_rollup_node; sequencer; observer; proxy; client; boot_sector; _} + _protocol -> (* a sequencer is needed to produce an initial block *) let* () = repeat 5 (fun () -> @@ -1542,7 +1551,8 @@ let test_init_from_rollup_node_data_dir = unit) in let* () = bake_until_sync ~sc_rollup_node ~client ~sequencer ~proxy () in - let* () = Evm_node.terminate sequencer in + let* () = Evm_node.terminate sequencer + and* () = Evm_node.terminate observer in let evm_node' = Evm_node.create ~mode:(Evm_node.mode sequencer) @@ -2067,6 +2077,9 @@ let test_observer_timeout_when_necessary = | Observer conf -> Evm_node.Observer {conf with time_between_blocks = Some (Time_between_blocks 3.)} + | Threshold_encryption_observer conf -> + Evm_node.Threshold_encryption_observer + {conf with time_between_blocks = Some (Time_between_blocks 3.)} | _ -> Test.fail "Should be an observer" in @@ -3597,7 +3610,25 @@ let test_reset = let* () = Sc_rollup_node.run sc_rollup_node sc_rollup_address [Log_kernel_debug] in + + (* Recreate the evm node simply to reset the state of the tezt + instance. *) + let sequencer = + Evm_node.create + ~mode:(Evm_node.mode sequencer) + ~data_dir:(Evm_node.data_dir sequencer) + ~rpc_port:(Evm_node.rpc_port sequencer) + (Sc_rollup_node.endpoint sc_rollup_node) + in let* () = Evm_node.run sequencer in + let observer = + Evm_node.create + ~mode:(Evm_node.mode observer) + ~data_dir:(Evm_node.data_dir observer) + ~rpc_port:(Evm_node.rpc_port observer) + (Evm_node.endpoint sequencer) + in + let* () = Evm_node.run observer in Log.info "Check sequencer and observer is at %d level" reset_level ; @@ -3609,7 +3640,7 @@ let test_reset = reset." ; Check.((sequencer_level = observer_level) int32) ~error_msg: - "The sequencer (currently at level %L) and observer ( currently at level \ + "The sequencer (currently at level %L) and observer (currently at level \ %R) should be at the same level after both being reset." ; let* () = repeat after_reset_level (fun () ->