self._accept_futures.clear()
def _stop_serving(self, sock):
- self._stop_accept_futures()
+ future = self._accept_futures.pop(sock.fileno(), None)
+ if future:
+ future.cancel()
self._proactor._stop_serving(sock)
sock.close()
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__':