Browse Source

Reduce admin test timeouts to reduce random failures

pull/1497/head
Miguel Grinberg 9 months ago
parent
commit
05b460367c
Failed to extract signature
  1. 51
      tests/async/test_admin.py
  2. 45
      tests/common/test_admin.py

51
tests/async/test_admin.py

@ -21,7 +21,8 @@ def with_instrumented_server(auth=False, **ikwargs):
def decorator(f): def decorator(f):
@wraps(f) @wraps(f)
def wrapped(self, *args, **kwargs): def wrapped(self, *args, **kwargs):
sio = socketio.AsyncServer(async_mode='asgi') sio = socketio.AsyncServer(async_mode='asgi', ping_interval=5,
ping_timeout=4)
@sio.event @sio.event
async def enter_room(sid, data): async def enter_room(sid, data):
@ -107,23 +108,23 @@ class TestAsyncAdmin:
@with_instrumented_server(auth=False) @with_instrumented_server(auth=False)
def test_admin_connect_with_no_auth(self): def test_admin_connect_with_no_auth(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin') admin_client.connect('http://localhost:8900', namespace='/admin')
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'foo': 'bar'}) auth={'foo': 'bar'})
@with_instrumented_server(auth={'foo': 'bar'}) @with_instrumented_server(auth={'foo': 'bar'})
def test_admin_connect_with_dict_auth(self): def test_admin_connect_with_dict_auth(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'foo': 'bar'}) auth={'foo': 'bar'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect( admin_client.connect(
'http://localhost:8900', namespace='/admin', 'http://localhost:8900', namespace='/admin',
auth={'foo': 'baz'}) auth={'foo': 'baz'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect( admin_client.connect(
'http://localhost:8900', namespace='/admin') 'http://localhost:8900', namespace='/admin')
@ -131,52 +132,52 @@ class TestAsyncAdmin:
@with_instrumented_server(auth=[{'foo': 'bar'}, @with_instrumented_server(auth=[{'foo': 'bar'},
{'u': 'admin', 'p': 'secret'}]) {'u': 'admin', 'p': 'secret'}])
def test_admin_connect_with_list_auth(self): def test_admin_connect_with_list_auth(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'foo': 'bar'}) auth={'foo': 'bar'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'u': 'admin', 'p': 'secret'}) auth={'u': 'admin', 'p': 'secret'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin', auth={'foo': 'baz'}) namespace='/admin', auth={'foo': 'baz'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin') namespace='/admin')
@with_instrumented_server(auth=_custom_auth) @with_instrumented_server(auth=_custom_auth)
def test_admin_connect_with_function_auth(self): def test_admin_connect_with_function_auth(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'foo': 'bar'}) auth={'foo': 'bar'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin', auth={'foo': 'baz'}) namespace='/admin', auth={'foo': 'baz'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin') namespace='/admin')
@with_instrumented_server(auth=_async_custom_auth) @with_instrumented_server(auth=_async_custom_auth)
def test_admin_connect_with_async_function_auth(self): def test_admin_connect_with_async_function_auth(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'foo': 'bar'}) auth={'foo': 'bar'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin', auth={'foo': 'baz'}) namespace='/admin', auth={'foo': 'baz'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin') namespace='/admin')
@with_instrumented_server() @with_instrumented_server()
def test_admin_connect_only_admin(self): def test_admin_connect_only_admin(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin') admin_client.connect('http://localhost:8900', namespace='/admin')
sid = admin_client.sid sid = admin_client.sid
events = self._expect({'config': 1, 'all_sockets': 1, events = self._expect({'config': 1, 'all_sockets': 1,
@ -201,10 +202,10 @@ class TestAsyncAdmin:
@with_instrumented_server() @with_instrumented_server()
def test_admin_connect_with_others(self): def test_admin_connect_with_others(self):
with socketio.SimpleClient() as client1, \ with socketio.SimpleClient(reconnection=False) as client1, \
socketio.SimpleClient() as client2, \ socketio.SimpleClient(reconnection=False) as client2, \
socketio.SimpleClient() as client3, \ socketio.SimpleClient(reconnection=False) as client3, \
socketio.SimpleClient() as admin_client: socketio.SimpleClient(reconnection=False) as admin_client:
client1.connect('http://localhost:8900') client1.connect('http://localhost:8900')
client1.emit('enter_room', 'room') client1.emit('enter_room', 'room')
sid1 = client1.sid sid1 = client1.sid
@ -251,7 +252,7 @@ class TestAsyncAdmin:
@with_instrumented_server(mode='production', read_only=True) @with_instrumented_server(mode='production', read_only=True)
def test_admin_connect_production(self): def test_admin_connect_production(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin') admin_client.connect('http://localhost:8900', namespace='/admin')
events = self._expect({'config': 1, 'server_stats': 2}, events = self._expect({'config': 1, 'server_stats': 2},
admin_client) admin_client)
@ -272,9 +273,9 @@ class TestAsyncAdmin:
@with_instrumented_server() @with_instrumented_server()
def test_admin_features(self): def test_admin_features(self):
with socketio.SimpleClient() as client1, \ with socketio.SimpleClient(reconnection=False) as client1, \
socketio.SimpleClient() as client2, \ socketio.SimpleClient(reconnection=False) as client2, \
socketio.SimpleClient() as admin_client: socketio.SimpleClient(reconnection=False) as admin_client:
client1.connect('http://localhost:8900') client1.connect('http://localhost:8900')
client2.connect('http://localhost:8900') client2.connect('http://localhost:8900')
admin_client.connect('http://localhost:8900', namespace='/admin') admin_client.connect('http://localhost:8900', namespace='/admin')

45
tests/common/test_admin.py

@ -18,7 +18,8 @@ def with_instrumented_server(auth=False, **ikwargs):
def decorator(f): def decorator(f):
@wraps(f) @wraps(f)
def wrapped(self, *args, **kwargs): def wrapped(self, *args, **kwargs):
sio = socketio.Server(async_mode='threading') sio = socketio.Server(async_mode='threading', ping_interval=5,
ping_timeout=4)
@sio.event @sio.event
def enter_room(sid, data): def enter_room(sid, data):
@ -97,23 +98,23 @@ class TestAdmin:
@with_instrumented_server(auth=False) @with_instrumented_server(auth=False)
def test_admin_connect_with_no_auth(self): def test_admin_connect_with_no_auth(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin') admin_client.connect('http://localhost:8900', namespace='/admin')
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'foo': 'bar'}) auth={'foo': 'bar'})
@with_instrumented_server(auth={'foo': 'bar'}) @with_instrumented_server(auth={'foo': 'bar'})
def test_admin_connect_with_dict_auth(self): def test_admin_connect_with_dict_auth(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'foo': 'bar'}) auth={'foo': 'bar'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect( admin_client.connect(
'http://localhost:8900', namespace='/admin', 'http://localhost:8900', namespace='/admin',
auth={'foo': 'baz'}) auth={'foo': 'baz'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect( admin_client.connect(
'http://localhost:8900', namespace='/admin') 'http://localhost:8900', namespace='/admin')
@ -121,38 +122,38 @@ class TestAdmin:
@with_instrumented_server(auth=[{'foo': 'bar'}, @with_instrumented_server(auth=[{'foo': 'bar'},
{'u': 'admin', 'p': 'secret'}]) {'u': 'admin', 'p': 'secret'}])
def test_admin_connect_with_list_auth(self): def test_admin_connect_with_list_auth(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'foo': 'bar'}) auth={'foo': 'bar'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'u': 'admin', 'p': 'secret'}) auth={'u': 'admin', 'p': 'secret'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin', auth={'foo': 'baz'}) namespace='/admin', auth={'foo': 'baz'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin') namespace='/admin')
@with_instrumented_server(auth=_custom_auth) @with_instrumented_server(auth=_custom_auth)
def test_admin_connect_with_function_auth(self): def test_admin_connect_with_function_auth(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin', admin_client.connect('http://localhost:8900', namespace='/admin',
auth={'foo': 'bar'}) auth={'foo': 'bar'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin', auth={'foo': 'baz'}) namespace='/admin', auth={'foo': 'baz'})
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):
admin_client.connect('http://localhost:8900', admin_client.connect('http://localhost:8900',
namespace='/admin') namespace='/admin')
@with_instrumented_server() @with_instrumented_server()
def test_admin_connect_only_admin(self): def test_admin_connect_only_admin(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin') admin_client.connect('http://localhost:8900', namespace='/admin')
sid = admin_client.sid sid = admin_client.sid
events = self._expect({'config': 1, 'all_sockets': 1, events = self._expect({'config': 1, 'all_sockets': 1,
@ -177,10 +178,10 @@ class TestAdmin:
@with_instrumented_server() @with_instrumented_server()
def test_admin_connect_with_others(self): def test_admin_connect_with_others(self):
with socketio.SimpleClient() as client1, \ with socketio.SimpleClient(reconnection=False) as client1, \
socketio.SimpleClient() as client2, \ socketio.SimpleClient(reconnection=False) as client2, \
socketio.SimpleClient() as client3, \ socketio.SimpleClient(reconnection=False) as client3, \
socketio.SimpleClient() as admin_client: socketio.SimpleClient(reconnection=False) as admin_client:
client1.connect('http://localhost:8900') client1.connect('http://localhost:8900')
client1.emit('enter_room', 'room') client1.emit('enter_room', 'room')
sid1 = client1.sid sid1 = client1.sid
@ -227,7 +228,7 @@ class TestAdmin:
@with_instrumented_server(mode='production', read_only=True) @with_instrumented_server(mode='production', read_only=True)
def test_admin_connect_production(self): def test_admin_connect_production(self):
with socketio.SimpleClient() as admin_client: with socketio.SimpleClient(reconnection=False) as admin_client:
admin_client.connect('http://localhost:8900', namespace='/admin') admin_client.connect('http://localhost:8900', namespace='/admin')
events = self._expect({'config': 1, 'server_stats': 2}, events = self._expect({'config': 1, 'server_stats': 2},
admin_client) admin_client)
@ -248,9 +249,9 @@ class TestAdmin:
@with_instrumented_server() @with_instrumented_server()
def test_admin_features(self): def test_admin_features(self):
with socketio.SimpleClient() as client1, \ with socketio.SimpleClient(reconnection=False) as client1, \
socketio.SimpleClient() as client2, \ socketio.SimpleClient(reconnection=False) as client2, \
socketio.SimpleClient() as admin_client: socketio.SimpleClient(reconnection=False) as admin_client:
client1.connect('http://localhost:8900') client1.connect('http://localhost:8900')
client2.connect('http://localhost:8900') client2.connect('http://localhost:8900')
admin_client.connect('http://localhost:8900', namespace='/admin') admin_client.connect('http://localhost:8900', namespace='/admin')

Loading…
Cancel
Save