Skip to content

Commit 740dc53

Browse files
authored
Merge pull request #1353 from carver/decouple-handlers-from-peer-watcher
Separate Peer Message Handling from Syncing
2 parents a9f1553 + 5486b12 commit 740dc53

File tree

14 files changed

+469
-383
lines changed

14 files changed

+469
-383
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ def _make_peer_pool(self):
6161
def _make_syncer(self):
6262
return
6363

64+
def _make_request_server(self):
65+
return
66+
6467

6568
def get_server(privkey, address):
6669
base_db = AtomicDB()

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

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
from eth.vm.forks.frontier import FrontierVM
1111

1212

13+
from trinity.protocol.eth.servers import ETHRequestServer
1314
from trinity.protocol.les.peer import LESPeer
15+
from trinity.protocol.les.servers import LightRequestServer
1416
from trinity.sync.full.chain import FastChainSyncer, RegularChainSyncer
1517
from trinity.sync.full.state import StateDownloader
1618
from trinity.sync.light.chain import LightChainSyncer
@@ -45,11 +47,17 @@ async def test_fast_syncer(request, event_loop, chaindb_fresh, chaindb_20):
4547
bob_headerdb=FakeAsyncHeaderDB(chaindb_20.db))
4648
client_peer_pool = MockPeerPoolWithConnectedPeers([client_peer])
4749
client = FastChainSyncer(FrontierTestChain(chaindb_fresh.db), chaindb_fresh, client_peer_pool)
50+
server_peer_pool = MockPeerPoolWithConnectedPeers([server_peer])
4851
server = RegularChainSyncer(
4952
FrontierTestChain(chaindb_20.db),
5053
chaindb_20,
51-
MockPeerPoolWithConnectedPeers([server_peer]))
54+
server_peer_pool,
55+
)
5256
asyncio.ensure_future(server.run())
57+
server_request_handler = ETHRequestServer(FakeAsyncChainDB(chaindb_20.db), server_peer_pool)
58+
asyncio.ensure_future(server_request_handler.run())
59+
server_peer.logger.info("%s is serving 20 blocks", server_peer)
60+
client_peer.logger.info("%s is syncing up 20", client_peer)
5361

5462
def finalizer():
5563
event_loop.run_until_complete(server.cancel())
@@ -81,11 +89,17 @@ async def test_regular_syncer(request, event_loop, chaindb_fresh, chaindb_20):
8189
FrontierTestChain(chaindb_fresh.db),
8290
chaindb_fresh,
8391
MockPeerPoolWithConnectedPeers([client_peer]))
92+
server_peer_pool = MockPeerPoolWithConnectedPeers([server_peer])
8493
server = RegularChainSyncer(
8594
FrontierTestChain(chaindb_20.db),
8695
chaindb_20,
87-
MockPeerPoolWithConnectedPeers([server_peer]))
96+
server_peer_pool,
97+
)
8898
asyncio.ensure_future(server.run())
99+
server_request_handler = ETHRequestServer(FakeAsyncChainDB(chaindb_20.db), server_peer_pool)
100+
asyncio.ensure_future(server_request_handler.run())
101+
server_peer.logger.info("%s is serving 20 blocks", server_peer)
102+
client_peer.logger.info("%s is syncing up 20", client_peer)
89103

90104
def finalizer():
91105
event_loop.run_until_complete(asyncio.gather(
@@ -115,11 +129,17 @@ async def test_light_syncer(request, event_loop, chaindb_fresh, chaindb_20):
115129
FrontierTestChain(chaindb_fresh.db),
116130
chaindb_fresh,
117131
MockPeerPoolWithConnectedPeers([client_peer]))
132+
server_peer_pool = MockPeerPoolWithConnectedPeers([server_peer])
118133
server = LightChainSyncer(
119134
FrontierTestChain(chaindb_20.db),
120135
chaindb_20,
121-
MockPeerPoolWithConnectedPeers([server_peer]))
136+
server_peer_pool,
137+
)
122138
asyncio.ensure_future(server.run())
139+
server_request_handler = LightRequestServer(FakeAsyncHeaderDB(chaindb_20.db), server_peer_pool)
140+
asyncio.ensure_future(server_request_handler.run())
141+
server_peer.logger.info("%s is serving 20 blocks", server_peer)
142+
client_peer.logger.info("%s is syncing up 20", client_peer)
123143

124144
def finalizer():
125145
event_loop.run_until_complete(asyncio.gather(

tests/trinity/integration/test_lightchain_integration.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from trinity.constants import ROPSTEN_NETWORK_ID
2828
from trinity.protocol.common.context import ChainContext
2929
from trinity.protocol.les.peer import LESPeerPool
30+
from trinity.protocol.les.servers import LightRequestServer
3031
from trinity.sync.light.chain import LightChainSyncer
3132
from trinity.sync.light.service import LightPeerChain
3233
from trinity.utils.ipc import (
@@ -176,17 +177,20 @@ async def test_lightchain_integration(
176177
syncer = LightChainSyncer(chain, chaindb, peer_pool)
177178
syncer.min_peers_to_sync = 1
178179
peer_chain = LightPeerChain(headerdb, peer_pool)
180+
server_request_handler = LightRequestServer(headerdb, peer_pool)
179181

180182
asyncio.ensure_future(peer_pool.run())
181183
asyncio.ensure_future(connect_to_peers_loop(peer_pool, tuple([remote])))
182184
asyncio.ensure_future(peer_chain.run())
185+
asyncio.ensure_future(server_request_handler.run())
183186
asyncio.ensure_future(syncer.run())
184187
await asyncio.sleep(0) # Yield control to give the LightChainSyncer a chance to start
185188

186189
def finalizer():
187190
event_loop.run_until_complete(peer_pool.cancel())
188191
event_loop.run_until_complete(peer_chain.cancel())
189192
event_loop.run_until_complete(syncer.cancel())
193+
event_loop.run_until_complete(server_request_handler.cancel())
190194

191195
request.addfinalizer(finalizer)
192196

trinity/p2p/handlers.py

Lines changed: 0 additions & 144 deletions
This file was deleted.

trinity/protocol/common/peer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,12 @@ async def _local_chain_info(self) -> ChainInfo:
9292

9393
class BaseChainPeerFactory(BasePeerFactory):
9494
context: ChainContext
95+
peer_class: Type[BaseChainPeer]
9596

9697

9798
class BaseChainPeerPool(BasePeerPool):
9899
connected_nodes: Dict[Node, BaseChainPeer] # type: ignore
100+
peer_factory_class: Type[BaseChainPeerFactory]
99101

100102
@property
101103
def highest_td_peer(self) -> BaseChainPeer:

0 commit comments

Comments
 (0)