Skip to content

Commit 7320cf7

Browse files
authored
Merge pull request #77 from psav/psav/websockets_reconnect_test
Test websockets reconnect
2 parents 83607e7 + 60a154c commit 7320cf7

2 files changed

Lines changed: 42 additions & 1 deletion

File tree

test/perf/debugger.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,13 @@ async def send_pings():
106106
# controller.loop = asyncio.get_event_loop()
107107
# return controller.run(ping_entrypoint)
108108
try:
109-
await self.controller.loop.create_task(ping_entrypoint())
109+
await asyncio.wait_for(ping_entrypoint(), timeout=10)
110110
except UnrouteableError:
111111
return web.Response(text="Failed", status=404)
112112
except ConnectionRefusedError:
113113
return web.Response(text="Failed", status=404)
114+
except asyncio.TimeoutError:
115+
return web.Response(text="Failed", status=404)
114116
print("RESPONSE")
115117
return web.Response(text=json.dumps(responses))
116118

test/perf/test_websockets.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from test.perf.affinity import Node
2+
from test.perf.affinity import Topology
3+
from test.perf.utils import random_port
4+
import time
5+
6+
import pytest
7+
from wait_for import wait_for, TimedOutError
8+
9+
10+
@pytest.fixture(scope="function")
11+
def random_topology():
12+
topo = Topology.load_topology_from_file("test/perf/topology-random.yaml", use_diag_node=True)
13+
try:
14+
topo.start(wait=True)
15+
yield topo
16+
finally:
17+
topo.stop()
18+
19+
20+
def test_websocket_reconnect(random_topology):
21+
nodeX = Node("nodeX", connections=["node1"], stats_enable=True, stats_port=random_port(),
22+
listen=f"ws://127.0.0.1:{random_port()}")
23+
nodeY = Node("nodeY", connections=["nodeX"], stats_enable=True, stats_port=random_port(),
24+
listen=f"ws://127.0.0.1:{random_port()}")
25+
random_topology.add_node(nodeX)
26+
random_topology.add_node(nodeY)
27+
nodeX.start()
28+
nodeY.start()
29+
wait_for(random_topology.validate_all_node_routes, delay=6, num_sec=30)
30+
assert nodeY.ping(1) != "Failed"
31+
nodeX.stop()
32+
time.sleep(7)
33+
assert nodeY.ping(1) == "Failed"
34+
nodeX.start()
35+
time.sleep(7)
36+
wait_for(random_topology.validate_all_node_routes, delay=6, num_sec=30)
37+
assert nodeY.ping(1) != "Failed"
38+
nodeY.stop()
39+
nodeX.stop()

0 commit comments

Comments
 (0)