diff --git a/src/proto_alpha/lib_protocol/init_storage.ml b/src/proto_alpha/lib_protocol/init_storage.ml index 2e49c84bf06279f343477bc3630377140701f48f..b23f509b66ab1dc991ca06e014970da48a559207 100644 --- a/src/proto_alpha/lib_protocol/init_storage.ml +++ b/src/proto_alpha/lib_protocol/init_storage.ml @@ -138,7 +138,9 @@ let prepare_first_block chain_id ctxt ~typecheck ~level ~timestamp = ( ctxt, commitments_balance_updates @ bootstrap_balance_updates @ deposits_balance_updates ) - | Jakarta_013 -> + | Jakarta_013 + (* Please update [next_protocol] and [previous_protocol] in + [tezt/lib_tezos/protocol.ml] when you update this value. *) -> (* TODO (#2704): possibly handle endorsements for migration block (in bakers); if that is done, do not set Storage.Tenderbake.First_level_of_protocol. *) Raw_level_repr.of_int32 level >>?= fun level -> diff --git a/tezt/lib_tezos/protocol.ml b/tezt/lib_tezos/protocol.ml index 521493b59dacf275a6dd5f0f5351c54eaebbb7b0..37375b95694a04d98d54ed261c341e19e95545d2 100644 --- a/tezt/lib_tezos/protocol.ml +++ b/tezt/lib_tezos/protocol.ml @@ -137,12 +137,12 @@ let write_parameter_file : let next_protocol = function | Ithaca -> Some Jakarta - | Jakarta -> None - | Kathmandu -> None + | Jakarta -> Some Kathmandu + | Kathmandu -> None (* To update once the migration starts from Kathmandu. *) | Alpha -> None let previous_protocol = function - | Alpha -> Some Jakarta + | Alpha -> Some Jakarta (* To update once the migration starts from K. *) | Jakarta -> Some Ithaca | Kathmandu -> Some Jakarta | Ithaca -> None diff --git a/tezt/tests/big_map_all.ml b/tezt/tests/big_map_all.ml index 3bf805870ebd493e02757e1f09baac243eab635f..092b582a319fb9710b1e160638e60d7bcc3b0502 100644 --- a/tezt/tests/big_map_all.ml +++ b/tezt/tests/big_map_all.ml @@ -28,7 +28,7 @@ Component: big_maps RPC Invocation: dune exec tezt/tests/main.exe -- big_map_all Subject: Check that RPC [/chain//blocks//context/big_maps] - behaves correctly with and without pagination + added in protocol G behaves correctly with and without pagination. *) let init ~protocol = @@ -174,16 +174,14 @@ let test_invalid_input_fail client = let* _ = must_fail ~offset:(-1) ~length:(-1) () in Lwt.return_unit -let test_wrapper ~protocol = - Test.register +let test_wrapper = + Protocol.register_test ~__FILE__ ~title: - (sf - "(%s) RPC \ - /chain//blocks//context/big_maps/?offset=[int]&length=[int]" - (Protocol.name protocol)) + "RPC \ + /chain//blocks//context/big_maps/?offset=[int]&length=[int]" ~tags:["big_map_all"; "rpc"] - @@ fun () -> + @@ fun protocol -> let* _, client = init ~protocol in let entries : (string * int) list = List.map (fun i -> (Format.sprintf "\"%04i\"" i, i)) all_values @@ -216,4 +214,4 @@ let test_wrapper ~protocol = let* () = test_invalid_input_fail client in Lwt.return_unit -let register () = test_wrapper ~protocol:Protocol.Alpha +let register ~protocols = test_wrapper protocols diff --git a/tezt/tests/main.ml b/tezt/tests/main.ml index 54b393baa1b8f8fea8ac3d7ad602f31a43c1af44..9ef98e5c6aa862dc77ed463c08214f432cb14d38 100644 --- a/tezt/tests/main.ml +++ b/tezt/tests/main.ml @@ -32,111 +32,125 @@ other files. *) -let protocols = - [Protocol.Alpha; Protocol.Kathmandu; Protocol.Jakarta; Protocol.Ithaca] - -let migrate_from = Protocol.Jakarta +let protocols = Protocol.[Ithaca; Jakarta; Kathmandu; Alpha] let migrate_to = Protocol.Alpha (* This module runs the tests implemented in all other modules of this directory. Each module defines tests which are thematically related, as functions to be called here. *) -let () = - (* Tests that are relatively protocol-agnostic. - We can run them on all protocols, or only one if the CI would be too slow. *) - Baker_test.register ~protocols:[Alpha] ; - Signer_test.register ~protocols:[Alpha] ; - Basic.register ~protocols:[Alpha] ; - Vdf_test.register ~protocols:[Kathmandu; Alpha] ; - Client_config.register ~protocols:[Alpha] ; - Client_commands.register ~protocols ; - Global_constants.register ~protocols:[Alpha] ; - Bootstrap.register ~protocols:[Alpha] ; - Hash_data.register ~protocols:[Alpha] ; - Synchronisation_heuristic.register ~protocols:[Alpha] ; - Normalize.register ~protocols:[Alpha] ; - Double_bake.register ~protocols:[Alpha] ; - Light.register ~protocols:[Alpha] ; - Mockup.register ~protocols:[Ithaca; Jakarta; Kathmandu; Alpha] ; - Mockup.register_constant_migration ~migrate_from ~migrate_to ; - Mockup.register_global_constants ~protocols:[Alpha] ; - Node_event_level.register ~protocols:[Alpha] ; - Proxy.register ~protocols ; - Proxy_server_test.register ~protocols:[Alpha] ; - P2p.register ~protocols:[Alpha] ; - Protocol_limits.register ~protocols:[Alpha] ; - Protocol_migration.register ~migrate_from ~migrate_to ; - User_activated_upgrade.register ~migrate_from ~migrate_to ; - Rpc_config_logging.register ~protocols:[Alpha] ; - Protocol_table_update.register ~migrate_from ~migrate_to ; - Cache_cache.register [Ithaca; Jakarta; Kathmandu; Alpha] ; - Baking.register ~protocols:[Ithaca; Jakarta; Kathmandu; Alpha] ; - Prevalidator.register ~protocols:[Ithaca; Jakarta; Kathmandu; Alpha] ; - Dal.register ~protocols:[Alpha] ; - Monitor_operations.register ~protocols:[Alpha] ; - Stresstest_command.register ~protocols:[Alpha] ; - (* Adding a new protocol would require adding samples at ./tezt/tests/encoding_samples directory*) - Encoding.register ~protocols ; - Precheck.register ~protocols:[Ithaca; Jakarta; Kathmandu; Alpha] ; - Tenderbake.register ~protocols:[Alpha] ; - Forge.register ~protocols:[Alpha] ; + +let register_protocol_independent_tests () = (* Tests that are protocol-independent. They do not take a protocol as a parameter and thus need to be registered only once. *) - Light.register_protocol_independent () ; - P2p.register_protocol_independent () ; - Proxy.register_protocol_independent () ; - Mockup.register_protocol_independent () ; Bootstrap.register_protocol_independent () ; Cli_tezos.register_protocol_independent () ; Client_keys.register_protocol_independent () ; - (* Tests that are heavily protocol-dependent. - Those modules define different tests for different protocols in their [register]. *) - RPC_test.register [Ithaca; Jakarta; Kathmandu; Alpha] ; - Demo_counter.register () ; + Light.register_protocol_independent () ; + Mockup.register_protocol_independent () ; + P2p.register_protocol_independent () ; + Proxy.register_protocol_independent () ; + Config.register () ; + Demo_counter.register () + +let register_protocol_migration_tests () = + (* Tests related to protocol migration. *) + let migrate_from = Option.get @@ Protocol.previous_protocol migrate_to in + Mockup.register_constant_migration ~migrate_from ~migrate_to ; + Protocol_migration.register ~migrate_from ~migrate_to ; + Protocol_table_update.register ~migrate_from ~migrate_to ; + User_activated_upgrade.register ~migrate_from ~migrate_to ; (* Alpha cannot stitch from Jakarta yet, but when it can, we can add a voting test from Jakarta to Alpha. *) Voting.register ~from_protocol:Ithaca ~to_protocol:(Known Jakarta) - ~loser_protocols:[Alpha] ; + ~loser_protocols:[migrate_to] ; Voting.register ~from_protocol:Ithaca ~to_protocol:Injected_test - ~loser_protocols:[Alpha; Ithaca] ; + ~loser_protocols:[migrate_to; Ithaca] ; Voting.register - ~from_protocol:Alpha + ~from_protocol:migrate_to ~to_protocol:Injected_test - ~loser_protocols:[Jakarta] ; + ~loser_protocols:[migrate_from] ; Voting.register - ~from_protocol:Alpha + ~from_protocol:migrate_to ~to_protocol:Demo - ~loser_protocols:[Jakarta] ; - (* This file tests an RPC added in protocol G *) - Big_map_all.register () ; - Reject_malformed_micheline.register ~protocols:[Alpha] ; - Tx_rollup.register ~protocols:[Alpha; Jakarta; Kathmandu] ; - Tx_rollup_node.register ~protocols:[Alpha; Jakarta; Kathmandu] ; + ~loser_protocols:[migrate_from] + +let register_protocol_agnostic_tests () = + (* Tests that are relatively protocol-agnostic. + We can run them on all protocols, or only one if the CI would be too slow. *) + Baker_test.register ~protocols:[Alpha] ; + Baking.register ~protocols ; + Basic.register ~protocols:[Alpha] ; + Big_map_all.register ~protocols:[Alpha] ; + Bootstrap.register ~protocols:[Alpha] ; + Cache_cache.register protocols ; + Client_config.register ~protocols:[Alpha] ; + Client_commands.register ~protocols ; + Dal.register ~protocols:[Alpha] ; + Deposits_limit.register ~protocols ; + Double_bake.register ~protocols:[Alpha] ; + Encoding.register ~protocols ; + Forge.register ~protocols:[Alpha] ; + Global_constants.register ~protocols:[Alpha] ; + Hash_data.register ~protocols:[Alpha] ; + Light.register ~protocols:[Alpha] ; Manager_operations.register ~protocols ; - Replace_by_fees.register ~protocols:[Ithaca; Jakarta; Kathmandu; Alpha] ; - Sc_rollup.register ~protocols:[Alpha] ; - Views.register [Alpha] ; + Mockup.register ~protocols ; + Mockup.register_global_constants ~protocols:[Alpha] ; + Monitor_operations.register ~protocols:[Alpha] ; + Node_event_level.register ~protocols:[Alpha] ; + Normalize.register ~protocols:[Alpha] ; + Op_validation.register ~protocols ; + Precheck.register ~protocols ; + Prevalidator.register ~protocols ; + Protocol_limits.register ~protocols:[Alpha] ; + Proxy.register ~protocols ; + Proxy_server_test.register ~protocols:[Alpha] ; + P2p.register ~protocols:[Alpha] ; + Reject_malformed_micheline.register ~protocols:[Alpha] ; + Replace_by_fees.register ~protocols ; + Rpc_config_logging.register ~protocols:[Alpha] ; + RPC_test.register protocols ; Runtime_script_failure.register ~protocols ; - Deposits_limit.register ~protocols:[Ithaca; Jakarta; Kathmandu; Alpha] ; + Signer_test.register ~protocols:[Alpha] ; + Stresstest_command.register ~protocols:[Alpha] ; + Synchronisation_heuristic.register ~protocols:[Alpha] ; + Tenderbake.register ~protocols:[Alpha] + +let register_J_plus_tests () = + (* Relies on a feature only available since J. + Move these to [register_protocol_agnostic_tests] once J is the smallest + protocol. *) + let protocols = Protocol.[Jakarta; Kathmandu; Alpha] in + Client_run_view.register ~protocols ; Large_metadata.register ~protocols:[Alpha] ; - (* Relies on a feature only available since J. *) + Multinode_snapshot.register ~protocols:[Alpha] ; Run_script.register ~protocols:[Alpha] ; Sapling.register ~protocols:[Alpha] ; - Client_run_view.register ~protocols:[Alpha; Jakarta; Kathmandu] ; - Multinode_snapshot.register ~protocols:[Alpha] ; + Tx_rollup.register ~protocols ; + Tx_rollup_node.register ~protocols ; + Views.register [Alpha] + +let register_K_plus_tests () = (* Relies on a feature only available since K. *) - Testnet_dictator.register ~protocols:[Alpha] ; + let protocols = Protocol.[Kathmandu; Alpha] in + Events.register ~protocols:[Alpha] ; Ghostnet_dictator_migration.register ~protocols:[Alpha] ; - Test_contract_bls12_381.register ~protocols:[Alpha] ; Increase_paid_storage.register ~protocols:[Alpha] ; - Config.register () ; - Events.register ~protocols:[Alpha] ; - (* Relies on a feature only available since K. *) - Op_validation.register ~protocols ; + Sc_rollup.register ~protocols:[Alpha] ; + Test_contract_bls12_381.register ~protocols:[Alpha] ; + Testnet_dictator.register ~protocols:[Alpha] ; + Vdf_test.register ~protocols + +let () = + register_protocol_independent_tests () ; + register_protocol_migration_tests () ; + register_protocol_agnostic_tests () ; + register_J_plus_tests () ; + register_K_plus_tests () ; (* Test.run () should be the last statement, don't register afterwards! *) Test.run ()