Skip to content

Commit 598a56f

Browse files
authored
Merge pull request #2813 from IntersectMBO/mark_plutus_use
feat: Mark use of Plutus and lock Plutus when changing pparams
2 parents 369551d + 3651c0b commit 598a56f

File tree

9 files changed

+112
-50
lines changed

9 files changed

+112
-50
lines changed

cardano_node_tests/cluster_management/resources.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class Resources:
1818
)
1919
# Reserve one pool for all tests where the pool will stop producing blocks
2020
POOL_FOR_OFFLINE: tp.Final[str] = POOL2
21+
PLUTUS: tp.Final[str] = "plutus"
2122
RESERVES: tp.Final[str] = "reserves"
2223
TREASURY: tp.Final[str] = "treasury"
2324
REWARDS: tp.Final[str] = "rewards"

cardano_node_tests/tests/tests_conway/conftest.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
def cluster_use_committee(
1414
cluster_manager: cluster_management.ClusterManager,
1515
) -> governance_utils.GovClusterT:
16-
"""Mark governance committee as "in use" and return instance of `clusterlib.ClusterLib`."""
16+
"""Mark governance committee as "in use"."""
1717
cluster_obj = cluster_manager.get(
1818
use_resources=[
1919
cluster_management.Resources.COMMITTEE,
@@ -29,7 +29,7 @@ def cluster_use_committee(
2929
def cluster_use_dreps(
3030
cluster_manager: cluster_management.ClusterManager,
3131
) -> governance_utils.GovClusterT:
32-
"""Mark governance DReps as "in use" and return instance of `clusterlib.ClusterLib`."""
32+
"""Mark governance DReps as "in use"."""
3333
cluster_obj = cluster_manager.get(
3434
use_resources=[
3535
cluster_management.Resources.DREPS,
@@ -45,7 +45,7 @@ def cluster_use_dreps(
4545
def cluster_use_governance(
4646
cluster_manager: cluster_management.ClusterManager,
4747
) -> governance_utils.GovClusterT:
48-
"""Mark governance as "in use" and return instance of `clusterlib.ClusterLib`."""
48+
"""Mark whole governance as "in use"."""
4949
cluster_obj = cluster_manager.get(
5050
use_resources=[
5151
cluster_management.Resources.COMMITTEE,
@@ -64,7 +64,7 @@ def cluster_use_governance(
6464
def cluster_lock_governance(
6565
cluster_manager: cluster_management.ClusterManager,
6666
) -> governance_utils.GovClusterT:
67-
"""Mark governance as "locked" and return instance of `clusterlib.ClusterLib`."""
67+
"""Mark whole governance as "locked"."""
6868
cluster_obj = cluster_manager.get(
6969
use_resources=cluster_management.Resources.ALL_POOLS,
7070
lock_resources=[cluster_management.Resources.COMMITTEE, cluster_management.Resources.DREPS],
@@ -74,3 +74,23 @@ def cluster_lock_governance(
7474
)
7575
governance_utils.wait_delayed_ratification(cluster_obj=cluster_obj)
7676
return cluster_obj, governance_data
77+
78+
79+
@pytest.fixture
80+
def cluster_lock_governance_plutus(
81+
cluster_manager: cluster_management.ClusterManager,
82+
) -> governance_utils.GovClusterT:
83+
"""Mark whole governance and Plutus as "locked"."""
84+
cluster_obj = cluster_manager.get(
85+
use_resources=cluster_management.Resources.ALL_POOLS,
86+
lock_resources=[
87+
cluster_management.Resources.COMMITTEE,
88+
cluster_management.Resources.DREPS,
89+
cluster_management.Resources.PLUTUS,
90+
],
91+
)
92+
governance_data = governance_setup.get_default_governance(
93+
cluster_manager=cluster_manager, cluster_obj=cluster_obj
94+
)
95+
governance_utils.wait_delayed_ratification(cluster_obj=cluster_obj)
96+
return cluster_obj, governance_data

cardano_node_tests/tests/tests_conway/test_constitution.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def cluster_lock_gov_script(
4444
use_resources=[
4545
*cluster_management.Resources.ALL_POOLS,
4646
cluster_management.Resources.REWARDS,
47+
cluster_management.Resources.PLUTUS,
4748
],
4849
lock_resources=[
4950
cluster_management.Resources.COMMITTEE,

cardano_node_tests/tests/tests_conway/test_guardrails.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ def cluster_guardrails(
4949
Cleanup (== respin the cluster instance) after the tests are finished.
5050
"""
5151
cluster_obj = cluster_manager.get(
52-
use_resources=cluster_management.Resources.ALL_POOLS,
52+
use_resources=[
53+
*cluster_management.Resources.ALL_POOLS,
54+
cluster_management.Resources.PLUTUS,
55+
],
5356
lock_resources=[cluster_management.Resources.COMMITTEE, cluster_management.Resources.DREPS],
5457
cleanup=True,
5558
)

cardano_node_tests/tests/tests_conway/test_pparam_update.py

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -200,13 +200,13 @@ class TestPParamUpdate:
200200
"""Tests for protocol parameters update."""
201201

202202
@pytest.fixture
203-
def pool_user_lg(
203+
def pool_user_lgp(
204204
self,
205205
cluster_manager: cluster_management.ClusterManager,
206-
cluster_lock_governance: governance_utils.GovClusterT,
206+
cluster_lock_governance_plutus: governance_utils.GovClusterT,
207207
) -> clusterlib.PoolUser:
208208
"""Create a pool user for "lock governance"."""
209-
cluster, __ = cluster_lock_governance
209+
cluster, __ = cluster_lock_governance_plutus
210210
key = helpers.get_current_line_str()
211211
name_template = common.get_test_id(cluster)
212212
return conway_common.get_registered_pool_user(
@@ -222,8 +222,10 @@ def pool_user_lg(
222222
@pytest.mark.dbsync
223223
def test_pparam_update( # noqa: C901
224224
self,
225-
cluster_lock_governance: governance_utils.GovClusterT,
226-
pool_user_lg: clusterlib.PoolUser,
225+
# The test is changing protocol parameters, so it is not safe to run Plutus tests at that
226+
# time. It could e.g. lead to `PPViewHashesDontMatch` errors on transaction submits.
227+
cluster_lock_governance_plutus: governance_utils.GovClusterT,
228+
pool_user_lgp: clusterlib.PoolUser,
227229
):
228230
"""Test enactment of protocol parameter update.
229231
@@ -246,7 +248,7 @@ def test_pparam_update( # noqa: C901
246248
and enacted actions
247249
"""
248250
# pylint: disable=too-many-locals,too-many-statements
249-
cluster, governance_data = cluster_lock_governance
251+
cluster, governance_data = cluster_lock_governance_plutus
250252
temp_template = common.get_test_id(cluster)
251253
cost_proposal_file = DATA_DIR / "cost_models_list_185_v2_v3.json"
252254
db_errors_final = []
@@ -256,7 +258,7 @@ def test_pparam_update( # noqa: C901
256258
pytest.skip("The test doesn't work in bootstrap period without CC.")
257259

258260
init_return_account_balance = cluster.g_query.get_stake_addr_info(
259-
pool_user_lg.stake.address
261+
pool_user_lgp.stake.address
260262
).reward_account_balance
261263

262264
# Check if total delegated stake is below the threshold. This can be used to check that
@@ -660,7 +662,7 @@ def _propose_pparams_update(
660662
name_template=name_template,
661663
anchor_url=anchor_url,
662664
anchor_data_hash=anchor_data_hash,
663-
pool_user=pool_user_lg,
665+
pool_user=pool_user_lgp,
664666
proposals=proposals,
665667
prev_action_rec=prev_action_rec,
666668
)
@@ -707,7 +709,7 @@ def _check_proposed_pparams(
707709
cluster_obj=cluster,
708710
governance_data=governance_data,
709711
name_template=f"{temp_template}_net_nodrep_bootstrap",
710-
payment_addr=pool_user_lg.payment,
712+
payment_addr=pool_user_lgp.payment,
711713
action_txid=net_nodrep_prop_rec.action_txid,
712714
action_ix=net_nodrep_prop_rec.action_ix,
713715
approve_cc=True,
@@ -723,7 +725,7 @@ def _check_proposed_pparams(
723725
cluster_obj=cluster,
724726
governance_data=governance_data,
725727
name_template=f"{temp_template}_net_nodrep",
726-
payment_addr=pool_user_lg.payment,
728+
payment_addr=pool_user_lgp.payment,
727729
action_txid=net_nodrep_prop_rec.action_txid,
728730
action_ix=net_nodrep_prop_rec.action_ix,
729731
approve_cc=True,
@@ -755,7 +757,7 @@ def _check_proposed_pparams(
755757
cluster_obj=cluster,
756758
governance_data=governance_data,
757759
name_template=f"{temp_template}_net_nocc",
758-
payment_addr=pool_user_lg.payment,
760+
payment_addr=pool_user_lgp.payment,
759761
action_txid=net_nocc_prop_rec.action_txid,
760762
action_ix=net_nocc_prop_rec.action_ix,
761763
approve_cc=False,
@@ -779,7 +781,7 @@ def _check_proposed_pparams(
779781
cluster_obj=cluster,
780782
governance_data=governance_data,
781783
name_template=f"{temp_template}_eco_nodrep",
782-
payment_addr=pool_user_lg.payment,
784+
payment_addr=pool_user_lgp.payment,
783785
action_txid=eco_nodrep_prop_rec.action_txid,
784786
action_ix=eco_nodrep_prop_rec.action_ix,
785787
approve_cc=True,
@@ -809,7 +811,7 @@ def _check_proposed_pparams(
809811
cluster_obj=cluster,
810812
governance_data=governance_data,
811813
name_template=f"{temp_template}_eco_nocc",
812-
payment_addr=pool_user_lg.payment,
814+
payment_addr=pool_user_lgp.payment,
813815
action_txid=eco_nocc_prop_rec.action_txid,
814816
action_ix=eco_nocc_prop_rec.action_ix,
815817
approve_cc=False,
@@ -839,7 +841,7 @@ def _check_proposed_pparams(
839841
cluster_obj=cluster,
840842
governance_data=governance_data,
841843
name_template=f"{temp_template}_fin_with_spos",
842-
payment_addr=pool_user_lg.payment,
844+
payment_addr=pool_user_lgp.payment,
843845
action_txid=tech_nodrep_prop_rec.action_txid,
844846
action_ix=tech_nodrep_prop_rec.action_ix,
845847
approve_cc=False,
@@ -859,7 +861,7 @@ def _check_proposed_pparams(
859861
cluster_obj=cluster,
860862
governance_data=governance_data,
861863
name_template=f"{temp_template}_tech_nodrep",
862-
payment_addr=pool_user_lg.payment,
864+
payment_addr=pool_user_lgp.payment,
863865
action_txid=tech_nodrep_prop_rec.action_txid,
864866
action_ix=tech_nodrep_prop_rec.action_ix,
865867
approve_cc=True,
@@ -885,7 +887,7 @@ def _check_proposed_pparams(
885887
cluster_obj=cluster,
886888
governance_data=governance_data,
887889
name_template=f"{temp_template}_tech_nocc",
888-
payment_addr=pool_user_lg.payment,
890+
payment_addr=pool_user_lgp.payment,
889891
action_txid=tech_nocc_prop_rec.action_txid,
890892
action_ix=tech_nocc_prop_rec.action_ix,
891893
approve_cc=None,
@@ -911,7 +913,7 @@ def _check_proposed_pparams(
911913
cluster_obj=cluster,
912914
governance_data=governance_data,
913915
name_template=f"{temp_template}_sec_nonespo",
914-
payment_addr=pool_user_lg.payment,
916+
payment_addr=pool_user_lgp.payment,
915917
action_txid=sec_nonespo_prop_rec.action_txid,
916918
action_ix=sec_nonespo_prop_rec.action_ix,
917919
approve_cc=True,
@@ -928,7 +930,7 @@ def _check_proposed_pparams(
928930
cluster_obj=cluster,
929931
governance_data=governance_data,
930932
name_template=f"{temp_template}_sec_nospo",
931-
payment_addr=pool_user_lg.payment,
933+
payment_addr=pool_user_lgp.payment,
932934
action_txid=sec_nospo_prop_rec.action_txid,
933935
action_ix=sec_nospo_prop_rec.action_ix,
934936
approve_cc=True,
@@ -951,7 +953,7 @@ def _check_proposed_pparams(
951953
cluster_obj=cluster,
952954
governance_data=governance_data,
953955
name_template=f"{temp_template}_gov_nodrep",
954-
payment_addr=pool_user_lg.payment,
956+
payment_addr=pool_user_lgp.payment,
955957
action_txid=gov_nodrep_prop_rec.action_txid,
956958
action_ix=gov_nodrep_prop_rec.action_ix,
957959
approve_cc=True,
@@ -981,7 +983,7 @@ def _check_proposed_pparams(
981983
cluster_obj=cluster,
982984
governance_data=governance_data,
983985
name_template=f"{temp_template}_gov_nocc",
984-
payment_addr=pool_user_lg.payment,
986+
payment_addr=pool_user_lgp.payment,
985987
action_txid=gov_nocc_prop_rec.action_txid,
986988
action_ix=gov_nocc_prop_rec.action_ix,
987989
approve_cc=False,
@@ -1014,7 +1016,7 @@ def _check_proposed_pparams(
10141016
cluster_obj=cluster,
10151017
governance_data=governance_data,
10161018
name_template=f"{temp_template}_mix_nodrep",
1017-
payment_addr=pool_user_lg.payment,
1019+
payment_addr=pool_user_lgp.payment,
10181020
action_txid=mix_nodrep_prop_rec.action_txid,
10191021
action_ix=mix_nodrep_prop_rec.action_ix,
10201022
approve_cc=True,
@@ -1057,7 +1059,7 @@ def _check_proposed_pparams(
10571059
cluster_obj=cluster,
10581060
governance_data=governance_data,
10591061
name_template=f"{temp_template}_mix_nocc",
1060-
payment_addr=pool_user_lg.payment,
1062+
payment_addr=pool_user_lgp.payment,
10611063
action_txid=mix_nocc_prop_rec.action_txid,
10621064
action_ix=mix_nocc_prop_rec.action_ix,
10631065
approve_cc=False,
@@ -1082,7 +1084,7 @@ def _check_proposed_pparams(
10821084
cluster_obj=cluster,
10831085
governance_data=governance_data,
10841086
name_template=f"{temp_template}_fin_no",
1085-
payment_addr=pool_user_lg.payment,
1087+
payment_addr=pool_user_lgp.payment,
10861088
action_txid=fin_prop_rec.action_txid,
10871089
action_ix=fin_prop_rec.action_ix,
10881090
approve_cc=False,
@@ -1097,7 +1099,7 @@ def _check_proposed_pparams(
10971099
cluster_obj=cluster,
10981100
governance_data=governance_data,
10991101
name_template=f"{temp_template}_fin_yes",
1100-
payment_addr=pool_user_lg.payment,
1102+
payment_addr=pool_user_lgp.payment,
11011103
action_txid=fin_prop_rec.action_txid,
11021104
action_ix=fin_prop_rec.action_ix,
11031105
approve_cc=True,
@@ -1142,7 +1144,7 @@ def _check_proposed_pparams(
11421144
cluster_obj=cluster,
11431145
governance_data=governance_data,
11441146
name_template=f"{temp_template}_mix_approved",
1145-
payment_addr=pool_user_lg.payment,
1147+
payment_addr=pool_user_lgp.payment,
11461148
action_txid=mix_approved_prop_rec.action_txid,
11471149
action_ix=mix_approved_prop_rec.action_ix,
11481150
approve_cc=True,
@@ -1178,7 +1180,7 @@ def _check_state(state: dict):
11781180
cluster_obj=cluster,
11791181
governance_data=governance_data,
11801182
name_template=f"{temp_template}_after_ratification",
1181-
payment_addr=pool_user_lg.payment,
1183+
payment_addr=pool_user_lgp.payment,
11821184
action_txid=fin_prop_rec.action_txid,
11831185
action_ix=fin_prop_rec.action_ix,
11841186
approve_cc=False,
@@ -1261,7 +1263,7 @@ def _check_state(state: dict):
12611263
cluster_obj=cluster,
12621264
governance_data=governance_data,
12631265
name_template=f"{temp_template}_enacted",
1264-
payment_addr=pool_user_lg.payment,
1266+
payment_addr=pool_user_lgp.payment,
12651267
action_txid=fin_prop_rec.action_txid,
12661268
action_ix=fin_prop_rec.action_ix,
12671269
approve_cc=False,
@@ -1275,7 +1277,7 @@ def _check_state(state: dict):
12751277
# (all the remaining pparam proposals in our case).
12761278
deposit_amt = cluster.conway_genesis["govActionDeposit"]
12771279
total_deposit_return = cluster.g_query.get_stake_addr_info(
1278-
pool_user_lg.stake.address
1280+
pool_user_lgp.stake.address
12791281
).reward_account_balance
12801282
# Check total deposit return accounting for both expired and enacted actions
12811283
assert (
@@ -1291,7 +1293,7 @@ def _check_state(state: dict):
12911293

12921294
try:
12931295
dbsync_utils.check_proposal_refunds(
1294-
stake_address=pool_user_lg.stake.address, refunds_num=submitted_proposal_count
1296+
stake_address=pool_user_lgp.stake.address, refunds_num=submitted_proposal_count
12951297
)
12961298
except AssertionError as exc:
12971299
db_errors_final.append(f"db-sync proposal refunds error: {exc}")

0 commit comments

Comments
 (0)