Skip to content

Commit ab5c9a4

Browse files
committed
add profiles for arbitrum, avalanche, base, fantom, optimism, ronin
- add profiles for arbitrum, base, fantom, optimism, ronin - update avalanche general profile - add debug and trace tags in EvmMethods class for relevant tasks
1 parent b7d5286 commit ab5c9a4

File tree

11 files changed

+372
-137
lines changed

11 files changed

+372
-137
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"""
2+
Arbitrum profile.
3+
"""
4+
5+
from locust import constant_pacing
6+
7+
from chainbench.user.http import assign_tasks
8+
from chainbench.user.methods import EvmMethods
9+
10+
11+
class ArbitrumProfile(EvmMethods):
12+
wait_time = constant_pacing(1)
13+
tasks = assign_tasks(
14+
{
15+
EvmMethods.eth_call_task: 1007,
16+
EvmMethods.eth_get_block_by_number_task: 592,
17+
EvmMethods.eth_get_logs_task: 397,
18+
EvmMethods.eth_chain_id_task: 186,
19+
EvmMethods.eth_get_transaction_receipt_task: 168,
20+
EvmMethods.eth_block_number_task: 165,
21+
EvmMethods.eth_get_block_by_hash_task: 61,
22+
EvmMethods.eth_get_balance_task: 50,
23+
EvmMethods.debug_trace_transaction_task: 48,
24+
EvmMethods.eth_estimate_gas_task: 28,
25+
EvmMethods.eth_gas_price_task: 22,
26+
EvmMethods.eth_get_transaction_count_task: 17,
27+
EvmMethods.eth_get_transaction_by_hash_task: 14,
28+
EvmMethods.eth_get_block_receipts_task: 12,
29+
EvmMethods.debug_trace_block_by_number_task: 12,
30+
EvmMethods.eth_get_code_task: 7,
31+
EvmMethods.eth_max_priority_fee_per_gas_task: 5,
32+
EvmMethods.web3_client_version_task: 3,
33+
EvmMethods.debug_trace_block_by_hash_task: 3,
34+
EvmMethods.net_listening_task: 2,
35+
EvmMethods.net_version_task: 2,
36+
EvmMethods.eth_syncing_task: 1,
37+
EvmMethods.eth_fee_history_task: 1,
38+
EvmMethods.eth_get_transaction_by_block_hash_and_index_task: 1,
39+
EvmMethods.debug_trace_call_task: 1,
40+
}
41+
)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
"""
2+
Avalanche Archive profile.
3+
"""
4+
5+
from locust import constant_pacing
6+
7+
from chainbench.user.http import assign_tasks
8+
from chainbench.user.methods import EvmMethods
9+
10+
11+
class AvalancheArchiveProfile(EvmMethods):
12+
wait_time = constant_pacing(1)
13+
tasks = assign_tasks(
14+
{
15+
EvmMethods.eth_call_task: 1474,
16+
EvmMethods.eth_get_block_by_number_task: 502,
17+
EvmMethods.eth_get_transaction_receipt_task: 281,
18+
EvmMethods.eth_get_logs_task: 234,
19+
EvmMethods.eth_block_number_task: 218,
20+
EvmMethods.eth_chain_id_task: 102,
21+
EvmMethods.eth_get_code_task: 81,
22+
EvmMethods.debug_trace_block_by_number_task: 70,
23+
EvmMethods.debug_trace_block_by_hash_task: 42,
24+
EvmMethods.eth_get_block_by_hash_task: 41,
25+
EvmMethods.eth_syncing_task: 38,
26+
EvmMethods.eth_estimate_gas_task: 33,
27+
EvmMethods.debug_trace_call_task: 12,
28+
EvmMethods.eth_get_transaction_by_hash_task: 12,
29+
EvmMethods.web3_client_version_task: 7,
30+
EvmMethods.eth_get_balance_task: 6,
31+
EvmMethods.eth_get_block_receipts_task: 3,
32+
EvmMethods.net_version_task: 3,
33+
EvmMethods.eth_get_transaction_count_task: 1,
34+
EvmMethods.debug_trace_transaction_task: 1,
35+
EvmMethods.eth_gas_price_task: 1,
36+
}
37+
)
Lines changed: 31 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -1,144 +1,39 @@
11
"""
22
Avalanche profile.
3-
4-
Chart:
5-
```mermaid
6-
%%{init: {'theme':'forest'}}%%
7-
pie title Methods Distribution
8-
"eth_call" : 100
9-
"eth_getBlockByNumber" : 50
10-
"eth_getLogs" : 24
11-
"eth_getTransactionReceipt" : 17
12-
"eth_chainId" : 15
13-
"eth_blockNumber" : 15
14-
"eth_getBalance" : 11
15-
"Others" : 28
16-
```
173
"""
184

19-
from locust import constant_pacing, tag, task
5+
from locust import constant_pacing
206

21-
from chainbench.user import EvmUser
22-
from chainbench.util.rng import get_rng
7+
from chainbench.user.http import assign_tasks
8+
from chainbench.user.methods import EvmMethods
239

2410

25-
class AvalancheProfile(EvmUser):
11+
class AvalancheProfile(EvmMethods):
2612
wait_time = constant_pacing(1)
27-
weight = 91
28-
29-
@task(100)
30-
def call_task(self):
31-
self.make_rpc_call(
32-
name="call",
33-
method="eth_call",
34-
params=[
35-
{
36-
"to": "0x7325e3564B89968D102B3261189EA44c0f5f1a8e",
37-
"data": "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000", # noqa: E501
38-
},
39-
"latest",
40-
],
41-
),
42-
43-
@task(50)
44-
def get_block_by_number_task(self):
45-
self.make_rpc_call(
46-
name="get_block_by_number",
47-
method="eth_getBlockByNumber",
48-
params=self._block_params_factory(),
49-
),
50-
51-
@task(17)
52-
def get_transaction_receipt_task(self):
53-
self.make_rpc_call(
54-
name="get_transaction_receipt",
55-
method="eth_getTransactionReceipt",
56-
params=self._transaction_by_hash_params_factory(get_rng()),
57-
),
58-
59-
@task(15)
60-
def chain_id_task(self):
61-
self.make_rpc_call(
62-
name="chain_id",
63-
method="eth_chainId",
64-
),
65-
66-
@task(15)
67-
def block_number_task(self):
68-
self.make_rpc_call(
69-
name="block_number",
70-
method="eth_blockNumber",
71-
),
72-
73-
@task(11)
74-
def get_balance_task(self):
75-
self.make_rpc_call(
76-
name="get_balance",
77-
method="eth_getBalance",
78-
params=self._get_account_and_block_number_params_factory_latest(get_rng()),
79-
),
80-
81-
@task(10)
82-
def get_transaction_by_hash_task(self):
83-
self.make_rpc_call(
84-
name="get_transaction_by_hash",
85-
method="eth_getTransactionByHash",
86-
params=self._transaction_by_hash_params_factory(get_rng()),
87-
),
88-
89-
@task(5)
90-
def estimate_gas_task(self):
91-
self.make_rpc_call(
92-
name="estimate_gas",
93-
method="eth_estimateGas",
94-
params=[
95-
{
96-
"from": "0x9f8c163cBA728e99993ABe7495F06c0A3c8Ac8b9",
97-
"to": "0xC2DE4f542C2e2349ee050541F5AD25aa4BE1a00f",
98-
"value": "0xde0b6b3a7640000",
99-
}
100-
],
101-
),
102-
103-
@task(4)
104-
def client_version_task(self):
105-
self.make_rpc_call(
106-
name="client_version",
107-
method="web3_clientVersion",
108-
),
109-
110-
@task(3)
111-
def get_block_by_hash_task(self):
112-
self.make_rpc_call(
113-
name="get_block_by_hash",
114-
method="eth_getBlockByHash",
115-
params=self._block_by_hash_params_factory(get_rng()),
116-
),
117-
118-
@task(3)
119-
def gas_price_task(self):
120-
self.make_rpc_call(
121-
name="gas_price",
122-
method="eth_gasPrice",
123-
),
124-
125-
@task(3)
126-
def max_priority_fee_per_gas_task(self):
127-
self.make_rpc_call(
128-
name="max_priority_fee_per_gas",
129-
method="eth_maxPriorityFeePerGas",
130-
),
131-
132-
133-
class AvalancheGetLogsProfile(EvmUser):
134-
wait_time = constant_pacing(10)
135-
weight = 9
136-
137-
@tag("get-logs")
138-
@task
139-
def get_logs_task(self):
140-
self.make_rpc_call(
141-
name="get_logs",
142-
method="eth_getLogs",
143-
params=self._get_logs_params_factory(get_rng()),
144-
),
13+
tasks = assign_tasks(
14+
{
15+
EvmMethods.eth_call_task: 976,
16+
EvmMethods.eth_get_block_by_number_task: 516,
17+
EvmMethods.eth_get_logs_task: 404,
18+
EvmMethods.eth_get_transaction_receipt_task: 223,
19+
EvmMethods.eth_block_number_task: 174,
20+
EvmMethods.eth_chain_id_task: 155,
21+
EvmMethods.eth_get_balance_task: 134,
22+
EvmMethods.eth_get_transaction_by_hash_task: 70,
23+
EvmMethods.eth_get_block_by_hash_task: 30,
24+
EvmMethods.web3_client_version_task: 23,
25+
EvmMethods.eth_gas_price_task: 15,
26+
EvmMethods.eth_syncing_task: 14,
27+
EvmMethods.net_version_task: 7,
28+
EvmMethods.eth_get_transaction_count_task: 6,
29+
EvmMethods.eth_get_block_receipts_task: 5,
30+
EvmMethods.eth_get_code_task: 3,
31+
EvmMethods.eth_max_priority_fee_per_gas_task: 2,
32+
EvmMethods.eth_estimate_gas_task: 2,
33+
EvmMethods.eth_fee_history_task: 2,
34+
EvmMethods.debug_trace_transaction_task: 2,
35+
EvmMethods.debug_trace_block_by_number_task: 1,
36+
EvmMethods.debug_trace_block_by_hash_task: 1,
37+
EvmMethods.net_listening_task: 1,
38+
}
39+
)

chainbench/profile/base/archive.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"""
2+
Base Archive profile.
3+
"""
4+
5+
from locust import constant_pacing
6+
7+
from chainbench.user.http import assign_tasks
8+
from chainbench.user.methods import EvmMethods
9+
10+
11+
class BaseArchiveProfile(EvmMethods):
12+
wait_time = constant_pacing(1)
13+
tasks = assign_tasks(
14+
{
15+
EvmMethods.eth_get_transaction_receipt_task: 1015,
16+
EvmMethods.eth_call_task: 211,
17+
EvmMethods.eth_get_block_by_number_task: 73,
18+
EvmMethods.debug_trace_transaction_task: 36,
19+
EvmMethods.eth_block_number_task: 12,
20+
EvmMethods.eth_get_transaction_by_hash_task: 9,
21+
EvmMethods.eth_chain_id_task: 8,
22+
EvmMethods.eth_get_logs_task: 7,
23+
EvmMethods.trace_block_task: 6,
24+
EvmMethods.eth_get_block_by_hash_task: 6,
25+
EvmMethods.eth_get_balance_task: 4,
26+
EvmMethods.eth_get_code_task: 2,
27+
EvmMethods.eth_get_block_receipts_task: 2,
28+
EvmMethods.debug_trace_block_by_hash_task: 1,
29+
EvmMethods.debug_trace_block_by_number_task: 1,
30+
EvmMethods.net_version_task: 1,
31+
EvmMethods.eth_gas_price_task: 1,
32+
EvmMethods.eth_max_priority_fee_per_gas_task: 1,
33+
EvmMethods.net_listening_task: 1,
34+
}
35+
)

chainbench/profile/base/general.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
"""
2+
Base profile.
3+
```
4+
"""
5+
6+
from locust import constant_pacing
7+
8+
from chainbench.user.http import assign_tasks
9+
from chainbench.user.methods import EvmMethods
10+
11+
12+
class BaseProfile(EvmMethods):
13+
wait_time = constant_pacing(1)
14+
tasks = assign_tasks(
15+
{
16+
EvmMethods.eth_call_task: 1051,
17+
EvmMethods.eth_get_transaction_receipt_task: 967,
18+
EvmMethods.eth_get_block_by_number_task: 375,
19+
EvmMethods.eth_get_logs_task: 158,
20+
EvmMethods.eth_chain_id_task: 150,
21+
EvmMethods.debug_trace_transaction_task: 116,
22+
EvmMethods.eth_block_number_task: 114,
23+
EvmMethods.eth_get_block_receipts_task: 63,
24+
EvmMethods.eth_get_balance_task: 57,
25+
EvmMethods.eth_get_block_by_hash_task: 41,
26+
EvmMethods.trace_block_task: 28,
27+
EvmMethods.web3_client_version_task: 21,
28+
EvmMethods.eth_get_transaction_count_task: 15,
29+
EvmMethods.eth_get_code_task: 9,
30+
EvmMethods.eth_get_transaction_by_hash_task: 9,
31+
EvmMethods.debug_trace_block_by_hash_task: 8,
32+
EvmMethods.eth_gas_price_task: 6,
33+
EvmMethods.eth_estimate_gas_task: 2,
34+
EvmMethods.debug_trace_block_by_number_task: 2,
35+
EvmMethods.eth_syncing_task: 1,
36+
EvmMethods.eth_fee_history_task: 1,
37+
EvmMethods.eth_max_priority_fee_per_gas_task: 1,
38+
EvmMethods.net_version_task: 1,
39+
EvmMethods.debug_trace_call_task: 1,
40+
EvmMethods.net_listening_task: 1,
41+
}
42+
)

chainbench/profile/fantom/archive.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""
2+
Fantom Archive profile.
3+
"""
4+
5+
from locust import constant_pacing
6+
7+
from chainbench.user.http import assign_tasks
8+
from chainbench.user.methods import EvmMethods
9+
10+
11+
class FantomArchiveProfile(EvmMethods):
12+
wait_time = constant_pacing(1)
13+
tasks = assign_tasks(
14+
{
15+
EvmMethods.eth_get_block_by_number_task: 1025,
16+
EvmMethods.eth_block_number_task: 319,
17+
EvmMethods.eth_get_transaction_receipt_task: 305,
18+
EvmMethods.eth_get_logs_task: 228,
19+
EvmMethods.eth_call_task: 203,
20+
EvmMethods.eth_get_block_by_hash_task: 146,
21+
EvmMethods.eth_syncing_task: 96,
22+
EvmMethods.net_peer_count_task: 96,
23+
EvmMethods.eth_chain_id_task: 32,
24+
EvmMethods.eth_get_transaction_by_hash_task: 9,
25+
EvmMethods.eth_get_code_task: 5,
26+
EvmMethods.eth_get_balance_task: 2,
27+
EvmMethods.eth_gas_price_task: 2,
28+
EvmMethods.eth_get_transaction_count_task: 1,
29+
}
30+
)

0 commit comments

Comments
 (0)