14
14
to_hex ,
15
15
)
16
16
17
+ from p2p .events import (
18
+ PeerCountRequest ,
19
+ PeerCountResponse ,
20
+ )
21
+
17
22
from trinity .utils .version import construct_trinity_client_identifier
18
23
19
24
@@ -35,15 +40,6 @@ def build_request(method, params=[]):
35
40
return json .dumps (request ).encode ()
36
41
37
42
38
- class MockPeerPool :
39
-
40
- def __init__ (self , peer_count = 0 ):
41
- self .peer_count = peer_count
42
-
43
- def __len__ (self ):
44
- return self .peer_count
45
-
46
-
47
43
def id_from_rpc_request (param ):
48
44
if isinstance (param , bytes ):
49
45
request = json .loads (param .decode ())
@@ -68,6 +64,7 @@ async def get_ipc_response(
68
64
jsonrpc_ipc_pipe_path ,
69
65
request_msg ,
70
66
event_loop ):
67
+
71
68
assert wait_for (jsonrpc_ipc_pipe_path ), "IPC server did not successfully start with IPC file"
72
69
73
70
reader , writer = await asyncio .open_unix_connection (str (jsonrpc_ipc_pipe_path ), loop = event_loop )
@@ -399,18 +396,27 @@ async def test_eth_call_with_contract_on_ipc(
399
396
assert result == expected
400
397
401
398
399
+ def mock_peer_count (count ):
400
+ async def mock_event_bus_interaction (bus ):
401
+ async for req in bus .stream (PeerCountRequest ):
402
+ bus .broadcast (PeerCountResponse (count ), req .broadcast_config ())
403
+ break
404
+
405
+ return mock_event_bus_interaction
406
+
407
+
402
408
@pytest .mark .asyncio
403
409
@pytest .mark .parametrize (
404
- 'request_msg, mock_peer_pool , expected' ,
410
+ 'request_msg, event_bus_setup_fn , expected' ,
405
411
(
406
412
(
407
413
build_request ('net_peerCount' ),
408
- MockPeerPool ( peer_count = 1 ),
414
+ mock_peer_count ( 1 ),
409
415
{'result' : '0x1' , 'id' : 3 , 'jsonrpc' : '2.0' },
410
416
),
411
417
(
412
418
build_request ('net_peerCount' ),
413
- MockPeerPool ( peer_count = 0 ),
419
+ mock_peer_count ( 0 ),
414
420
{'result' : '0x0' , 'id' : 3 , 'jsonrpc' : '2.0' },
415
421
),
416
422
),
@@ -422,10 +428,17 @@ async def test_peer_pool_over_ipc(
422
428
monkeypatch ,
423
429
jsonrpc_ipc_pipe_path ,
424
430
request_msg ,
425
- mock_peer_pool ,
431
+ event_bus_setup_fn ,
432
+ event_bus ,
426
433
expected ,
427
434
event_loop ,
428
435
ipc_server ):
429
- monkeypatch .setattr (ipc_server .rpc .modules ['net' ], '_peer_pool' , mock_peer_pool )
430
- result = await get_ipc_response (jsonrpc_ipc_pipe_path , request_msg , event_loop )
436
+
437
+ asyncio .ensure_future (event_bus_setup_fn (event_bus ))
438
+
439
+ result = await get_ipc_response (
440
+ jsonrpc_ipc_pipe_path ,
441
+ request_msg ,
442
+ event_loop
443
+ )
431
444
assert result == expected
0 commit comments