Skip to content

Commit 3aa123d

Browse files
authored
feat(pools): add scenarios for no default vote (#3195)
Increase the number of pools to four and expand delegation scenarios to cover cases where there is no default vote.
1 parent 283e0b0 commit 3aa123d

File tree

1 file changed

+43
-15
lines changed

1 file changed

+43
-15
lines changed

cardano_node_tests/tests/test_pools.py

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2545,7 +2545,7 @@ def pools(
25452545
) -> list[clusterlib.PoolCreationOutput]:
25462546
"""Create pools for testing vote delegation scenarios."""
25472547
temp_template = common.get_test_id(cluster)
2548-
num_pools = 3
2548+
num_pools = 4
25492549

25502550
# Create pool owners
25512551
pool_owners = common.get_pool_users(
@@ -2589,30 +2589,35 @@ def pools(
25892589
)
25902590
)
25912591

2592-
# Delegate reward address to a DRep.
2593-
# Delegate stake to pools:
2594-
# * first reward address is delegated to the first pool,
2595-
# * second reward address is delegated to the first pool,
2592+
# Delegate reward address to a pool and a DRep:
2593+
# * first reward address is delegated to the first pool
2594+
# and vote is delegated to the Always Abstain DRep
2595+
# * second reward address is delegated to the first pool
2596+
# and vote is delegated to the Always No Confidence DRep
25962597
# * third reward address is not delegated to any pool
2598+
# and vote is delegated to the Always Abstain DRep
2599+
# * fourth reward address is not delegated to any pool
2600+
# and vote is not delegated to any DRep
25972601

25982602
vote_always_abstain = i % 2 == 0
25992603

2600-
if i == 2:
2601-
deleg_vote_cert = cluster.g_stake_address.gen_vote_delegation_cert(
2604+
if i in (0, 1):
2605+
deleg_vote_cert = cluster.g_stake_address.gen_stake_and_vote_delegation_cert(
26022606
addr_name=name_template,
26032607
stake_vkey_file=reward_addr.vkey_file,
2608+
cold_vkey_file=pools_out[0].cold_key_pair.vkey_file,
26042609
always_abstain=vote_always_abstain,
26052610
always_no_confidence=not vote_always_abstain,
26062611
)
2607-
else:
2608-
deleg_vote_cert = cluster.g_stake_address.gen_stake_and_vote_delegation_cert(
2612+
delegation_cert_files.append(deleg_vote_cert)
2613+
elif i == 2:
2614+
deleg_vote_cert = cluster.g_stake_address.gen_vote_delegation_cert(
26092615
addr_name=name_template,
26102616
stake_vkey_file=reward_addr.vkey_file,
2611-
cold_vkey_file=pools_out[0].cold_key_pair.vkey_file,
26122617
always_abstain=vote_always_abstain,
26132618
always_no_confidence=not vote_always_abstain,
26142619
)
2615-
delegation_cert_files.append(deleg_vote_cert)
2620+
delegation_cert_files.append(deleg_vote_cert)
26162621

26172622
# Submit all the delegation certificates
26182623
tx_files = clusterlib.TxFiles(
@@ -2643,7 +2648,7 @@ def pools(
26432648

26442649
return pools_out
26452650

2646-
def get_subtests(self) -> tp.Generator[tp.Callable, None, None]:
2651+
def get_subtests(self) -> tp.Generator[tp.Callable, None, None]: # noqa: C901
26472652
"""Get pool vote delegation scenarios.
26482653
26492654
The scenarios are executed as subtests in the `test_pool_delegation` test.
@@ -2695,7 +2700,7 @@ def reward_to_other_pool_default_vote(
26952700

26962701
yield reward_to_other_pool_default_vote
26972702

2698-
def reward_no_deleg(
2703+
def reward_no_pool_deleg(
26992704
cluster: clusterlib.ClusterLib, pools: list[clusterlib.PoolCreationOutput]
27002705
):
27012706
"""Check vote delegation if reward address is not delegated to any pool."""
@@ -2706,16 +2711,39 @@ def reward_no_deleg(
27062711
== "drep-alwaysAbstain"
27072712
)
27082713

2709-
yield reward_no_deleg
2714+
yield reward_no_pool_deleg
27102715

2711-
def reward_no_deleg_default_vote(
2716+
def reward_no_pool_deleg_default_vote(
27122717
cluster: clusterlib.ClusterLib, pools: list[clusterlib.PoolCreationOutput]
27132718
):
27142719
result = cluster.g_query.get_stake_pool_default_vote(
27152720
spo_vkey_file=pools[2].cold_key_pair.vkey_file
27162721
)
27172722
assert result == "DefaultAbstain"
27182723

2724+
yield reward_no_pool_deleg_default_vote
2725+
2726+
def reward_no_deleg(
2727+
cluster: clusterlib.ClusterLib, pools: list[clusterlib.PoolCreationOutput]
2728+
):
2729+
"""Check vote delegation if reward address is not delegated to any pool."""
2730+
assert (
2731+
cluster.g_query.get_spo_stake_distribution(
2732+
spo_vkey_file=pools[3].cold_key_pair.vkey_file
2733+
)[0].vote_delegation
2734+
== ""
2735+
)
2736+
2737+
yield reward_no_deleg
2738+
2739+
def reward_no_deleg_default_vote(
2740+
cluster: clusterlib.ClusterLib, pools: list[clusterlib.PoolCreationOutput]
2741+
):
2742+
result = cluster.g_query.get_stake_pool_default_vote(
2743+
spo_vkey_file=pools[3].cold_key_pair.vkey_file
2744+
)
2745+
assert result == "DefaultNo"
2746+
27192747
yield reward_no_deleg_default_vote
27202748

27212749
def all_individual_same(

0 commit comments

Comments
 (0)