This repository has been archived by the owner on Apr 4, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 566
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* update nix * add next fee in fee history * fix test * add change doc * height + 1 for next fee * cross check baseFeePerGas len * Update tests/integration_tests/test_fee_history.py Co-authored-by: MalteHerrmann <[email protected]> * fix oldestBlock & align earliest input as eth * update doc * update nix * isort test_fee_history.py * fix test * align rpc res as eth * add cross check * add baseFeePerGas len check * add oldestBlock check Co-authored-by: MalteHerrmann <[email protected]> Co-authored-by: Federico Kunze Küllmer <[email protected]>
- Loading branch information
1 parent
6505f6e
commit 47fdfd3
Showing
8 changed files
with
109 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
from concurrent.futures import ThreadPoolExecutor, as_completed | ||
|
||
import pytest | ||
from web3 import Web3 | ||
|
||
from .network import setup_ethermint | ||
from .utils import ADDRS, send_transaction | ||
|
||
|
||
@pytest.fixture(scope="module") | ||
def custom_ethermint(tmp_path_factory): | ||
path = tmp_path_factory.mktemp("fee-history") | ||
yield from setup_ethermint(path, 26500, long_timeout_commit=True) | ||
|
||
|
||
@pytest.fixture(scope="module", params=["ethermint", "geth"]) | ||
def cluster(request, custom_ethermint, geth): | ||
""" | ||
run on both ethermint and geth | ||
""" | ||
provider = request.param | ||
if provider == "ethermint": | ||
yield custom_ethermint | ||
elif provider == "geth": | ||
yield geth | ||
else: | ||
raise NotImplementedError | ||
|
||
|
||
def test_basic(cluster): | ||
w3: Web3 = cluster.w3 | ||
call = w3.provider.make_request | ||
tx = {"to": ADDRS["community"], "value": 10, "gasPrice": w3.eth.gas_price} | ||
send_transaction(w3, tx) | ||
size = 4 | ||
# size of base fee + next fee | ||
max = size + 1 | ||
# only 1 base fee + next fee | ||
min = 2 | ||
method = "eth_feeHistory" | ||
field = "baseFeePerGas" | ||
percentiles = [100] | ||
height = w3.eth.block_number | ||
latest = dict( | ||
blocks=["latest", hex(height)], | ||
expect=max, | ||
) | ||
earliest = dict( | ||
blocks=["earliest", "0x0"], | ||
expect=min, | ||
) | ||
for tc in [latest, earliest]: | ||
res = [] | ||
with ThreadPoolExecutor(len(tc["blocks"])) as exec: | ||
tasks = [ | ||
exec.submit(call, method, [size, b, percentiles]) for b in tc["blocks"] | ||
] | ||
res = [future.result()["result"][field] for future in as_completed(tasks)] | ||
assert len(res) == len(tc["blocks"]) | ||
assert res[0] == res[1] | ||
assert len(res[0]) == tc["expect"] | ||
|
||
for x in range(max): | ||
i = x + 1 | ||
fee_history = call(method, [size, hex(i), percentiles]) | ||
# start to reduce diff on i <= size - min | ||
diff = size - min - i | ||
reduce = size - diff | ||
target = reduce if diff >= 0 else max | ||
res = fee_history["result"] | ||
assert len(res[field]) == target | ||
oldest = i + min - max | ||
assert res["oldestBlock"] == hex(oldest if oldest > 0 else 0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters