Run test_socket on asyncio and trollius
This commit is contained in:
parent
783b0a8526
commit
f2dcc50515
@ -150,7 +150,8 @@ if trollius is not None:
|
|||||||
class GreenTrolliusTask(_GreenTaskMixin, trollius.Task):
|
class GreenTrolliusTask(_GreenTaskMixin, trollius.Task):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class GreenTrolliusUnixSelectorLoop(_GreenLoopMixin, trollius.SelectorEventLoop):
|
class GreenTrolliusUnixSelectorLoop(_GreenLoopMixin,
|
||||||
|
trollius.SelectorEventLoop):
|
||||||
def create_task(self, coro):
|
def create_task(self, coro):
|
||||||
return GreenTrolliusTask(coro)
|
return GreenTrolliusTask(coro)
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ from socket import error, SOCK_STREAM
|
|||||||
from socket import socket as std_socket
|
from socket import socket as std_socket
|
||||||
|
|
||||||
from . import yield_from
|
from . import yield_from
|
||||||
from . import GreenUnixSelectorLoop
|
from . import _GreenLoopMixin
|
||||||
|
|
||||||
|
|
||||||
class socket:
|
class socket:
|
||||||
@ -30,8 +30,8 @@ class socket:
|
|||||||
try:
|
try:
|
||||||
self._sock.setblocking(False)
|
self._sock.setblocking(False)
|
||||||
self._loop = asyncio.get_event_loop()
|
self._loop = asyncio.get_event_loop()
|
||||||
assert isinstance(self._loop, GreenUnixSelectorLoop), \
|
assert isinstance(self._loop, _GreenLoopMixin), \
|
||||||
'GreenUnixSelectorLoop event loop is required'
|
'greenio event loop is required'
|
||||||
except:
|
except:
|
||||||
if own_sock is not None:
|
if own_sock is not None:
|
||||||
# An unexpected error has occurred. Close the
|
# An unexpected error has occurred. Close the
|
||||||
|
@ -6,10 +6,19 @@
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
import asyncio
|
import asyncio
|
||||||
from unittest import TestCase
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import trollius as asyncio
|
asyncio = None
|
||||||
|
try:
|
||||||
|
import trollius
|
||||||
|
except ImportError:
|
||||||
|
trollius = None
|
||||||
|
if asyncio is None and trollius is None:
|
||||||
|
raise ImportError("asyncio and trollius modules are missing")
|
||||||
|
|
||||||
|
try:
|
||||||
from trollius.test_utils import TestCase
|
from trollius.test_utils import TestCase
|
||||||
|
except ImportError:
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
import greenio
|
import greenio
|
||||||
import greenio.socket as greensocket
|
import greenio.socket as greensocket
|
||||||
@ -17,21 +26,24 @@ import greenio.socket as greensocket
|
|||||||
import socket as std_socket
|
import socket as std_socket
|
||||||
|
|
||||||
|
|
||||||
class SocketTests(TestCase):
|
class SocketMixin(object):
|
||||||
|
asyncio = None
|
||||||
|
event_loop_policy = greenio.GreenEventLoopPolicy
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
asyncio.set_event_loop_policy(greenio.GreenEventLoopPolicy())
|
policy = self.event_loop_policy()
|
||||||
self.loop = asyncio.new_event_loop()
|
self.asyncio.set_event_loop_policy(policy)
|
||||||
asyncio.set_event_loop(self.loop)
|
self.loop = policy.new_event_loop()
|
||||||
|
policy.set_event_loop(self.loop)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.loop.close()
|
self.loop.close()
|
||||||
asyncio.set_event_loop_policy(None)
|
self.asyncio.set_event_loop_policy(None)
|
||||||
|
|
||||||
def test_socket_wrong_event_loop(self):
|
def test_socket_wrong_event_loop(self):
|
||||||
loop = asyncio.DefaultEventLoopPolicy().new_event_loop()
|
loop = self.asyncio.DefaultEventLoopPolicy().new_event_loop()
|
||||||
self.addCleanup(loop.close)
|
self.addCleanup(loop.close)
|
||||||
asyncio.set_event_loop(loop)
|
self.asyncio.set_event_loop(loop)
|
||||||
self.assertRaises(AssertionError, greensocket.socket)
|
self.assertRaises(AssertionError, greensocket.socket)
|
||||||
|
|
||||||
def test_socket_docs(self):
|
def test_socket_docs(self):
|
||||||
@ -187,3 +199,19 @@ class SocketTests(TestCase):
|
|||||||
greenio.task(server)(greensocket.socket))
|
greenio.task(server)(greensocket.socket))
|
||||||
thread.join(1)
|
thread.join(1)
|
||||||
self.assertEqual(non_local['check'], 1)
|
self.assertEqual(non_local['check'], 1)
|
||||||
|
|
||||||
|
if asyncio is not None:
|
||||||
|
class SocketTests(SocketMixin, TestCase):
|
||||||
|
asyncio = asyncio
|
||||||
|
event_loop_policy = greenio.GreenEventLoopPolicy
|
||||||
|
|
||||||
|
if trollius is not None:
|
||||||
|
class TrolliusSocketTests(SocketMixin, TestCase):
|
||||||
|
asyncio = trollius
|
||||||
|
event_loop_policy = greenio.GreenTrolliusEventLoopPolicy
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TrolliusSocketTests, self).setUp()
|
||||||
|
if asyncio is not None:
|
||||||
|
policy = trollius.get_event_loop_policy()
|
||||||
|
asyncio.set_event_loop_policy(policy)
|
||||||
|
@ -11,9 +11,10 @@ import unittest
|
|||||||
|
|
||||||
class TaskTests(unittest.TestCase):
|
class TaskTests(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
asyncio.set_event_loop_policy(greenio.GreenEventLoopPolicy())
|
policy = greenio.GreenEventLoopPolicy()
|
||||||
self.loop = asyncio.new_event_loop()
|
asyncio.set_event_loop_policy(policy)
|
||||||
asyncio.set_event_loop(self.loop)
|
self.loop = policy.new_event_loop()
|
||||||
|
policy.set_event_loop(self.loop)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.loop.close()
|
self.loop.close()
|
||||||
|
@ -20,7 +20,7 @@ class TrolliusTaskTests(TestCase):
|
|||||||
trollius.set_event_loop_policy(policy)
|
trollius.set_event_loop_policy(policy)
|
||||||
if asyncio is not None:
|
if asyncio is not None:
|
||||||
asyncio.set_event_loop_policy(policy)
|
asyncio.set_event_loop_policy(policy)
|
||||||
self.loop = trollius.new_event_loop()
|
self.loop = policy.new_event_loop()
|
||||||
policy.set_event_loop(self.loop)
|
policy.set_event_loop(self.loop)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user