22import receptor
33from receptor .config import ReceptorConfig
44from receptor .receptor import Receptor
5- from receptor .node import mainloop
65import socket
76import asyncio
87from unittest .mock import patch
98
109
1110@pytest .fixture
1211def receptor_config (unused_tcp_port , tmpdir , type = "node" ):
13- return ReceptorConfig (['--data-dir' , tmpdir .strpath , type , '--listen-port ' , str (unused_tcp_port )])
12+ return ReceptorConfig (['--data-dir' , tmpdir .strpath , type , '--listen' , '127.0.0.1:' + str (unused_tcp_port )])
1413
1514
1615@pytest .fixture
@@ -27,7 +26,7 @@ def _receptor_service(node_name, peer_ports=None, type="node"):
2726 peer_config = []
2827 for peer in peers :
2928 peer_config .extend (['--peer' , peer ])
30- base_config = ['--node-id' , node_name , '--data-dir' , tmpdir .strpath , type , '--listen-port ' , str (unused_tcp_port_factory ())]
29+ base_config = ['--node-id' , node_name , '--data-dir' , tmpdir .strpath , type , '--listen' , '127.0.0.1' + str (unused_tcp_port_factory ())]
3130 base_config .extend (peer_config )
3231 receptor_config = ReceptorConfig (base_config )
3332 return Receptor (receptor_config )
@@ -38,7 +37,8 @@ async def connect_port(receptor_obj):
3837 n = 5
3938 while n :
4039 sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
41- result = sock .connect_ex (('127.0.0.1' ,receptor_obj .config .node_listen_port ))
40+ node , port = receptor_obj .config .node_listen .split (":" )
41+ result = sock .connect_ex ((node , int (port )))
4242 if result != 0 :
4343 await asyncio .sleep (1 )
4444 n = n - 1
@@ -52,17 +52,9 @@ async def wait_for_time(seconds):
5252
5353
5454@patch .object (receptor .protocol .BasicProtocol , 'connection_made' )
55- def test_main_node (mock_connection_made , event_loop , receptor_service ):
56- event_loop .call_soon (event_loop .create_task , connect_port (receptor_service ))
57- mainloop (receptor = receptor_service , ping_interval = - 1 , loop = event_loop )
55+ def test_main_node (mock_connection_made , event_loop , receptor_config ):
56+ c = receptor .Controller (receptor_config , loop = event_loop )
57+ event_loop .call_soon (event_loop .create_task , connect_port (c .receptor ))
58+ c .enable_server ('{}' .format (receptor_config .node_listen ))
59+ c .run ()
5860 mock_connection_made .assert_called_once ()
59-
60-
61- def test_peering (event_loop , receptor_service_factory ):
62- r1 = receptor_service_factory ('A' , type = "controller" )
63- r2 = receptor_service_factory ('B' , peer_ports = [r1 .config .node_listen_port ])
64- mainloop (receptor = r1 , ping_interval = - 1 , loop = event_loop , skip_run = True )
65- mainloop (receptor = r2 , ping_interval = - 1 , loop = event_loop , skip_run = True )
66- event_loop .run_until_complete (wait_for_time (10 ))
67- assert r1 .router .node_is_known ('B' )
68- assert r2 .router .node_is_known ('A' )
0 commit comments