Skip to content

Commit 55f12e4

Browse files
committed
fix(dbsync_utils): use get_pool_param for pool fields
Refactored `check_pool_data` and related functions to consistently use `helpers.get_pool_param` for extracting pool parameters such as cost, metadata, owners, vrf, pledge, margin, reward account, and relays from `ledger_pool_data`. This improves compatibility with different cardano-node versions and centralizes parameter extraction logic.
1 parent b22021e commit 55f12e4

File tree

1 file changed

+35
-21
lines changed

1 file changed

+35
-21
lines changed

cardano_node_tests/utils/dbsync_utils.py

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -651,19 +651,25 @@ def check_pool_data( # noqa: C901
651651

652652
errors_list = []
653653

654-
if ledger_pool_data["publicKey"] != db_pool_data.hash:
654+
public_key = (
655+
ledger_pool_data.get("publicKey") # In cardano-node < 10.6.0
656+
or helpers.decode_bech32(pool_id)
657+
)
658+
659+
if public_key != db_pool_data.hash:
655660
errors_list.append(
656-
"'publicKey' value is different than expected; "
657-
f"Expected: {ledger_pool_data['publicKey']} vs Returned: {db_pool_data.hash}"
661+
"key hash value is different than expected; "
662+
f"Expected: {public_key} vs Returned: {db_pool_data.hash}"
658663
)
659664

660-
if ledger_pool_data["cost"] != db_pool_data.fixed_cost:
665+
sps_cost = helpers.get_pool_param("spsCost", pool_params=ledger_pool_data)
666+
if sps_cost != db_pool_data.fixed_cost:
661667
errors_list.append(
662668
"'cost' value is different than expected; "
663-
f"Expected: {ledger_pool_data['cost']} vs Returned: {db_pool_data.fixed_cost}"
669+
f"Expected: {sps_cost} vs Returned: {db_pool_data.fixed_cost}"
664670
)
665671

666-
metadata = ledger_pool_data.get("metadata") or {}
672+
metadata = helpers.get_pool_param("spsMetadata", pool_params=ledger_pool_data) or {}
667673

668674
metadata_hash = metadata.get("hash") or ""
669675
if metadata_hash != db_pool_data.metadata_hash:
@@ -681,45 +687,51 @@ def check_pool_data( # noqa: C901
681687
f"Returned: {db_pool_data.metadata_url}"
682688
)
683689

684-
if sorted(ledger_pool_data["owners"]) != sorted(db_pool_data.owners):
690+
sps_owners = helpers.get_pool_param("spsOwners", pool_params=ledger_pool_data)
691+
if sorted(sps_owners) != sorted(db_pool_data.owners):
685692
errors_list.append(
686693
"'owners' value is different than expected; "
687-
f"Expected: {ledger_pool_data['owners']} vs Returned: {db_pool_data.owners}"
694+
f"Expected: {sps_owners} vs Returned: {db_pool_data.owners}"
688695
)
689696

690-
if ledger_pool_data["vrf"] != db_pool_data.vrf_key_hash:
697+
sps_vrf = helpers.get_pool_param("spsVrf", pool_params=ledger_pool_data)
698+
if sps_vrf != db_pool_data.vrf_key_hash:
691699
errors_list.append(
692700
"'vrf' value is different than expected; "
693-
f"Expected: {ledger_pool_data['vrf']} vs Returned: {db_pool_data.vrf_key_hash}"
701+
f"Expected: {sps_vrf} vs Returned: {db_pool_data.vrf_key_hash}"
694702
)
695703

696-
if ledger_pool_data["pledge"] != db_pool_data.pledge:
704+
sps_pledge = helpers.get_pool_param("spsPledge", pool_params=ledger_pool_data)
705+
if sps_pledge != db_pool_data.pledge:
697706
errors_list.append(
698707
"'pledge' value is different than expected; "
699-
f"Expected: {ledger_pool_data['pledge']} vs Returned: {db_pool_data.pledge}"
708+
f"Expected: {sps_pledge} vs Returned: {db_pool_data.pledge}"
700709
)
701710

702-
if ledger_pool_data["margin"] != db_pool_data.margin:
711+
sps_margin = helpers.get_pool_param("spsMargin", pool_params=ledger_pool_data)
712+
if sps_margin != db_pool_data.margin:
703713
errors_list.append(
704714
"'margin' value is different than expected; "
705-
f"Expected: {ledger_pool_data['margin']} vs Returned: {db_pool_data.margin}"
715+
f"Expected: {sps_margin} vs Returned: {db_pool_data.margin}"
706716
)
707717

708-
ledger_reward_credential = ledger_pool_data["rewardAccount"]["credential"]
718+
sps_reward_account = helpers.get_pool_param("spsRewardAccount", pool_params=ledger_pool_data)
719+
ledger_reward_credential = sps_reward_account["credential"]
709720
# The "KeyHash" is present in cardano-node >= 8.4.0
710-
ledger_reward_address = (
711-
ledger_reward_credential.get("key hash") or ledger_reward_credential["keyHash"]
721+
ledger_reward_address = ledger_reward_credential.get("keyHash") or ledger_reward_credential.get(
722+
"key hash"
712723
)
713724
if ledger_reward_address != db_pool_data.reward_addr:
714725
errors_list.append(
715726
"'reward address' value is different than expected; "
716727
f"Expected: {ledger_reward_address} vs Returned: {db_pool_data.reward_addr}"
717728
)
718729

719-
if ledger_pool_data["relays"] and ledger_pool_data["relays"] != db_pool_data.relays:
730+
sps_relays = helpers.get_pool_param("spsRelays", pool_params=ledger_pool_data)
731+
if sps_relays and sps_relays != db_pool_data.relays:
720732
errors_list.append(
721733
"'relays' value is different than expected; "
722-
f"Expected: {ledger_pool_data['relays']} vs Returned: {db_pool_data.relays}"
734+
f"Expected: {sps_relays} vs Returned: {db_pool_data.relays}"
723735
)
724736

725737
if errors_list:
@@ -739,7 +751,8 @@ def check_pool_off_chain_data(
739751
msg = f"no off chain data for pool {pool_id}"
740752
raise DbSyncNoResponseError(msg)
741753

742-
metadata_hash = (ledger_pool_data.get("metadata") or {}).get("hash") or ""
754+
metadata = helpers.get_pool_param("spsMetadata", pool_params=ledger_pool_data) or {}
755+
metadata_hash = metadata.get("hash") or ""
743756
db_metadata_hash = db_pool_off_chain_data[0].hash.hex()
744757

745758
assert metadata_hash == db_metadata_hash, (
@@ -762,7 +775,8 @@ def check_pool_off_chain_fetch_error(
762775
raise DbSyncNoResponseError(msg)
763776

764777
fetch_error_str = db_pool_off_chain_fetch_error[0].fetch_error or ""
765-
metadata_url = (ledger_pool_data.get("metadata") or {}).get("url") or ""
778+
metadata = helpers.get_pool_param("spsMetadata", pool_params=ledger_pool_data) or {}
779+
metadata_url = metadata.get("url") or ""
766780

767781
assert (
768782
f'Connection failure error when fetching metadata from PoolUrl "{metadata_url}"'

0 commit comments

Comments
 (0)