diff --git a/.github/node_upgrade_pytest.sh b/.github/node_upgrade_pytest.sh index 8597981ff..6c6205d26 100755 --- a/.github/node_upgrade_pytest.sh +++ b/.github/node_upgrade_pytest.sh @@ -6,12 +6,11 @@ retval=1 export CARDANO_NODE_SOCKET_PATH="$CARDANO_NODE_SOCKET_PATH_CI" -export CLUSTER_ERA="${CLUSTER_ERA:-"babbage"}" -export TX_ERA="$CLUSTER_ERA" +export CLUSTER_ERA="${CLUSTER_ERA:-"conway"}" +export COMMAND_ERA="$CLUSTER_ERA" CLUSTER_SCRIPTS_DIR="$WORKDIR/cluster0_${CLUSTER_ERA}" STATE_CLUSTER="${CARDANO_NODE_SOCKET_PATH_CI%/*}" -NUM_CC=5 # init dir for step1 binaries STEP1_BIN="$WORKDIR/step1-bin" @@ -163,35 +162,20 @@ elif [ "$1" = "step2" ]; then selected_conway_file="shelley/genesis.conway.json" fi - # If the base revision doesn't have Conway genesis and the config file is for pool3, - # then don't add Conway genesis records. - if [[ "$fname" = "config-pool3.json" && "$selected_conway_hash" = "" ]]; then - jq \ - --arg byron_hash "$BYRON_GENESIS_HASH" \ - --arg shelley_hash "$SHELLEY_GENESIS_HASH" \ - --arg alonzo_file "$selected_alonzo_file" \ - --arg alonzo_hash "$selected_alonzo_hash" \ - '.ByronGenesisHash = $byron_hash - | .ShelleyGenesisHash = $shelley_hash - | .AlonzoGenesisFile = $alonzo_file - | .AlonzoGenesisHash = $alonzo_hash' \ - "$conf" > "$STATE_CLUSTER/$fname" - else - jq \ - --arg byron_hash "$BYRON_GENESIS_HASH" \ - --arg shelley_hash "$SHELLEY_GENESIS_HASH" \ - --arg alonzo_file "$selected_alonzo_file" \ - --arg alonzo_hash "$selected_alonzo_hash" \ - --arg conway_file "$selected_conway_file" \ - --arg conway_hash "$selected_conway_hash" \ - '.ByronGenesisHash = $byron_hash - | .ShelleyGenesisHash = $shelley_hash - | .AlonzoGenesisFile = $alonzo_file - | .AlonzoGenesisHash = $alonzo_hash - | .ConwayGenesisFile = $conway_file - | .ConwayGenesisHash = $conway_hash' \ - "$conf" > "$STATE_CLUSTER/$fname" - fi + jq \ + --arg byron_hash "$BYRON_GENESIS_HASH" \ + --arg shelley_hash "$SHELLEY_GENESIS_HASH" \ + --arg alonzo_file "$selected_alonzo_file" \ + --arg alonzo_hash "$selected_alonzo_hash" \ + --arg conway_file "$selected_conway_file" \ + --arg conway_hash "$selected_conway_hash" \ + '.ByronGenesisHash = $byron_hash + | .ShelleyGenesisHash = $shelley_hash + | .AlonzoGenesisFile = $alonzo_file + | .AlonzoGenesisHash = $alonzo_hash + | .ConwayGenesisFile = $conway_file + | .ConwayGenesisHash = $conway_hash' \ + "$conf" > "$STATE_CLUSTER/$fname" done # run the pool3 with the original cardano-node binary @@ -297,42 +281,11 @@ elif [ "$1" = "step3" ]; then # copy newly generated topology files to the cluster state dir cp -f "$WORKDIR"/dry_p2p/state-cluster0/topology-*.json "$STATE_CLUSTER" - # Create committee keys - mkdir -p "$STATE_CLUSTER/governance_data" - for i in $(seq 1 "$NUM_CC"); do - cardano-cli conway governance committee key-gen-cold \ - --cold-verification-key-file "$STATE_CLUSTER/governance_data/cc_member${i}_committee_cold.vkey" \ - --cold-signing-key-file "$STATE_CLUSTER/governance_data/cc_member${i}_committee_cold.skey" - cardano-cli conway governance committee key-gen-hot \ - --verification-key-file "$STATE_CLUSTER/governance_data/cc_member${i}_committee_hot.vkey" \ - --signing-key-file "$STATE_CLUSTER/governance_data/cc_member${i}_committee_hot.skey" - cardano-cli conway governance committee create-hot-key-authorization-certificate \ - --cold-verification-key-file "$STATE_CLUSTER/governance_data/cc_member${i}_committee_cold.vkey" \ - --hot-verification-key-file "$STATE_CLUSTER/governance_data/cc_member${i}_committee_hot.vkey" \ - --out-file "$STATE_CLUSTER/governance_data/cc_member${i}_committee_hot_auth.cert" - cardano-cli conway governance committee key-hash \ - --verification-key-file "$STATE_CLUSTER/governance_data/cc_member${i}_committee_cold.vkey" \ - > "$STATE_CLUSTER/governance_data/cc_member${i}_committee_cold.hash" - done - - # Pre-register committee in genesis - cp -f "$STATE_CLUSTER/shelley/genesis.conway.json" "$STATE_CLUSTER/shelley/genesis.conway.step2.json" - KEY_HASH_JSON=$(jq -nR '[inputs | {("keyHash-" + .): 10000}] | add' \ - "$STATE_CLUSTER"/governance_data/cc_member*_committee_cold.hash) - jq \ - --argjson keyHashJson "$KEY_HASH_JSON" \ - '.committee.members = $keyHashJson - | .committee.threshold = 0.6 - | .committeeMinSize = 2' \ - "$STATE_CLUSTER/shelley/genesis.conway.step2.json" > "$STATE_CLUSTER/shelley/genesis.conway.json" - # Copy newly generated config files to the cluster state dir, but use the original genesis files BYRON_GENESIS_HASH="$(jq -r ".ByronGenesisHash" "$STATE_CLUSTER/config-bft1.json")" SHELLEY_GENESIS_HASH="$(jq -r ".ShelleyGenesisHash" "$STATE_CLUSTER/config-bft1.json")" ALONZO_GENESIS_HASH="$(jq -r ".AlonzoGenesisHash" "$STATE_CLUSTER/config-bft1.json")" - # Use the new Conway genesis - CONWAY_GENESIS_HASH="$(cardano-cli genesis hash --genesis \ - "$STATE_CLUSTER/shelley/genesis.conway.json")" + CONWAY_GENESIS_HASH="$(jq -r ".ConwayGenesisHash" "$STATE_CLUSTER/config-bft1.json")" for conf in "$WORKDIR"/dry_p2p/state-cluster0/config-*.json; do fname="${conf##*/}" jq \ @@ -371,13 +324,6 @@ elif [ "$1" = "step3" ]; then pytest cardano_node_tests/tests/test_node_upgrade.py -k test_ignore_log_errors err_retval="$?" - # Update to Conway - pytest cardano_node_tests/tests/test_node_upgrade.py -k test_update_to_conway_pv9 || exit 6 - - # From now on, we are in the Conway era - unset TX_ERA - export CLUSTER_ERA=conway COMMAND_ERA=conway - # Run smoke tests pytest \ cardano_node_tests \ diff --git a/cardano_node_tests/tests/test_node_upgrade.py b/cardano_node_tests/tests/test_node_upgrade.py index 9f877683d..bc6d57856 100644 --- a/cardano_node_tests/tests/test_node_upgrade.py +++ b/cardano_node_tests/tests/test_node_upgrade.py @@ -12,9 +12,7 @@ from cardano_node_tests.cluster_management import cluster_management from cardano_node_tests.tests import common -from cardano_node_tests.utils import cluster_nodes from cardano_node_tests.utils import clusterlib_utils -from cardano_node_tests.utils import governance_utils from cardano_node_tests.utils import helpers from cardano_node_tests.utils import logfiles from cardano_node_tests.utils import temptools @@ -104,115 +102,6 @@ def test_ignore_log_errors( ignore_file_id=worker_id, ) - @allure.link(helpers.get_vcs_link()) - @pytest.mark.skipif(UPGRADE_TESTS_STEP != 3, reason="runs only on step 3 of upgrade testing") - def test_update_to_conway_pv9( - self, - cluster_singleton: clusterlib.ClusterLib, - payment_addr_locked: clusterlib.AddressRecord, - ): - """Update cluster to Conway PV9.""" - cluster = cluster_singleton - temp_template = common.get_test_id(cluster) - - def _update_to_pv9() -> None: - cluster.wait_for_new_epoch() - - update_proposal_pv9 = [ - clusterlib_utils.UpdateProposal( - arg="--protocol-major-version", - value=9, - name="", # needs custom check - ), - clusterlib_utils.UpdateProposal( - arg="--protocol-minor-version", - value=0, - name="", # needs custom check - ), - ] - - clusterlib_utils.update_params( - cluster_obj=cluster, - src_addr_record=payment_addr_locked, - update_proposals=update_proposal_pv9, - ) - - cluster.wait_for_new_epoch(padding_seconds=3) - - prot_ver = cluster.g_query.get_protocol_params()["protocolVersion"] - assert prot_ver["major"] == 9 - assert prot_ver["minor"] == 0 - - def _load_cc_members( - cluster_obj: clusterlib.ClusterLib, - ) -> tp.List[governance_utils.CCMemberAuth]: - data_dir = cluster_obj.state_dir / GOV_DATA_DIR - - cc_members = [] - for vkey_file in sorted(data_dir.glob("cc_member*_committee_cold.vkey")): - fpath = vkey_file.parent - fbase = vkey_file.name.replace("cold.vkey", "") - hot_vkey_file = fpath / f"{fbase}hot.vkey" - cold_vkey_hash = cluster_obj.g_conway_governance.committee.get_key_hash( - vkey_file=vkey_file - ) - auth_cert = fpath / f"{fbase}hot_auth.cert" - cold_key_pair = clusterlib.KeyPair( - vkey_file=vkey_file, skey_file=fpath / f"{fbase}cold.skey" - ) - hot_key_pair = clusterlib.KeyPair( - vkey_file=hot_vkey_file, skey_file=fpath / f"{fbase}hot.skey" - ) - cc_members.append( - governance_utils.CCMemberAuth( - auth_cert=auth_cert, - cold_key_pair=cold_key_pair, - hot_key_pair=hot_key_pair, - key_hash=cold_vkey_hash, - ) - ) - - return cc_members - - def _reg_cc_members( - cluster_obj: clusterlib.ClusterLib, cc_members: tp.List[governance_utils.CCMemberAuth] - ) -> None: - tx_files = clusterlib.TxFiles( - certificate_files=[c.auth_cert for c in cc_members], - signing_key_files=[ - payment_addr_locked.skey_file, - *[c.cold_key_pair.skey_file for c in cc_members], - ], - ) - - tx_output_auth = clusterlib_utils.build_and_submit_tx( - cluster_obj=cluster_obj, - name_template=f"{temp_template}_auth", - src_address=payment_addr_locked.address, - tx_files=tx_files, - ) - - auth_out_utxos = cluster_obj.g_query.get_utxo(tx_raw_output=tx_output_auth) - assert ( - clusterlib.filter_utxos(utxos=auth_out_utxos, address=payment_addr_locked.address)[ - 0 - ].amount - == clusterlib.calculate_utxos_balance(tx_output_auth.txins) - tx_output_auth.fee - ), f"Incorrect balance for source address `{payment_addr_locked.address}`" - - auth_committee_state = cluster_obj.g_conway_governance.query.committee_state() - for cm in cc_members: - member_key = f"keyHash-{cm.key_hash}" - member_rec = auth_committee_state["committee"][member_key] - assert ( - member_rec["hotCredsAuthStatus"]["tag"] == "MemberAuthorized" - ), "CC Member was NOT authorized" - - _update_to_pv9() - cluster_conway = cluster_nodes.get_cluster_type().get_cluster_obj(command_era="conway") - cc_members = _load_cc_members(cluster_obj=cluster_conway) - _reg_cc_members(cluster_obj=cluster_conway, cc_members=cc_members) - @pytest.mark.upgrade class TestUpgrade: diff --git a/src_docs/source/test_results/nightly_system_tests.rst b/src_docs/source/test_results/nightly_system_tests.rst index 16b201cf3..07bdb0145 100644 --- a/src_docs/source/test_results/nightly_system_tests.rst +++ b/src_docs/source/test_results/nightly_system_tests.rst @@ -52,20 +52,17 @@ Nightly upgrade testing * `Step 1 `__: |nightly-upgrade-step1-badge| * use the `latest cardano-node release `__ for Mainnet - * network in Babbage era - * Babbage transaction era + * network in Conway era + * protocol version 9 (bootstrap phase) + * Constitutional Commitee has 5 members * default (legacy) network topology * smoke tests * `Step 2 `__: |nightly-upgrade-step2-badge| * upgrade all nodes except one to latest cardano-node master - * network in Babbage era - * Babbage transaction era * mixed network topology (half nodes P2P, half nodes legacy topology) * smoke tests * `Step 3 `__: |nightly-upgrade-step3-badge| * upgrade the last remaining node to latest cardano-node master - * network in Babbage era - * Babbage transaction era * P2P network topology * smoke tests