You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
5 years ago
|
from __future__ import absolute_import, print_function
|
||
|
|
||
|
import gevent
|
||
|
import unittest
|
||
|
|
||
|
class TestDestroyHub(unittest.TestCase):
|
||
|
|
||
|
def test_destroy_hub(self):
|
||
|
# Loop of initial Hub is default loop.
|
||
|
hub = gevent.get_hub()
|
||
|
self.assertTrue(hub.loop.default)
|
||
|
|
||
|
# Save `gevent.core.loop` object for later comparison.
|
||
|
initloop = hub.loop
|
||
|
|
||
|
# Increase test complexity via threadpool creation.
|
||
|
# Implicitly creates fork watcher connected to the current event loop.
|
||
|
tp = hub.threadpool
|
||
|
self.assertIsNotNone(tp)
|
||
|
|
||
|
# Destroy hub. Does not destroy libev default loop if not explicitly told to.
|
||
|
hub.destroy()
|
||
|
|
||
|
# Create new hub. Must re-use existing libev default loop.
|
||
|
hub = gevent.get_hub()
|
||
|
self.assertTrue(hub.loop.default)
|
||
|
|
||
|
# Ensure that loop object is identical to the initial one.
|
||
|
self.assertIs(hub.loop, initloop)
|
||
|
|
||
|
# Destroy hub including default loop.
|
||
|
hub.destroy(destroy_loop=True)
|
||
|
|
||
|
# Create new hub and explicitly request creation of a new default loop.
|
||
|
hub = gevent.get_hub(default=True)
|
||
|
self.assertTrue(hub.loop.default)
|
||
|
|
||
|
# `gevent.core.loop` objects as well as libev loop pointers must differ.
|
||
|
self.assertIsNot(hub.loop, initloop)
|
||
|
self.assertIsNot(hub.loop.ptr, initloop.ptr)
|
||
|
self.assertNotEqual(hub.loop.ptr, initloop.ptr)
|
||
|
|
||
|
# Destroy hub including default loop. The default loop regenerates.
|
||
|
hub.destroy(destroy_loop=True)
|
||
|
hub = gevent.get_hub()
|
||
|
self.assertTrue(hub.loop.default)
|
||
|
|
||
|
hub.destroy()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main() # pragma: testrunner-no-combine
|