Skip to content

Commit 30af1bb

Browse files
committed
feat: check fees only on local testnet
- Added `is_fee_in_interval` function to `common.py` for checking if the fee is within the expected range on local testnet. - Replaced `helpers.is_in_interval` with `common.is_fee_in_interval` in various test files to use the new function.
1 parent 8ba8898 commit 30af1bb

15 files changed

+86
-69
lines changed

cardano_node_tests/tests/common.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from cardano_node_tests.utils import cluster_nodes
1111
from cardano_node_tests.utils import clusterlib_utils
1212
from cardano_node_tests.utils import configuration
13+
from cardano_node_tests.utils import helpers
1314
from cardano_node_tests.utils import pytest_utils
1415
from cardano_node_tests.utils.versions import VERSIONS
1516

@@ -450,3 +451,15 @@ def get_pool_user(
450451
caching_key=caching_key,
451452
amount=amount,
452453
)[0]
454+
455+
456+
def is_fee_in_interval(fee: float, expected_fee: float, frac: float = 0.1) -> bool:
457+
"""Check that the fee is within the expected range on local testnet.
458+
459+
The fee is considered to be within the expected range if it is within the expected_fee +/- frac
460+
range.
461+
"""
462+
# We have the fees calibrated only for local testnet
463+
if cluster_nodes.get_cluster_type().type == cluster_nodes.ClusterType.TESTNET:
464+
return True
465+
return helpers.is_in_interval(fee, expected_fee, frac=frac)

cardano_node_tests/tests/test_native_tokens.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,9 @@ def test_minting_and_burning_witnesses(
228228
assert not token_utxo, "The token was not burnt"
229229

230230
# Check expected fees
231-
assert helpers.is_in_interval(
231+
assert common.is_fee_in_interval(
232232
tx_out_mint.fee, expected_fee, frac=0.15
233-
) and helpers.is_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
233+
) and common.is_fee_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
234234
"TX fee doesn't fit the expected interval"
235235
)
236236

@@ -327,9 +327,9 @@ def test_minting_and_burning_sign(
327327
assert not token_utxo, "The token was not burnt"
328328

329329
# Check expected fees
330-
assert helpers.is_in_interval(
330+
assert common.is_fee_in_interval(
331331
tx_out_mint.fee, expected_fee, frac=0.15
332-
) and helpers.is_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
332+
) and common.is_fee_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
333333
"TX fee doesn't fit the expected interval"
334334
)
335335

@@ -443,9 +443,9 @@ def test_minting_multiple_scripts(
443443
assert not utxo_burn, f"The {t.token} token was not burnt"
444444

445445
# Check expected fees
446-
assert helpers.is_in_interval(
446+
assert common.is_fee_in_interval(
447447
tx_out_mint.fee, expected_fee, frac=0.15
448-
) and helpers.is_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
448+
) and common.is_fee_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
449449
"TX fee doesn't fit the expected interval"
450450
)
451451

@@ -562,7 +562,7 @@ def test_minting_burning_diff_tokens_single_tx(
562562
assert not token2_burn_utxo, "The token was not burnt"
563563

564564
# Check expected fees
565-
assert helpers.is_in_interval(tx_out_mint_burn.fee, expected_fee, frac=0.15), (
565+
assert common.is_fee_in_interval(tx_out_mint_burn.fee, expected_fee, frac=0.15), (
566566
"TX fee doesn't fit the expected interval"
567567
)
568568

@@ -685,7 +685,7 @@ def test_minting_burning_same_token_single_tx(
685685
assert token_utxo and token_utxo[0].amount == 1, "The token was not minted"
686686

687687
# Check expected fees
688-
assert helpers.is_in_interval(tx_output.fee, expected_fee, frac=0.15), (
688+
assert common.is_fee_in_interval(tx_output.fee, expected_fee, frac=0.15), (
689689
"TX fee doesn't fit the expected interval"
690690
)
691691

@@ -829,7 +829,7 @@ def _mint_tokens() -> clusterlib.TxRawOutput:
829829

830830
# Check expected fees
831831
mint_fee = tx_out_mint.fee
832-
assert helpers.is_in_interval(mint_fee, expected_fee, frac=0.15), (
832+
assert common.is_fee_in_interval(mint_fee, expected_fee, frac=0.15), (
833833
"TX fee doesn't fit the expected interval"
834834
)
835835

@@ -979,7 +979,7 @@ def _mint_tokens() -> clusterlib.TxRawOutput:
979979

980980
# Check expected fees
981981
mint_fee = tx_out_mint.fee
982-
assert helpers.is_in_interval(mint_fee, expected_fee, frac=0.15), (
982+
assert common.is_fee_in_interval(mint_fee, expected_fee, frac=0.15), (
983983
"TX fee doesn't fit the expected interval"
984984
)
985985

@@ -1077,7 +1077,7 @@ def test_minting_and_partial_burning(
10771077
)
10781078

10791079
# Check expected fee
1080-
assert helpers.is_in_interval(tx_out_mint.fee, expected_fee, frac=0.15), (
1080+
assert common.is_fee_in_interval(tx_out_mint.fee, expected_fee, frac=0.15), (
10811081
"TX fee doesn't fit the expected interval"
10821082
)
10831083

@@ -1163,9 +1163,9 @@ def test_minting_unicode_asset_name(
11631163
assert not token_utxo, "The token was not burnt"
11641164

11651165
# Check expected fees
1166-
assert helpers.is_in_interval(
1166+
assert common.is_fee_in_interval(
11671167
tx_out_mint.fee, expected_fee, frac=0.15
1168-
) and helpers.is_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
1168+
) and common.is_fee_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
11691169
"TX fee doesn't fit the expected interval"
11701170
)
11711171

@@ -1260,9 +1260,9 @@ def test_valid_policy_after(
12601260
assert not token_utxo, "The token was not burnt"
12611261

12621262
# Check expected fees
1263-
assert helpers.is_in_interval(
1263+
assert common.is_fee_in_interval(
12641264
tx_out_mint.fee, expected_fee, frac=0.15
1265-
) and helpers.is_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
1265+
) and common.is_fee_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
12661266
"TX fee doesn't fit the expected interval"
12671267
)
12681268

@@ -1354,9 +1354,9 @@ def test_valid_policy_before(
13541354
assert not token_utxo, "The token was not burnt"
13551355

13561356
# Check expected fees
1357-
assert helpers.is_in_interval(
1357+
assert common.is_fee_in_interval(
13581358
tx_out_mint.fee, expected_fee, frac=0.15
1359-
) and helpers.is_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
1359+
) and common.is_fee_in_interval(tx_out_burn.fee, expected_fee, frac=0.15), (
13601360
"TX fee doesn't fit the expected interval"
13611361
)
13621362

@@ -2420,7 +2420,7 @@ def test_multiasset_txouts_syntax(
24202420
assert token_utxo and token_utxo[0].amount == 1_000, "The token was not minted"
24212421

24222422
# Check expected fees
2423-
assert helpers.is_in_interval(tx_raw_output.fee, expected_fee, frac=0.15), (
2423+
assert common.is_fee_in_interval(tx_raw_output.fee, expected_fee, frac=0.15), (
24242424
"TX fee doesn't fit the expected interval"
24252425
)
24262426

@@ -2592,7 +2592,7 @@ def test_script_reference_utxo(
25922592
assert cluster.g_query.get_utxo(utxo=reference_utxo), "Reference input was spent"
25932593

25942594
# Check expected fees
2595-
assert helpers.is_in_interval(tx_raw_output.fee, expected_fee, frac=0.15), (
2595+
assert common.is_fee_in_interval(tx_raw_output.fee, expected_fee, frac=0.15), (
25962596
"TX fee doesn't fit the expected interval"
25972597
)
25982598

cardano_node_tests/tests/test_scripts.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ def test_multisig_any(
454454
expected_fee = 204_969
455455
for tx_out in from_single_tx_outputs:
456456
# Check expected fees
457-
assert helpers.is_in_interval(tx_out.fee, expected_fee, frac=0.15), (
457+
assert common.is_fee_in_interval(tx_out.fee, expected_fee, frac=0.15), (
458458
"TX fee doesn't fit the expected interval"
459459
)
460460

@@ -747,7 +747,7 @@ def test_multisig_empty_all(
747747

748748
# Check expected fees
749749
expected_fee = 176_809
750-
assert helpers.is_in_interval(tx_out_from.fee, expected_fee, frac=0.15), (
750+
assert common.is_fee_in_interval(tx_out_from.fee, expected_fee, frac=0.15), (
751751
"TX fee doesn't fit the expected interval"
752752
)
753753

@@ -814,7 +814,7 @@ def test_multisig_no_required_atleast(
814814

815815
# Check expected fees
816816
expected_fee = 176_765
817-
assert helpers.is_in_interval(tx_out_from.fee, expected_fee, frac=0.15), (
817+
assert common.is_fee_in_interval(tx_out_from.fee, expected_fee, frac=0.15), (
818818
"TX fee doesn't fit the expected interval"
819819
)
820820

@@ -1257,7 +1257,7 @@ def test_script_after(
12571257

12581258
# Check expected fees
12591259
expected_fee = 280_693 if use_build_cmd else 323_857
1260-
assert helpers.is_in_interval(tx_out_from.fee, expected_fee, frac=0.15), (
1260+
assert common.is_fee_in_interval(tx_out_from.fee, expected_fee, frac=0.15), (
12611261
"TX fee doesn't fit the expected interval"
12621262
)
12631263

@@ -1334,7 +1334,7 @@ def test_script_before(
13341334

13351335
# Check expected fees
13361336
expected_fee = 279_241 if use_build_cmd else 323_989
1337-
assert helpers.is_in_interval(tx_out_from.fee, expected_fee, frac=0.15), (
1337+
assert common.is_fee_in_interval(tx_out_from.fee, expected_fee, frac=0.15), (
13381338
"TX fee doesn't fit the expected interval"
13391339
)
13401340

cardano_node_tests/tests/test_tx_fees.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ def _from_to_transactions(
294294
tx_fee = cluster_obj.g_transaction.calculate_tx_fee(
295295
src_address=src_address, tx_name=tx_name, txins=txins, txouts=txouts, tx_files=tx_files
296296
)
297-
assert helpers.is_in_interval(tx_fee, expected_fee), (
297+
assert common.is_fee_in_interval(tx_fee, expected_fee), (
298298
"Expected fee doesn't match the actual fee"
299299
)
300300

@@ -350,7 +350,7 @@ def test_pool_registration_fees(
350350
tx_fee = cluster.g_transaction.calculate_tx_fee(
351351
src_address=src_address, tx_name=temp_template, tx_files=tx_files
352352
)
353-
assert helpers.is_in_interval(tx_fee, expected_fee), (
353+
assert common.is_fee_in_interval(tx_fee, expected_fee), (
354354
"Expected fee doesn't match the actual fee"
355355
)
356356

@@ -418,7 +418,7 @@ def test_pool_deregistration_fees(
418418
tx_fee = cluster.g_transaction.calculate_tx_fee(
419419
src_address=src_address, tx_name=temp_template, tx_files=tx_files
420420
)
421-
assert helpers.is_in_interval(tx_fee, expected_fee), (
421+
assert common.is_fee_in_interval(tx_fee, expected_fee), (
422422
"Expected fee doesn't match the actual fee"
423423
)
424424

@@ -459,7 +459,7 @@ def test_addr_registration_fees(
459459
tx_fee = cluster.g_transaction.calculate_tx_fee(
460460
src_address=src_address, tx_name=temp_template, tx_files=tx_files
461461
)
462-
assert helpers.is_in_interval(tx_fee, expected_fee), (
462+
assert common.is_fee_in_interval(tx_fee, expected_fee), (
463463
"Expected fee doesn't match the actual fee"
464464
)
465465

@@ -500,7 +500,7 @@ def test_addr_deregistration_fees(
500500
tx_fee = cluster.g_transaction.calculate_tx_fee(
501501
src_address=src_address, tx_name=temp_template, tx_files=tx_files
502502
)
503-
assert helpers.is_in_interval(tx_fee, expected_fee), (
503+
assert common.is_fee_in_interval(tx_fee, expected_fee), (
504504
"Expected fee doesn't match the actual fee"
505505
)
506506

cardano_node_tests/tests/tests_plutus/test_mint_build.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -217,10 +217,10 @@ def test_minting_one_token(
217217

218218
# Check expected fees
219219
expected_fee_step1 = 168_977
220-
assert helpers.is_in_interval(tx_output_step1.fee, expected_fee_step1, frac=0.15)
220+
assert common.is_fee_in_interval(tx_output_step1.fee, expected_fee_step1, frac=0.15)
221221

222222
expected_fee_step2 = 187_031 if plutus_version == "v3" else 350_000
223-
assert helpers.is_in_interval(tx_output_step2.fee, expected_fee_step2, frac=0.15)
223+
assert common.is_fee_in_interval(tx_output_step2.fee, expected_fee_step2, frac=0.15)
224224

225225
plutus_common.check_plutus_costs(
226226
plutus_costs=plutus_costs,
@@ -487,10 +487,10 @@ def test_time_range_minting(
487487

488488
# Check expected fees
489489
expected_fee_step1 = 167_349
490-
assert helpers.is_in_interval(tx_output_step1.fee, expected_fee_step1, frac=0.15)
490+
assert common.is_fee_in_interval(tx_output_step1.fee, expected_fee_step1, frac=0.15)
491491

492492
expected_fee_step2 = 346_952 if plutus_version == "v3" else 411_175
493-
assert helpers.is_in_interval(tx_output_step2.fee, expected_fee_step2, frac=0.15)
493+
assert common.is_fee_in_interval(tx_output_step2.fee, expected_fee_step2, frac=0.15)
494494

495495
plutus_common.check_plutus_costs(
496496
plutus_costs=plutus_costs,
@@ -754,10 +754,10 @@ def test_two_scripts_minting(
754754

755755
# Check expected fees
756756
expected_fee_step1 = 168_977
757-
assert helpers.is_in_interval(tx_output_step1.fee, expected_fee_step1, frac=0.15)
757+
assert common.is_fee_in_interval(tx_output_step1.fee, expected_fee_step1, frac=0.15)
758758

759759
expected_fee_step2 = 428_543 if plutus_version == "mix_v3_v1" else 633_269
760-
assert helpers.is_in_interval(tx_output_step2.fee, expected_fee_step2, frac=0.15)
760+
assert common.is_fee_in_interval(tx_output_step2.fee, expected_fee_step2, frac=0.15)
761761

762762
plutus_common.check_plutus_costs(
763763
plutus_costs=plutus_costs,
@@ -1115,10 +1115,10 @@ def test_witness_redeemer(
11151115

11161116
# Check expected fees
11171117
expected_fee_step1 = 167_349
1118-
assert helpers.is_in_interval(tx_output_step1.fee, expected_fee_step1, frac=0.15)
1118+
assert common.is_fee_in_interval(tx_output_step1.fee, expected_fee_step1, frac=0.15)
11191119

11201120
expected_fee_step2 = 372_438
1121-
assert helpers.is_in_interval(tx_output_step2.fee, expected_fee_step2, frac=0.15)
1121+
assert common.is_fee_in_interval(tx_output_step2.fee, expected_fee_step2, frac=0.15)
11221122

11231123
plutus_common.check_plutus_costs(
11241124
plutus_costs=plutus_costs,

0 commit comments

Comments
 (0)