Skip to content

Commit ac097a0

Browse files
committed
feat: add get_pool_users and get_pool_user functions
- Added `get_pool_users` function to create and fund multiple pool users. - Added `get_pool_user` function to create and fund a single pool user. - Updated tests to use the new `get_pool_users` and `get_pool_user` functions. - Removed redundant code for creating and funding pool users in tests. - Improved consistency and reusability of pool user creation and funding.
1 parent 1c872f7 commit ac097a0

File tree

11 files changed

+178
-291
lines changed

11 files changed

+178
-291
lines changed

cardano_node_tests/tests/common.py

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ def _create_addrs() -> list[clusterlib.AddressRecord]:
357357
else:
358358
addrs = _create_addrs()
359359

360-
# Fund source address
360+
# Fund source addresses
361361
fund_addresses = addrs if fund_idx is None else [addrs[i] for i in fund_idx]
362362
if fund_addresses:
363363
clusterlib_utils.fund_from_faucet(
@@ -386,3 +386,66 @@ def get_payment_addr(
386386
caching_key=caching_key,
387387
amount=amount,
388388
)[0]
389+
390+
391+
def get_pool_users(
392+
name_template: str,
393+
cluster_manager: cluster_management.ClusterManager,
394+
cluster_obj: clusterlib.ClusterLib,
395+
num: int,
396+
fund_idx: list[int] | None = None,
397+
caching_key: str = "",
398+
amount: int | None = None,
399+
) -> list[clusterlib.PoolUser]:
400+
"""Create new pool users."""
401+
if num < 1:
402+
err = f"Number of pool users must be at least 1, got: {num}"
403+
raise ValueError(err)
404+
405+
def _create_pool_users() -> list[clusterlib.PoolUser]:
406+
users = clusterlib_utils.create_pool_users(
407+
cluster_obj=cluster_obj,
408+
name_template=f"{name_template}_pool_user",
409+
no_of_addr=num,
410+
)
411+
return users
412+
413+
if caching_key:
414+
with cluster_manager.cache_fixture() as fixture_cache:
415+
if fixture_cache.value:
416+
return fixture_cache.value # type: ignore
417+
418+
users = _create_pool_users()
419+
fixture_cache.value = users
420+
else:
421+
users = _create_pool_users()
422+
423+
# Fund source addresses
424+
fund_users = users if fund_idx is None else [users[i] for i in fund_idx]
425+
if fund_users:
426+
clusterlib_utils.fund_from_faucet(
427+
*fund_users,
428+
cluster_obj=cluster_obj,
429+
all_faucets=cluster_manager.cache.addrs_data,
430+
amount=amount,
431+
)
432+
433+
return users
434+
435+
436+
def get_pool_user(
437+
name_template: str,
438+
cluster_manager: cluster_management.ClusterManager,
439+
cluster_obj: clusterlib.ClusterLib,
440+
caching_key: str = "",
441+
amount: int | None = None,
442+
) -> clusterlib.PoolUser:
443+
"""Create a single new pool user."""
444+
return get_pool_users(
445+
name_template=name_template,
446+
cluster_manager=cluster_manager,
447+
cluster_obj=cluster_obj,
448+
num=1,
449+
caching_key=caching_key,
450+
amount=amount,
451+
)[0]

cardano_node_tests/tests/test_addr_registration.py

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,14 @@ def pool_users(
2626
cluster: clusterlib.ClusterLib,
2727
) -> list[clusterlib.PoolUser]:
2828
"""Create pool users."""
29-
with cluster_manager.cache_fixture() as fixture_cache:
30-
if fixture_cache.value:
31-
return fixture_cache.value # type: ignore
32-
33-
created_users = clusterlib_utils.create_pool_users(
34-
cluster_obj=cluster,
35-
name_template=f"test_delegation_pool_user_ci{cluster_manager.cluster_instance_num}",
36-
no_of_addr=2,
37-
)
38-
fixture_cache.value = created_users
39-
40-
# Fund source addresses
41-
clusterlib_utils.fund_from_faucet(
42-
created_users[0],
29+
created_users = common.get_pool_users(
30+
name_template=common.get_test_id(cluster),
31+
cluster_manager=cluster_manager,
4332
cluster_obj=cluster,
44-
all_faucets=cluster_manager.cache.addrs_data,
33+
num=2,
34+
fund_idx=[0],
35+
caching_key=helpers.get_current_line_str(),
4536
)
46-
4737
return created_users
4838

4939

cardano_node_tests/tests/test_delegation.py

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -65,24 +65,14 @@ def pool_users(
6565
cluster: clusterlib.ClusterLib,
6666
) -> list[clusterlib.PoolUser]:
6767
"""Create pool users."""
68-
with cluster_manager.cache_fixture() as fixture_cache:
69-
if fixture_cache.value:
70-
return fixture_cache.value # type: ignore
71-
72-
created_users = clusterlib_utils.create_pool_users(
73-
cluster_obj=cluster,
74-
name_template=f"test_delegation_pool_user_ci{cluster_manager.cluster_instance_num}",
75-
no_of_addr=2,
76-
)
77-
fixture_cache.value = created_users
78-
79-
# Fund source addresses
80-
clusterlib_utils.fund_from_faucet(
81-
created_users[0],
68+
created_users = common.get_pool_users(
69+
name_template=common.get_test_id(cluster),
70+
cluster_manager=cluster_manager,
8271
cluster_obj=cluster,
83-
all_faucets=cluster_manager.cache.addrs_data,
72+
num=2,
73+
fund_idx=[0],
74+
caching_key=helpers.get_current_line_str(),
8475
)
85-
8676
return created_users
8777

8878

@@ -94,7 +84,7 @@ def pool_users_disposable(
9484
test_id = common.get_test_id(cluster)
9585
pool_users = clusterlib_utils.create_pool_users(
9686
cluster_obj=cluster,
97-
name_template=f"{test_id}_pool_user",
87+
name_template=f"{test_id}_disposable",
9888
no_of_addr=2,
9989
)
10090
return pool_users
@@ -112,24 +102,14 @@ def pool_users_cluster_and_pool(
112102
The pool can be different every time the fixture is called.
113103
"""
114104
cluster, *__ = cluster_and_pool
115-
with cluster_manager.cache_fixture() as fixture_cache:
116-
if fixture_cache.value:
117-
return fixture_cache.value # type: ignore
118-
119-
created_users = clusterlib_utils.create_pool_users(
120-
cluster_obj=cluster,
121-
name_template=f"test_delegation_pool_user_cap_ci{cluster_manager.cluster_instance_num}",
122-
no_of_addr=2,
123-
)
124-
fixture_cache.value = created_users
125-
126-
# Fund source addresses
127-
clusterlib_utils.fund_from_faucet(
128-
created_users[0],
105+
created_users = common.get_pool_users(
106+
name_template=common.get_test_id(cluster),
107+
cluster_manager=cluster_manager,
129108
cluster_obj=cluster,
130-
all_faucets=cluster_manager.cache.addrs_data,
109+
num=2,
110+
fund_idx=[0],
111+
caching_key=helpers.get_current_line_str(),
131112
)
132-
133113
return created_users
134114

135115

@@ -142,7 +122,7 @@ def pool_users_disposable_cluster_and_pool(
142122
test_id = common.get_test_id(cluster)
143123
pool_users = clusterlib_utils.create_pool_users(
144124
cluster_obj=cluster,
145-
name_template=f"{test_id}_pool_user_cap",
125+
name_template=f"{test_id}_disposable_cap",
146126
no_of_addr=2,
147127
)
148128
return pool_users

cardano_node_tests/tests/test_mir_certs.py

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -62,24 +62,14 @@ def pool_users(
6262
cluster_pots: clusterlib.ClusterLib,
6363
) -> list[clusterlib.PoolUser]:
6464
"""Create pool user."""
65-
with cluster_manager.cache_fixture() as fixture_cache:
66-
if fixture_cache.value:
67-
return fixture_cache.value # type: ignore
68-
69-
created_users = clusterlib_utils.create_pool_users(
70-
cluster_obj=cluster_pots,
71-
name_template=f"test_mir_certs_ci{cluster_manager.cluster_instance_num}",
72-
no_of_addr=5,
73-
)
74-
fixture_cache.value = created_users
75-
76-
# Fund source addresses
77-
clusterlib_utils.fund_from_faucet(
78-
*created_users,
79-
cluster_obj=cluster_pots,
80-
all_faucets=cluster_manager.cache.addrs_data,
65+
cluster = cluster_pots
66+
created_users = common.get_pool_users(
67+
name_template=common.get_test_id(cluster),
68+
cluster_manager=cluster_manager,
69+
cluster_obj=cluster,
70+
num=5,
71+
caching_key=helpers.get_current_line_str(),
8172
)
82-
8373
return created_users
8474

8575

0 commit comments

Comments
 (0)