Skip to content

Commit 29154b9

Browse files
committed
more test fixes for async support
1 parent 5312cf3 commit 29154b9

File tree

6 files changed

+29
-13
lines changed

6 files changed

+29
-13
lines changed

examples/thread_example.py

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import sys
12
from time import sleep
23

34
from oscpy.server import OSCThreadServer

examples/trio_example.py

+5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ async def stop(*values):
2424
print(f"time to leave!")
2525
await osc.stop_all()
2626

27+
@osc.address("/info")
28+
async def info():
29+
address, port = osc.getaddress()
30+
print(address, port)
31+
2732
await osc.process()
2833

2934
trio.run(osc_app, '0.0.0.0', 8000)

oscpy/server/asyncio_server.py

+6
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ async def handle_message(self, data, sender, sender_socket):
5555

5656
async def _execute_callbacks(self, callbacks_list, address, values):
5757
for cb, get_address in callbacks_list:
58+
result = None
5859
try:
5960
if get_address:
6061
result = cb(address, *values)
@@ -69,6 +70,9 @@ async def _execute_callbacks(self, callbacks_list, address, values):
6970
logger.exception("Ignoring unhandled exception caught in oscpy server")
7071
else:
7172
raise
73+
finally:
74+
if result:
75+
del result
7276

7377
def stop(self, sock=None):
7478
"""Close and remove a socket from the server's sockets.
@@ -82,6 +86,8 @@ def stop(self, sock=None):
8286
if sock in self.sockets:
8387
sock.close()
8488
self.sockets.remove(sock)
89+
if sock is self.default_socket:
90+
self.default_socket = None
8591
else:
8692
raise RuntimeError('{} is not one of my sockets!'.format(sock))
8793

oscpy/server/thread_server.py

+2
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ def stop(self, s=None):
4242
if s in read:
4343
s.recvfrom(UDP_MAX_SIZE)
4444
self.sockets.remove(s)
45+
if s is self.default_socket:
46+
self.default_socket = None
4547
else:
4648
raise RuntimeError('{} is not one of my sockets!'.format(s))
4749

oscpy/server/trio_server.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ async def stop(self, sock):
8484
nursery = self.nurseries.pop(sock)
8585
nursery.cancel_scope.deadline = 0
8686

87-
async def getaddress(self, sock=None):
87+
def getaddress(self, sock=None):
8888
"""Wrap call to getsockname.
8989
9090
If `sock` is None, uses the default socket for the server.
@@ -97,4 +97,4 @@ async def getaddress(self, sock=None):
9797
elif not sock:
9898
raise RuntimeError('no default socket yet and no socket provided')
9999

100-
return await sock.getsockname()
100+
return sock.getsockname()

tests/test_server.py

+13-11
Original file line numberDiff line numberDiff line change
@@ -43,33 +43,34 @@ def test_listen(cls):
4343
@pytest.mark.parametrize("cls", server_classes)
4444
def test_getaddress(cls):
4545
osc = cls()
46-
sock = osc.listen()
46+
sock = _await(osc.listen, osc)
4747
assert osc.getaddress(sock)[0] == '127.0.0.1'
4848

4949
with pytest.raises(RuntimeError):
5050
osc.getaddress()
5151

52-
sock2 = osc.listen(default=True)
52+
sock2 = _await(osc.listen, osc, kwargs=dict(default=True))
5353
assert osc.getaddress(sock2)[0] == '127.0.0.1'
5454
runner(osc, timeout=1, socket=sock)
5555

5656

5757
@pytest.mark.parametrize("cls", server_classes)
5858
def test_listen_default(cls):
5959
osc = cls()
60-
sock = osc.listen(default=True)
60+
sock = _await(osc.listen, osc, kwargs=dict(default=True))
6161

6262
with pytest.raises(RuntimeError) as e_info: # noqa
63-
osc.listen(default=True)
63+
# osc.listen(default=True)
64+
_await(osc.listen, osc, kwargs=dict(default=True))
6465

6566
osc.close(sock)
66-
osc.listen(default=True)
67+
_await(osc.listen, osc, kwargs=dict(default=True))
6768

6869

6970
@pytest.mark.parametrize("cls", server_classes)
7071
def test_close(cls):
7172
osc = cls()
72-
osc.listen(default=True)
73+
_await(osc.listen, osc, kwargs=dict(default=True))
7374

7475
osc.close()
7576
with pytest.raises(RuntimeError) as e_info: # noqa
@@ -81,7 +82,8 @@ def test_close(cls):
8182
def test_close_unix(cls):
8283
osc = cls()
8384
filename = mktemp()
84-
unix = osc.listen(address=filename, family='unix')
85+
# unix = osc.listen(address=filename, family='unix')
86+
unix = _await(osc.listen, osc, kwargs=dict(address=filename, family='unix'))
8587
assert exists(filename)
8688
osc.close(unix)
8789
assert not exists(filename)
@@ -97,7 +99,7 @@ def test_stop_unknown(cls):
9799
@pytest.mark.parametrize("cls", server_classes - {OSCCurioServer})
98100
def test_stop_default(cls):
99101
osc = cls()
100-
osc.listen(default=True)
102+
_await(osc.listen, osc, kwargs=dict(default=True))
101103
assert len(osc.sockets) == 1
102104
osc.stop()
103105
assert len(osc.sockets) == 0
@@ -106,14 +108,14 @@ def test_stop_default(cls):
106108
@pytest.mark.parametrize("cls", server_classes - {OSCCurioServer})
107109
def test_stop_all(cls):
108110
osc = cls()
109-
sock = osc.listen(default=True)
111+
sock = _await(osc.listen, osc, kwargs=dict(default=True))
110112
host, port = sock.getsockname()
111-
osc.listen()
113+
sock2 = _await(osc.listen, osc)
112114
assert len(osc.sockets) == 2
113115
osc.stop_all()
114116
assert len(osc.sockets) == 0
115117
sleep(.1)
116-
osc.listen(address=host, port=port)
118+
sock3 = _await(osc.listen, osc, kwargs=dict(default=True))
117119
assert len(osc.sockets) == 1
118120
osc.stop_all()
119121

0 commit comments

Comments
 (0)