bpo-29711: Fix stop_serving in proactor loop kill all listening servers (#431)

This commit is contained in:
Julien Duponchelle 2017-12-19 13:23:17 +01:00 committed by Yury Selivanov
parent 36c2c04478
commit 319c0345cd
3 changed files with 19 additions and 5 deletions

View file

@ -567,10 +567,21 @@ class BaseProactorEventLoopTests(test_utils.TestCase):
self.assertTrue(self.sock.close.called)
def test_stop_serving(self):
sock = mock.Mock()
self.loop._stop_serving(sock)
self.assertTrue(sock.close.called)
self.proactor._stop_serving.assert_called_with(sock)
sock1 = mock.Mock()
future1 = mock.Mock()
sock2 = mock.Mock()
future2 = mock.Mock()
self.loop._accept_futures = {
sock1.fileno(): future1,
sock2.fileno(): future2
}
self.loop._stop_serving(sock1)
self.assertTrue(sock1.close.called)
self.assertTrue(future1.cancel.called)
self.proactor._stop_serving.assert_called_with(sock1)
self.assertFalse(sock2.close.called)
self.assertFalse(future2.cancel.called)
if __name__ == '__main__':