Skip to content

Commit 93745e8

Browse files
committed
PR cleanup
1 parent 401adcd commit 93745e8

File tree

6 files changed

+117
-62
lines changed

6 files changed

+117
-62
lines changed

tests/trinity/core/p2p-proto/test_peer_block_body_request_and_response_api.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,10 @@ async def send_block_bodies():
9898
remote.sub_proto.send_block_bodies([])
9999
await asyncio.sleep(0)
100100

101+
get_bodies_task = asyncio.ensure_future(peer.requests.get_block_bodies(headers))
101102
asyncio.ensure_future(send_block_bodies())
102-
response = await peer.requests.get_block_bodies(headers)
103+
104+
response = await get_bodies_task
103105

104106
assert len(response) == 0
105107

@@ -118,8 +120,10 @@ async def send_block_bodies():
118120
transactions_bundles = tuple(zip(transactions_roots, trie_data_dicts))
119121
bodies_bundle = tuple(zip(bodies, transactions_bundles, uncles_hashes))
120122

123+
get_bodies_task = asyncio.ensure_future(peer.requests.get_block_bodies(headers))
121124
asyncio.ensure_future(send_block_bodies())
122-
response = await peer.requests.get_block_bodies(headers)
125+
126+
response = await get_bodies_task
123127

124128
assert len(response) == 4
125129
assert response == bodies_bundle
@@ -139,8 +143,10 @@ async def send_block_bodies():
139143
transactions_bundles = tuple(zip(transactions_roots, trie_data_dicts))
140144
bodies_bundle = tuple(zip(bodies, transactions_bundles, uncles_hashes))
141145

146+
get_bodies_task = asyncio.ensure_future(peer.requests.get_block_bodies(headers))
142147
asyncio.ensure_future(send_block_bodies())
143-
response = await peer.requests.get_block_bodies(headers)
148+
149+
response = await get_bodies_task
144150

145151
assert len(response) == 3
146152
assert response == bodies_bundle[1:]
@@ -164,8 +170,10 @@ async def send_block_bodies():
164170
transactions_bundles = tuple(zip(transactions_roots, trie_data_dicts))
165171
bodies_bundle = tuple(zip(bodies, transactions_bundles, uncles_hashes))
166172

173+
get_bodies_task = asyncio.ensure_future(peer.requests.get_block_bodies(headers))
167174
asyncio.ensure_future(send_block_bodies())
168-
response = await peer.requests.get_block_bodies(headers)
175+
176+
response = await get_bodies_task
169177

170178
assert len(response) == 4
171179
assert response == bodies_bundle
@@ -190,8 +198,10 @@ async def send_block_bodies():
190198
transactions_bundles = tuple(zip(transactions_roots, trie_data_dicts))
191199
bodies_bundle = tuple(zip(bodies, transactions_bundles, uncles_hashes))
192200

201+
get_bodies_task = asyncio.ensure_future(peer.requests.get_block_bodies(headers))
193202
asyncio.ensure_future(send_block_bodies())
194-
response = await peer.requests.get_block_bodies(headers)
203+
204+
response = await get_bodies_task
195205

196206
assert len(response) == 4
197207
assert response == bodies_bundle

tests/trinity/core/p2p-proto/test_peer_block_header_request_and_response_api.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,10 @@ async def test_eth_peer_get_headers_round_trip(eth_peer_and_remote,
7373
async def send_headers():
7474
remote.sub_proto.send_block_headers(headers)
7575

76+
get_headers_task = asyncio.ensure_future(peer.requests.get_block_headers(*params))
7677
asyncio.ensure_future(send_headers())
77-
response = await peer.requests.get_block_headers(*params)
78+
79+
response = await get_headers_task
7880

7981
assert len(response) == len(headers)
8082
for expected, actual in zip(headers, response):
@@ -100,8 +102,10 @@ async def send_headers():
100102
remote.sub_proto.send_block_headers(headers, 0, request_id)
101103
await asyncio.sleep(0)
102104

105+
get_headers_task = asyncio.ensure_future(peer.requests.get_block_headers(*params))
103106
asyncio.ensure_future(send_headers())
104-
response = await peer.requests.get_block_headers(*params)
107+
108+
response = await get_headers_task
105109

106110
assert len(response) == len(headers)
107111
for expected, actual in zip(headers, response):
@@ -120,8 +124,10 @@ async def send_responses():
120124
remote.sub_proto.send_block_headers(headers)
121125
await asyncio.sleep(0)
122126

127+
get_headers_task = asyncio.ensure_future(peer.requests.get_block_headers(0, 10, 0, False))
123128
asyncio.ensure_future(send_responses())
124-
response = await peer.requests.get_block_headers(0, 10, 0, False)
129+
130+
response = await get_headers_task
125131

126132
assert len(response) == len(headers)
127133
for expected, actual in zip(headers, response):
@@ -144,8 +150,10 @@ async def send_responses():
144150
remote.sub_proto.send_block_headers(headers)
145151
await asyncio.sleep(0)
146152

153+
get_headers_task = asyncio.ensure_future(peer.requests.get_block_headers(0, 5, 0, False))
147154
asyncio.ensure_future(send_responses())
148-
response = await peer.requests.get_block_headers(0, 5, 0, False)
155+
156+
response = await get_headers_task
149157

150158
assert len(response) == len(headers)
151159
for expected, actual in zip(headers, response):

tests/trinity/core/p2p-proto/test_peer_receipts_request_and_response_api.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,10 @@ async def send_receipts():
7070
remote.sub_proto.send_receipts(receipts)
7171
await asyncio.sleep(0)
7272

73+
get_receipts_task = asyncio.ensure_future(peer.requests.get_receipts(headers))
7374
asyncio.ensure_future(send_receipts())
74-
response = await peer.requests.get_receipts(headers)
75+
76+
response = await get_receipts_task
7577

7678
assert len(response) == len(headers)
7779
assert response == receipts_bundle
@@ -89,8 +91,10 @@ async def send_receipts():
8991
remote.sub_proto.send_receipts((receipts[2], receipts[1], receipts[4]))
9092
await asyncio.sleep(0)
9193

94+
get_receipts_task = asyncio.ensure_future(peer.requests.get_receipts(headers))
9295
asyncio.ensure_future(send_receipts())
93-
response = await peer.requests.get_receipts(headers)
96+
97+
response = await get_receipts_task
9498

9599
assert len(response) == 3
96100
assert response == (receipts_bundle[2], receipts_bundle[1], receipts_bundle[4])
@@ -112,8 +116,10 @@ async def send_receipts():
112116
remote.sub_proto.send_transactions([])
113117
await asyncio.sleep(0)
114118

119+
get_receipts_task = asyncio.ensure_future(peer.requests.get_receipts(headers))
115120
asyncio.ensure_future(send_receipts())
116-
response = await peer.requests.get_receipts(headers)
121+
122+
response = await get_receipts_task
117123

118124
assert len(response) == len(headers)
119125
assert response == receipts_bundle
@@ -136,8 +142,10 @@ async def send_receipts():
136142
remote.sub_proto.send_receipts(receipts)
137143
await asyncio.sleep(0)
138144

145+
get_receipts_task = asyncio.ensure_future(peer.requests.get_receipts(headers))
139146
asyncio.ensure_future(send_receipts())
140-
response = await peer.requests.get_receipts(headers)
147+
148+
response = await get_receipts_task
141149

142150
assert len(response) == len(headers)
143151
assert response == receipts_bundle

trinity/protocol/eth/proto.py

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import logging
22
from typing import (
3-
cast,
43
List,
54
Tuple,
65
TYPE_CHECKING,
76
Union,
87
)
98

10-
from eth_typing import Hash32
9+
from eth_typing import (
10+
Hash32,
11+
BlockNumber,
12+
)
1113

1214
from eth.rlp.headers import BlockHeader
1315
from eth.rlp.receipts import Receipt
@@ -33,7 +35,6 @@
3335
Status,
3436
Transactions,
3537
)
36-
from . import constants
3738
from .requests import (
3839
BlockBodiesRequest,
3940
HeaderRequest,
@@ -69,12 +70,14 @@ def send_handshake(self, head_info: 'ChainInfo') -> None:
6970
self.logger.debug("Sending ETH/Status msg: %s", resp)
7071
self.send(*cmd.encode(resp))
7172

73+
#
74+
# Node Data
75+
#
7276
def send_get_node_data(self, request: Union[NodeDataRequest, Tuple[Hash32, ...]]) -> None:
77+
self._send_get_node_data(request.node_hashes)
78+
79+
def _send_get_node_data(self, node_hashes: Tuple[Hash32, ...]) -> None:
7380
cmd = GetNodeData(self.cmd_id_offset)
74-
if isinstance(request, NodeDataRequest):
75-
node_hashes = cast(NodeDataRequest, request).node_hashes
76-
else:
77-
node_hashes = cast(Tuple[Hash32, ...], request)
7881
header, body = cmd.encode(node_hashes)
7982
self.send(header, body)
8083

@@ -83,27 +86,34 @@ def send_node_data(self, nodes: Tuple[bytes, ...]) -> None:
8386
header, body = cmd.encode(nodes)
8487
self.send(header, body)
8588

89+
#
90+
# Block Headers
91+
#
8692
def send_get_block_headers(self, request: HeaderRequest) -> None:
8793
"""Send a GetBlockHeaders msg to the remote.
8894
8995
This requests that the remote send us up to max_headers, starting from
9096
block_number_or_hash if reverse is False or ending at block_number_or_hash if reverse is
9197
True.
9298
"""
93-
if request.max_headers > constants.MAX_HEADERS_FETCH:
94-
raise ValueError(
95-
"Cannot ask for more than {} block headers in a single request. "
96-
"Asked for {}".format(
97-
constants.MAX_HEADERS_FETCH,
98-
request.max_headers,
99-
)
100-
)
99+
self._send_get_block_headers(
100+
block_number_or_hash=request.block_number_or_hash,
101+
max_headers=request.max_headers,
102+
skip=request.skip,
103+
reverse=request.reverse,
104+
)
105+
106+
def _send_get_block_headers(self,
107+
block_number_or_hash: Union[BlockNumber, Hash32],
108+
max_headers: int,
109+
skip: int,
110+
reverse: bool) -> None:
101111
cmd = GetBlockHeaders(self.cmd_id_offset)
102112
data = {
103-
'block_number_or_hash': request.block_number_or_hash,
104-
'max_headers': request.max_headers,
105-
'skip': request.skip,
106-
'reverse': request.reverse
113+
'block_number_or_hash': block_number_or_hash,
114+
'max_headers': max_headers,
115+
'skip': skip,
116+
'reverse': reverse
107117
}
108118
header, body = cmd.encode(data)
109119
self.send(header, body)
@@ -113,13 +123,14 @@ def send_block_headers(self, headers: Tuple[BlockHeader, ...]) -> None:
113123
header, body = cmd.encode(headers)
114124
self.send(header, body)
115125

116-
def send_get_block_bodies(self,
117-
request: Union[BlockBodiesRequest, Tuple[Hash32, ...]]) -> None:
126+
#
127+
# Block Bodies
128+
#
129+
def send_get_block_bodies(self, request: BlockBodiesRequest) -> None:
130+
self._send_get_block_bodies(request.block_hashes)
131+
132+
def _send_get_block_bodies(self, block_hashes: Tuple[Hash32, ...]) -> None:
118133
cmd = GetBlockBodies(self.cmd_id_offset)
119-
if isinstance(request, BlockBodiesRequest):
120-
block_hashes = cast(BlockBodiesRequest, request).block_hashes
121-
else:
122-
block_hashes = cast(Tuple[Hash32, ...], request)
123134
header, body = cmd.encode(block_hashes)
124135
self.send(header, body)
125136

@@ -128,12 +139,13 @@ def send_block_bodies(self, blocks: List[BlockBody]) -> None:
128139
header, body = cmd.encode(blocks)
129140
self.send(header, body)
130141

131-
def send_get_receipts(self,
132-
request: Union[ReceiptsRequest, Tuple[Hash32, ...]]) -> None:
133-
if isinstance(request, ReceiptsRequest):
134-
block_hashes = cast(ReceiptsRequest, request).block_hashes
135-
else:
136-
block_hashes = cast(Tuple[Hash32, ...], request)
142+
#
143+
# Receipts
144+
#
145+
def send_get_receipts(self, request: ReceiptsRequest) -> None:
146+
self._send_get_receipts(request.block_hashes)
147+
148+
def _send_get_receipts(self, block_hashes: Tuple[Hash32, ...]) -> None:
137149
cmd = GetReceipts(self.cmd_id_offset)
138150
header, body = cmd.encode(block_hashes)
139151
self.send(header, body)
@@ -143,6 +155,9 @@ def send_receipts(self, receipts: List[List[Receipt]]) -> None:
143155
header, body = cmd.encode(receipts)
144156
self.send(header, body)
145157

158+
#
159+
# Transactions
160+
#
146161
def send_transactions(self, transactions: List[BaseTransactionFields]) -> None:
147162
cmd = Transactions(self.cmd_id_offset)
148163
header, body = cmd.encode(transactions)

trinity/protocol/les/proto.py

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
List,
33
Tuple,
44
TYPE_CHECKING,
5+
Union,
6+
)
7+
8+
from eth_typing import (
9+
BlockNumber,
10+
Hash32,
511
)
612

713
from eth.rlp.headers import BlockHeader
@@ -81,19 +87,28 @@ def send_get_block_headers(self, request: HeaderRequest) -> None:
8187
block_number_or_hash if reverse is False or ending at block_number_or_hash if reverse is
8288
True.
8389
"""
84-
if request.max_headers > constants.MAX_HEADERS_FETCH:
85-
raise ValueError(
86-
"Cannot ask for more than {} block headers in a single request".format(
87-
constants.MAX_HEADERS_FETCH))
90+
self._send_get_block_headers(
91+
request.block_number_or_hash,
92+
request.max_headers,
93+
request.skip,
94+
request.reverse,
95+
request.request_id,
96+
)
97+
98+
def _send_get_block_headers(self,
99+
block_number_or_hash: Union[BlockNumber, Hash32],
100+
max_headers: int,
101+
skip: int,
102+
reverse: bool,
103+
request_id: int) -> None:
88104
cmd = GetBlockHeaders(self.cmd_id_offset)
89-
# Number of block headers to skip between each item (i.e. step in python APIs).
90105
data = {
91-
'request_id': request.request_id,
106+
'request_id': request_id,
92107
'query': GetBlockHeadersQuery(
93-
request.block_number_or_hash,
94-
request.max_headers,
95-
request.skip,
96-
request.reverse,
108+
block_number_or_hash,
109+
max_headers,
110+
skip,
111+
reverse,
97112
),
98113
}
99114
header, body = cmd.encode(data)

trinity/sync/full/chain.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,17 @@ async def _download_block_bodies(self,
161161
# are still missing block bodies.
162162
all_block_body_bundles, all_missing_headers = zip(*responses)
163163

164+
for (body, (tx_root, trie_data_dict), uncles_hash) in concat(all_block_body_bundles):
165+
await self.wait(self.db.coro_persist_trie_data_dict(trie_data_dict))
166+
164167
block_bodies_by_key = merge(block_bodies_by_key, {
165168
(transaction_root, uncles_hash): block_body
166169
for block_body, (transaction_root, trie_dict_data), uncles_hash
167170
in concat(all_block_body_bundles)
168171
})
169172
headers = tuple(concat(all_missing_headers))
173+
174+
self.logger.debug("Got block bodies batch for %d headers", len(all_headers))
170175
return block_bodies_by_key
171176

172177
async def _get_block_bodies(self,
@@ -186,7 +191,6 @@ async def _get_block_bodies(self,
186191
"Timed out requesting block bodies for %d headers from %s", len(batch), peer,
187192
)
188193
return tuple(), batch
189-
else:
190194
self.logger.debug(
191195
"Got block bodies for %d headers from %s", len(block_body_bundles), peer,
192196
)
@@ -196,11 +200,6 @@ async def _get_block_bodies(self,
196200

197201
_, trie_roots_and_data_dicts, uncles_hashes = zip(*block_body_bundles)
198202

199-
# TODO: figure out why mypy is losing the type of the transactions_tries
200-
# so we can get rid of the ignore
201-
for (body, (tx_root, trie_data_dict), uncles_hash) in block_body_bundles:
202-
await self.wait(self.db.coro_persist_trie_data_dict(trie_data_dict))
203-
204203
received_keys = {
205204
(root_hash, uncles_hash)
206205
for (root_hash, _), uncles_hash
@@ -264,8 +263,8 @@ async def _download_receipts(self,
264263
trie_roots, trie_data_dicts = zip(*trie_roots_and_data_dicts)
265264
for trie_data in trie_data_dicts:
266265
await self.wait(self.db.coro_persist_trie_data_dict(trie_data))
267-
else:
268-
self.logger.debug("Got receipts batch for %d headers", len(all_headers))
266+
267+
self.logger.debug("Got receipts batch for %d headers", len(all_headers))
269268

270269
async def _get_receipts(self,
271270
peer: ETHPeer,

0 commit comments

Comments
 (0)