[Python-checkins] cpython (2.7): Issue #16274: backport of 3.2's asyncore/test_asyncore to 2.7.
trent.nelson
python-checkins at python.org
Thu Oct 18 12:08:14 CEST 2012
http://hg.python.org/cpython/rev/90a46f8943d0
changeset: 79813:90a46f8943d0
branch: 2.7
user: Trent Nelson <trent at trent.me>
date: Thu Oct 18 06:08:01 2012 -0400
summary:
Issue #16274: backport of 3.2's asyncore/test_asyncore to 2.7.
This fixes failing tests on Solaris 10.
files:
Lib/asyncore.py | 8 +++++-
Lib/test/test_asyncore.py | 37 ++++++++++++++++++++++----
2 files changed, 38 insertions(+), 7 deletions(-)
diff --git a/Lib/asyncore.py b/Lib/asyncore.py
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -515,7 +515,13 @@
self.log_info('unhandled connect event', 'warning')
def handle_accept(self):
- self.log_info('unhandled accept event', 'warning')
+ pair = self.accept()
+ if pair is not None:
+ self.handle_accepted(*pair)
+
+ def handle_accepted(self, sock, addr):
+ sock.close()
+ self.log_info('unhandled accepted event', 'warning')
def handle_close(self):
self.log_info('unhandled close event', 'warning')
diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py
--- a/Lib/test/test_asyncore.py
+++ b/Lib/test/test_asyncore.py
@@ -296,7 +296,6 @@
d.handle_read()
d.handle_write()
d.handle_connect()
- d.handle_accept()
finally:
sys.stdout = stdout
@@ -304,8 +303,7 @@
expected = ['warning: unhandled incoming priority event',
'warning: unhandled read event',
'warning: unhandled write event',
- 'warning: unhandled connect event',
- 'warning: unhandled accept event']
+ 'warning: unhandled connect event']
self.assertEqual(lines, expected)
def test_issue_8594(self):
@@ -453,6 +451,9 @@
def handle_accept(self):
raise Exception("handle_accept not supposed to be called")
+ def handle_accepted(self):
+ raise Exception("handle_accepted not supposed to be called")
+
def handle_connect(self):
raise Exception("handle_connect not supposed to be called")
@@ -483,8 +484,7 @@
def address(self):
return self.socket.getsockname()[:2]
- def handle_accept(self):
- sock, addr = self.accept()
+ def handle_accepted(self, sock, addr):
self.handler(sock)
def handle_error(self):
@@ -548,6 +548,29 @@
client = BaseClient(server.address)
self.loop_waiting_for_flag(server)
+ def test_handle_accepted(self):
+ # make sure handle_accepted() is called when a client connects
+
+ class TestListener(BaseTestHandler):
+
+ def __init__(self):
+ BaseTestHandler.__init__(self)
+ self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.bind((HOST, 0))
+ self.listen(5)
+ self.address = self.socket.getsockname()[:2]
+
+ def handle_accept(self):
+ asyncore.dispatcher.handle_accept(self)
+
+ def handle_accepted(self, sock, addr):
+ sock.close()
+ self.flag = True
+
+ server = TestListener()
+ client = BaseClient(server.address)
+ self.loop_waiting_for_flag(server)
+
def test_handle_read(self):
# make sure handle_read is called on data received
@@ -671,7 +694,8 @@
s = asyncore.dispatcher()
s.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.assertEqual(s.socket.family, socket.AF_INET)
- self.assertEqual(s.socket.type, socket.SOCK_STREAM)
+ SOCK_NONBLOCK = getattr(socket, 'SOCK_NONBLOCK', 0)
+ self.assertEqual(s.socket.type, socket.SOCK_STREAM | SOCK_NONBLOCK)
def test_bind(self):
s1 = asyncore.dispatcher()
@@ -697,6 +721,7 @@
s = asyncore.dispatcher(socket.socket())
self.assertFalse(s.socket.getsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR))
+ s.socket.close()
s.create_socket(socket.AF_INET, socket.SOCK_STREAM)
s.set_reuse_addr()
self.assertTrue(s.socket.getsockopt(socket.SOL_SOCKET,
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list