Skip to content

Commit ea76b3e

Browse files
committed
Add tests for closing poller in b263dde
1 parent fb2fc5b commit ea76b3e

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

supervisor/tests/base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,6 +1169,7 @@ def __str__(self):
11691169
class DummyPoller:
11701170
def __init__(self, options):
11711171
self.result = [], []
1172+
self.closed = False
11721173

11731174
def register_readable(self, fd):
11741175
pass
@@ -1179,6 +1180,9 @@ def register_writable(self, fd):
11791180
def poll(self, timeout):
11801181
return self.result
11811182

1183+
def close(self):
1184+
self.closed = True
1185+
11821186
def dummy_handler(event, result):
11831187
pass
11841188

supervisor/tests/test_options.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from supervisor.tests.base import DummySupervisor
2020
from supervisor.tests.base import DummyLogger
2121
from supervisor.tests.base import DummyOptions
22+
from supervisor.tests.base import DummyPoller
2223
from supervisor.tests.base import DummyPConfig
2324
from supervisor.tests.base import DummyProcess
2425
from supervisor.tests.base import DummySocketConfig
@@ -1371,6 +1372,25 @@ def test_cleanup_pidfile_ignores_oserror_enoent(self):
13711372
instance.pidfile = notfound
13721373
instance.cleanup() # shouldn't raise
13731374

1375+
def test_cleanup_closes_poller(self):
1376+
pidfile = tempfile.mktemp()
1377+
try:
1378+
with open(pidfile, 'w') as f:
1379+
f.write('2')
1380+
instance = self._makeOne()
1381+
instance.pidfile = pidfile
1382+
1383+
poller = DummyPoller({})
1384+
instance.poller = poller
1385+
self.assertFalse(poller.closed)
1386+
instance.cleanup()
1387+
self.assertTrue(poller.closed)
1388+
finally:
1389+
try:
1390+
os.unlink(pidfile)
1391+
except OSError:
1392+
pass
1393+
13741394
def test_cleanup_fds_closes_5_upto_minfds_ignores_oserror(self):
13751395
instance = self._makeOne()
13761396
instance.minfds = 10

supervisor/tests/test_poller.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,15 @@ def test_after_daemonize_restores_kqueue(self):
223223
poller.register_readable.assert_called_with(1)
224224
poller.register_writable.assert_called_with(3)
225225

226+
def test_close_closes_kqueue(self):
227+
mock_kqueue = Mock()
228+
options = DummyOptions()
229+
poller = self._makeOne(options)
230+
poller._kqueue = mock_kqueue
231+
poller.close()
232+
mock_kqueue.close.assert_called_once_with()
233+
self.assertEqual(poller._kqueue, None)
234+
226235
def assertReadEventAdded(self, kevent, fd):
227236
self.assertKevent(kevent, fd, select.KQ_FILTER_READ, select.KQ_EV_ADD)
228237

0 commit comments

Comments
 (0)