diff --git a/.gitlab/ci/pipelines/before_merging.yml b/.gitlab/ci/pipelines/before_merging.yml index 4c2fcacbbf241b185c76793e87502a329987501c..da111a326aa1325a3939dff71cb229ebed251a9f 100644 --- a/.gitlab/ci/pipelines/before_merging.yml +++ b/.gitlab/ci/pipelines/before_merging.yml @@ -1408,6 +1408,7 @@ opam:all_6: matrix: - package: - tezt-tezos + - tezos-protocol-genesis - tezos-openapi - tezos-dal-node-services - tezos-benchmark @@ -1419,7 +1420,6 @@ opam:all_6: - octez-l2-libs - efunc_core - dal_node_migrations - - bls12-381 opam:exec_6: image: ${ci_image_name}/prebuild:${ci_image_tag} @@ -1568,7 +1568,6 @@ opam:all_2: - octez-protocol-018-Proxford-libs - octez-protocol-017-PtNairob-libs - octez-protocol-016-PtMumbai-libs - - octez-protocol-005-PsBabyM1-libs - octez-protocol-004-Pt24m4xi-libs - octez-protocol-003-PsddFKi3-libs - octez-protocol-002-PsYLVpVv-libs @@ -1735,9 +1734,78 @@ opam:all_3: - octez-protocol-008-PtEdo2Zk-libs - octez-protocol-007-PsDELPH1-libs - octez-protocol-006-PsCARTHA-libs - - octez-node-config + - octez-protocol-005-PsBabyM1-libs - octez-crawler +opam:exec_2: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + when: delayed + start_in: 2 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + timeout: 60 minutes + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - ./scripts/ci/sccache-stop.sh + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_CACHE_SIZE: 5G + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - octez-experimental-agnostic-baker + opam:exec_4: image: ${ci_image_name}/prebuild:${ci_image_tag} stage: packaging @@ -1876,7 +1944,6 @@ opam:all_4: parallel: matrix: - package: - - tezos-protocol-010-PtGRANAD - tezos-protocol-009-PsFLoren - tezos-protocol-008-PtEdoTez - tezos-protocol-008-PtEdo2Zk @@ -1890,6 +1957,7 @@ opam:all_4: - tezos-protocol-001-PtCJ7pwo - tezos-protocol-000-Ps9mPmXa - tezos-dal-node-lib + - octez-node-config opam:exec_1: image: ${ci_image_name}/prebuild:${ci_image_tag} @@ -2036,7 +2104,6 @@ opam:all_5: parallel: matrix: - package: - - tezos-protocol-genesis - tezos-protocol-demo-noops - tezos-protocol-demo-counter - tezos-protocol-alpha @@ -2051,6 +2118,7 @@ opam:all_5: - tezos-protocol-013-PtJakart - tezos-protocol-012-Psithaca - tezos-protocol-011-PtHangz2 + - tezos-protocol-010-PtGRANAD opam:all_7: image: ${ci_image_name}/prebuild:${ci_image_tag} @@ -2130,6 +2198,7 @@ opam:all_7: - octez-distributed-lwt-internal - octez-distributed-internal - octez-alcotezt + - bls12-381 trigger:debian_repository_partial_auto: stage: test diff --git a/.gitlab/ci/pipelines/merge_train.yml b/.gitlab/ci/pipelines/merge_train.yml index 007cd0550e0fcd07c6b10dc327444fe23a73a93e..43b5a1fa386913ce83d47fc4b9f3a3a3f2a08955 100644 --- a/.gitlab/ci/pipelines/merge_train.yml +++ b/.gitlab/ci/pipelines/merge_train.yml @@ -1407,6 +1407,7 @@ opam:all_6: matrix: - package: - tezt-tezos + - tezos-protocol-genesis - tezos-openapi - tezos-dal-node-services - tezos-benchmark @@ -1418,7 +1419,6 @@ opam:all_6: - octez-l2-libs - efunc_core - dal_node_migrations - - bls12-381 opam:exec_6: image: ${ci_image_name}/prebuild:${ci_image_tag} @@ -1567,7 +1567,6 @@ opam:all_2: - octez-protocol-018-Proxford-libs - octez-protocol-017-PtNairob-libs - octez-protocol-016-PtMumbai-libs - - octez-protocol-005-PsBabyM1-libs - octez-protocol-004-Pt24m4xi-libs - octez-protocol-003-PsddFKi3-libs - octez-protocol-002-PsYLVpVv-libs @@ -1734,9 +1733,78 @@ opam:all_3: - octez-protocol-008-PtEdo2Zk-libs - octez-protocol-007-PsDELPH1-libs - octez-protocol-006-PsCARTHA-libs - - octez-node-config + - octez-protocol-005-PsBabyM1-libs - octez-crawler +opam:exec_2: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - if: $CI_MERGE_REQUEST_LABELS =~ /(?:^|,)ci--opam(?:$|,)/ + when: delayed + start_in: 2 minutes + - changes: + - '**/*.dune.inc' + - '**/*.opam' + - '**/dune' + - '**/dune-project' + - '**/dune-workspace' + - '**/dune.inc' + - .gitlab/ci/jobs/packaging/opam:prepare.yml + - .gitlab/ci/jobs/packaging/opam_package.yml + - manifest/**/*.ml* + - scripts/opam-prepare-repo.sh + - scripts/version.sh + when: delayed + start_in: 2 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + timeout: 60 minutes + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - ./scripts/ci/sccache-stop.sh + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_CACHE_SIZE: 5G + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - octez-experimental-agnostic-baker + opam:exec_4: image: ${ci_image_name}/prebuild:${ci_image_tag} stage: packaging @@ -1875,7 +1943,6 @@ opam:all_4: parallel: matrix: - package: - - tezos-protocol-010-PtGRANAD - tezos-protocol-009-PsFLoren - tezos-protocol-008-PtEdoTez - tezos-protocol-008-PtEdo2Zk @@ -1889,6 +1956,7 @@ opam:all_4: - tezos-protocol-001-PtCJ7pwo - tezos-protocol-000-Ps9mPmXa - tezos-dal-node-lib + - octez-node-config opam:exec_1: image: ${ci_image_name}/prebuild:${ci_image_tag} @@ -2035,7 +2103,6 @@ opam:all_5: parallel: matrix: - package: - - tezos-protocol-genesis - tezos-protocol-demo-noops - tezos-protocol-demo-counter - tezos-protocol-alpha @@ -2050,6 +2117,7 @@ opam:all_5: - tezos-protocol-013-PtJakart - tezos-protocol-012-Psithaca - tezos-protocol-011-PtHangz2 + - tezos-protocol-010-PtGRANAD opam:all_7: image: ${ci_image_name}/prebuild:${ci_image_tag} @@ -2129,6 +2197,7 @@ opam:all_7: - octez-distributed-lwt-internal - octez-distributed-internal - octez-alcotezt + - bls12-381 trigger:debian_repository_partial_auto: stage: test diff --git a/.gitlab/ci/pipelines/schedule_extended_test.yml b/.gitlab/ci/pipelines/schedule_extended_test.yml index 009679a17e39d04240549bb1c3eec0982b7ca87a..b5866aff04042b2dd4cf5a47c442890da1b3d887 100644 --- a/.gitlab/ci/pipelines/schedule_extended_test.yml +++ b/.gitlab/ci/pipelines/schedule_extended_test.yml @@ -975,6 +975,7 @@ opam:all_6: matrix: - package: - tezt-tezos + - tezos-protocol-genesis - tezos-openapi - tezos-dal-node-services - tezos-benchmark @@ -986,7 +987,6 @@ opam:all_6: - octez-l2-libs - efunc_core - dal_node_migrations - - bls12-381 opam:exec_6: image: ${ci_image_name}/prebuild:${ci_image_tag} @@ -1105,7 +1105,6 @@ opam:all_2: - octez-protocol-018-Proxford-libs - octez-protocol-017-PtNairob-libs - octez-protocol-016-PtMumbai-libs - - octez-protocol-005-PsBabyM1-libs - octez-protocol-004-Pt24m4xi-libs - octez-protocol-003-PsddFKi3-libs - octez-protocol-002-PsYLVpVv-libs @@ -1240,9 +1239,64 @@ opam:all_3: - octez-protocol-008-PtEdo2Zk-libs - octez-protocol-007-PsDELPH1-libs - octez-protocol-006-PsCARTHA-libs - - octez-node-config + - octez-protocol-005-PsBabyM1-libs - octez-crawler +opam:exec_2: + image: ${ci_image_name}/prebuild:${ci_image_tag} + stage: packaging + tags: + - gcp + rules: + - when: delayed + start_in: 2 minutes + needs: + - oc.docker:ci:amd64 + - opam:prepare + dependencies: + - oc.docker:ci:amd64 + - opam:prepare + timeout: 60 minutes + cache: + - key: opam-sccache + paths: + - $CI_PROJECT_DIR/_build/_sccache + policy: pull-push + - key: cargo-$CI_JOB_NAME_SLUG + paths: + - $CI_PROJECT_DIR/.cargo/registry/cache + policy: pull-push + interruptible: false + before_script: + - eval $(opam env) + - mkdir -p $CI_PROJECT_DIR/opam_logs + - . ./scripts/ci/sccache-start.sh + script: + - opam remote add dev-repo ./_opam-repo-for-release + - opam install --yes ${package}.dev + - opam reinstall --yes --with-test ${package}.dev + after_script: + - eval $(opam env) + - OPAM_LOGS=opam_logs ./scripts/ci/opam_handle_output.sh + - ./scripts/ci/sccache-stop.sh + variables: + RUNTEZTALIAS: "true" + SCCACHE_DIR: $CI_PROJECT_DIR/_build/_sccache + SCCACHE_CACHE_SIZE: 5G + SCCACHE_ERROR_LOG: $CI_PROJECT_DIR/opam_logs/sccache.log + SCCACHE_IDLE_TIMEOUT: "0" + CARGO_NET_OFFLINE: "false" + artifacts: + expire_in: 1 week + paths: + - opam_logs/ + when: always + retry: 2 + parallel: + matrix: + - package: + - octez-experimental-agnostic-baker + opam:exec_4: image: ${ci_image_name}/prebuild:${ci_image_tag} stage: packaging @@ -1351,7 +1405,6 @@ opam:all_4: parallel: matrix: - package: - - tezos-protocol-010-PtGRANAD - tezos-protocol-009-PsFLoren - tezos-protocol-008-PtEdoTez - tezos-protocol-008-PtEdo2Zk @@ -1365,6 +1418,7 @@ opam:all_4: - tezos-protocol-001-PtCJ7pwo - tezos-protocol-000-Ps9mPmXa - tezos-dal-node-lib + - octez-node-config opam:exec_1: image: ${ci_image_name}/prebuild:${ci_image_tag} @@ -1481,7 +1535,6 @@ opam:all_5: parallel: matrix: - package: - - tezos-protocol-genesis - tezos-protocol-demo-noops - tezos-protocol-demo-counter - tezos-protocol-alpha @@ -1496,6 +1549,7 @@ opam:all_5: - tezos-protocol-013-PtJakart - tezos-protocol-012-Psithaca - tezos-protocol-011-PtHangz2 + - tezos-protocol-010-PtGRANAD opam:all_7: image: ${ci_image_name}/prebuild:${ci_image_tag} @@ -1559,6 +1613,7 @@ opam:all_7: - octez-distributed-lwt-internal - octez-distributed-internal - octez-alcotezt + - bls12-381 trigger:debian_repository_full: stage: test diff --git a/manifest/product_octez.ml b/manifest/product_octez.ml index b15aff2d844863a87c79be66e1d705317a1c0485..2a3a8bf55fca4784f2c5153e928393c5f10b80cf 100644 --- a/manifest/product_octez.ml +++ b/manifest/product_octez.ml @@ -8003,7 +8003,7 @@ let _octez_experimental_agnostic_baker = ~path:"src/bin_agnostic_baker" ~internal_name:"main_agnostic_baker" ~synopsis:"Tezos: `octez-experimental-agnostic-baker` binary for baking" - ~release_status:Unreleased + ~release_status:Released ~with_macos_security_framework:true ~deps: [ diff --git a/script-inputs/ci-opam-package-tests b/script-inputs/ci-opam-package-tests index 03ef22e847f068a93a3f87d36186bd1759398154..75905c5e4b942feadef7451f1417e6dcc315076c 100644 --- a/script-inputs/ci-opam-package-tests +++ b/script-inputs/ci-opam-package-tests @@ -1,4 +1,4 @@ -bls12-381 all 6 +bls12-381 all 7 dal_node_migrations all 6 efunc_core all 6 octez-accuser-PsQuebec exec 1 @@ -10,12 +10,13 @@ octez-crawler all 3 octez-dal-node exec 1 octez-distributed-internal all 7 octez-distributed-lwt-internal all 7 +octez-experimental-agnostic-baker exec 2 octez-injector all 2 octez-internal-libs all 7 octez-l2-libs all 6 octez-libs all 6 octez-node exec 1 -octez-node-config all 3 +octez-node-config all 4 octez-performance-metrics all 6 octez-proto-libs all 6 octez-protocol-000-Ps9mPmXa-libs all 2 @@ -23,7 +24,7 @@ octez-protocol-001-PtCJ7pwo-libs all 2 octez-protocol-002-PsYLVpVv-libs all 2 octez-protocol-003-PsddFKi3-libs all 2 octez-protocol-004-Pt24m4xi-libs all 2 -octez-protocol-005-PsBabyM1-libs all 2 +octez-protocol-005-PsBabyM1-libs all 3 octez-protocol-006-PsCARTHA-libs all 3 octez-protocol-007-PsDELPH1-libs all 3 octez-protocol-008-PtEdo2Zk-libs all 3 @@ -80,7 +81,7 @@ tezos-protocol-007-PsDELPH1 all 4 tezos-protocol-008-PtEdo2Zk all 4 tezos-protocol-008-PtEdoTez all 4 tezos-protocol-009-PsFLoren all 4 -tezos-protocol-010-PtGRANAD all 4 +tezos-protocol-010-PtGRANAD all 5 tezos-protocol-011-PtHangz2 all 5 tezos-protocol-012-Psithaca all 5 tezos-protocol-013-PtJakart all 5 @@ -95,5 +96,5 @@ tezos-protocol-021-PsQuebec all 5 tezos-protocol-alpha all 5 tezos-protocol-demo-counter all 5 tezos-protocol-demo-noops all 5 -tezos-protocol-genesis all 5 +tezos-protocol-genesis all 6 tezt-tezos all 6 diff --git a/script-inputs/released-executables b/script-inputs/released-executables index fb30eb72d633d98bcc634ee5fa5c331730b22f06..a34278d12d24c0abbc8f0e9c4d44cb8730cc47dc 100644 --- a/script-inputs/released-executables +++ b/script-inputs/released-executables @@ -5,6 +5,7 @@ octez-signer octez-codec octez-client octez-admin-client +octez-experimental-agnostic-baker octez-node octez-accuser-PsQuebec octez-baker-PsQuebec diff --git a/tezt/lib_tezos/agnostic_baker.ml b/tezt/lib_tezos/agnostic_baker.ml index e418593d4caa77e251e88a783d3e86b7e74f6621..6543fe5102f4fb74559a3166cab243805f5b1f9f 100644 --- a/tezt/lib_tezos/agnostic_baker.ml +++ b/tezt/lib_tezos/agnostic_baker.ml @@ -12,6 +12,10 @@ let liquidity_baking_vote_to_string = function | On -> "on" | Pass -> "pass" +type protocol_status = Active | Frozen | Ignore + +let protocol_status = function Protocol.Alpha -> Ignore | _ -> Active + module Parameters = struct type persistent_state = { delegates : string list; diff --git a/tezt/lib_tezos/agnostic_baker.mli b/tezt/lib_tezos/agnostic_baker.mli index dfe8d069592ed10597e71ed3c243524fdedd3c56..183c2b134cc64e5e84c17dd369b0739b1236c039 100644 --- a/tezt/lib_tezos/agnostic_baker.mli +++ b/tezt/lib_tezos/agnostic_baker.mli @@ -54,6 +54,12 @@ type liquidity_baking_vote = Off | On | Pass (** Returns the string representation of a [liquidity_baking_vote]. *) val liquidity_baking_vote_to_string : liquidity_baking_vote -> string +(** Protocol status values. *) +type protocol_status = Active | Frozen | Ignore + +(** Returns the protocol status given the full protocol value. *) +val protocol_status : Protocol.t -> protocol_status + (** Create a agnostic baker. This function just creates a value of type [t], it does not call {!val:run}. diff --git a/tezt/manual_tests/main.ml b/tezt/manual_tests/main.ml index 8b363ba60dcedf2d184c9a745ee7ec828a04ad57..d4823982d7cf2865847c34929cdc5a94eff36757 100644 --- a/tezt/manual_tests/main.ml +++ b/tezt/manual_tests/main.ml @@ -29,9 +29,6 @@ let () = (* Since manual tests do not run in the CI, we do not care about [~uses]. *) - Agnostic_baking.register - ~migrate_from:(Option.get @@ Protocol.previous_protocol Protocol.Alpha) - ~migrate_to:Protocol.Alpha ; Tezt_wrapper.error_mode_for_missing_use := Ignore ; Tezt_wrapper.error_mode_for_useless_use := Ignore ; Stresstest_command.register ~protocols:Protocol.all ; diff --git a/tezt/manual_tests/agnostic_baking.ml b/tezt/tests/agnostic_baker_test.ml similarity index 67% rename from tezt/manual_tests/agnostic_baking.ml rename to tezt/tests/agnostic_baker_test.ml index b20182d010dc873d5bd0a9c966455085043a4c1d..0d8cd2091df518f6d1d277aedb85e99e65fd9a07 100644 --- a/tezt/manual_tests/agnostic_baking.ml +++ b/tezt/tests/agnostic_baker_test.ml @@ -8,53 +8,11 @@ (* Testing ------- Component: Agnostic baker (octez-experimental-agnostic-baker) - Invocation: dune exec tezt/manual_tests/main.exe -- --file agnostic_baking.ml + Invocation: dune exec tezt/tests/main.exe -- --file agnostic_baker_test.ml Subject: Ensure that the agnostic baker behaves as expected *) -(** Boilerplate code to create a user-migratable node. Used in the - tests below. **) -let user_migratable_node_init ?node_name ?client_name ?(more_node_args = []) - ~migration_level ~migrate_to () = - let* node = - Node.init - ?name:node_name - ~patch_config: - (Node.Config_file.set_sandbox_network_with_user_activated_upgrades - [(migration_level, migrate_to)]) - ([Node.Synchronisation_threshold 0; Private_mode] @ more_node_args) - in - let* client = Client.(init ?name:client_name ~endpoint:(Node node) ()) in - Lwt.return (client, node) - -(** [block_check ?level ~expected_block_type ~migrate_to ~migrate_from client] - is generic check that a block of type [expected_block_type] contains - (protocol) metatadata conforming to its type at [level]. **) -let block_check ?level ~expected_block_type ~migrate_to ~migrate_from client = - let block = - match level with Some level -> Some (string_of_int level) | None -> None - in - let* metadata = - Client.RPC.call client @@ RPC.get_chain_block_metadata ?block () - in - let protocol = metadata.protocol in - let next_protocol = metadata.next_protocol in - (match expected_block_type with - | `Migration -> - Check.( - (next_protocol = Protocol.hash migrate_to) - string - ~error_msg:"expected next protocol to be %R, got %L") ; - Check.( - (protocol = Protocol.hash migrate_from) - string - ~error_msg:"expected (from) protocol to be %R, got %L") - | `Non_migration -> - Check.( - (next_protocol = protocol) - string - ~error_msg:"expected a non migration block ")) ; - Lwt.return_unit +let team = Tag.layer1 let wait_for_active_protocol_waiting agnostic_baker = Agnostic_baker.wait_for @@ -80,7 +38,7 @@ let perform_protocol_migration ?(resilience_test = false) ?node_name assert (migration_level >= blocks_per_cycle) ; Log.info "Node starting" ; let* client, node = - user_migratable_node_init + Protocol_migration.user_migratable_node_init ?node_name ?client_name ~migration_level @@ -101,7 +59,7 @@ let perform_protocol_migration ?(resilience_test = false) ?node_name let Account.{alias; public_key_hash; _} = account in Client.import_signer_key client ~alias ~public_key_hash uri) keys - else Lwt.return_unit + else unit in Log.info "Node %s initialized" (Node.name node) ; let baker = Agnostic_baker.create node client in @@ -146,7 +104,7 @@ let perform_protocol_migration ?(resilience_test = false) ?node_name Log.info "New pre-migration baker process is taking over (pid: %d)" new_pid ; - Lwt.return_unit) + unit) else unit in (* Wait one block before the new protocol activation to register the @@ -164,7 +122,7 @@ let perform_protocol_migration ?(resilience_test = false) ?node_name (* Ensure that the block before migration is consistent *) Log.info "Checking migration block consistency" ; let* () = - block_check + Protocol_migration.block_check ~expected_block_type:`Migration client ~migrate_from @@ -175,7 +133,7 @@ let perform_protocol_migration ?(resilience_test = false) ?node_name (* Ensure that we migrated *) Log.info "Checking migration block consistency" ; let* () = - block_check + Protocol_migration.block_check ~expected_block_type:`Non_migration client ~migrate_from @@ -204,41 +162,44 @@ let perform_protocol_migration ?(resilience_test = false) ?node_name Log.info "New post-migration baker process is taking over (pid: %d)" new_pid ; - Lwt.return_unit) + unit) else unit in let* _level = Node.wait_for_level node baked_blocks_after_migration in let* () = Agnostic_baker.terminate baker in - Lwt.return_unit + unit -let raw_migrate ~resilience_test ~migrate_from ~migrate_to - ?(use_remote_signer = false) () = - let parameters = JSON.parse_file (Protocol.parameter_file migrate_to) in +let raw_migrate ~resilience_test ?(use_remote_signer = false) = + let remote_signer_text, remote_signer = + if use_remote_signer then + (" using HTTP remote signer", [Constant.octez_signer]) + else ("", []) + in + let parameters = JSON.parse_file (Protocol.parameter_file Protocol.Alpha) in + Protocol.register_test + ~__FILE__ + ~title: + (Format.asprintf + "Protocol migration from protocol to alpha with agnostic baker%s %s" + remote_signer_text + (if resilience_test then "and resilience test" else "")) + ~tags:["protocol"; "migration"; "agnostic"; "baker"] + ~uses:(fun _protocol -> + [Constant.octez_experimental_agnostic_baker] @ remote_signer) + @@ fun protocol -> let blocks_per_cycle = JSON.(get "blocks_per_cycle" parameters |> as_int) in let consensus_rights_delay = JSON.(get "consensus_rights_delay" parameters |> as_int) in (* Migration level is set arbitrarily *) let migration_level = blocks_per_cycle in - Test.register - ~__FILE__ - ~title: - (Format.sprintf - "Protocol migration (from %s to %s) with agnostic baker%s %s" - (Protocol.tag migrate_from) - (Protocol.tag migrate_to) - (if use_remote_signer then " using HTTP remote signer" else "") - (if resilience_test then " and resilience test" else "")) - ~tags:["protocol"; "migration"; "agnostic"; "baker"] - ~uses:[Constant.octez_experimental_agnostic_baker] - @@ fun () -> let* () = perform_protocol_migration ~use_remote_signer ~blocks_per_cycle ~migration_level - ~migrate_from - ~migrate_to + ~migrate_from:protocol + ~migrate_to:Protocol.Alpha ~baked_blocks_after_migration: (2 * consensus_rights_delay * blocks_per_cycle) () @@ -246,35 +207,32 @@ let raw_migrate ~resilience_test ~migrate_from ~migrate_to unit let start_stop = - Test.register + Protocol.register_test ~__FILE__ ~title:"Agnostic baker starts and stops" - ~tags:["sandbox"; "agnostic"; "baker"; "init"] - ~uses:[Constant.octez_experimental_agnostic_baker] - @@ fun () -> + ~tags:[team; "sandbox"; "agnostic"; "baker"; "init"] + ~uses:(fun _protocol -> [Constant.octez_experimental_agnostic_baker]) + @@ fun _protocol -> let* node, client = Client.init_with_node `Client () in let* baker = Agnostic_baker.init node client in let* () = Agnostic_baker.wait_for_ready baker in let* () = Agnostic_baker.terminate baker in unit -let migrate ~migrate_from ~migrate_to = - raw_migrate ~resilience_test:false ~migrate_from ~migrate_to +let migrate = raw_migrate ~resilience_test:false -let migrate_with_resilience_test ~migrate_from ~migrate_to = - raw_migrate ~resilience_test:true ~migrate_from ~migrate_to +let migrate_with_resilience_test = raw_migrate ~resilience_test:true -let register ~migrate_from ~migrate_to = - start_stop ; - migrate ~migrate_from ~migrate_to ~use_remote_signer:false () ; - migrate ~migrate_from ~migrate_to ~use_remote_signer:true () ; - migrate_with_resilience_test - ~migrate_from - ~migrate_to - ~use_remote_signer:false - () ; - migrate_with_resilience_test - ~migrate_from - ~migrate_to - ~use_remote_signer:true - () +let register ~protocols = + start_stop protocols ; + let filter_migratable_protocols protocol = + (* We want to migrate only from Active protocols *) + Agnostic_baker.protocol_status protocol = Active + in + let migratable_protocols = + List.filter filter_migratable_protocols protocols + in + migrate ~use_remote_signer:false migratable_protocols ; + migrate ~use_remote_signer:true migratable_protocols ; + migrate_with_resilience_test ~use_remote_signer:false migratable_protocols ; + migrate_with_resilience_test ~use_remote_signer:true migratable_protocols diff --git a/tezt/tests/main.ml b/tezt/tests/main.ml index f7f10695f40489ba350efb71f491d38701c6f603..8b43218d168230c8d0c124eacf1f3f6cba3e1f18 100644 --- a/tezt/tests/main.ml +++ b/tezt/tests/main.ml @@ -112,6 +112,7 @@ let register_old_protocol_migration_tests () = let register_protocol_tests_that_use_supports_correctly () = let protocols = Protocol.all in Adaptive_issuance.register ~protocols ; + Agnostic_baker_test.register ~protocols ; Bad_annot.register ~protocols ; Bad_indentation.register ~protocols ; Baker_test.register ~protocols ;