[Checkins] SVN: zc.ngi/branches/jim-dev/src/zc/ngi/tests.py Added missing test
Jim Fulton
jim at zope.com
Fri Jun 11 17:08:22 EDT 2010
Log message for revision 113369:
Added missing test
Changed:
U zc.ngi/branches/jim-dev/src/zc/ngi/tests.py
-=-
Modified: zc.ngi/branches/jim-dev/src/zc/ngi/tests.py
===================================================================
--- zc.ngi/branches/jim-dev/src/zc/ngi/tests.py 2010-06-11 18:49:18 UTC (rev 113368)
+++ zc.ngi/branches/jim-dev/src/zc/ngi/tests.py 2010-06-11 21:08:22 UTC (rev 113369)
@@ -16,11 +16,15 @@
$Id$
"""
from zope.testing import doctest
+import logging
import manuel.capture
import manuel.doctest
import manuel.testing
-import threading, unittest
+import sys
+import threading
+import unittest
import zc.ngi.async
+import zc.ngi.generator
import zc.ngi.testing
import zc.ngi.wordcount
@@ -127,10 +131,61 @@
True
>>> s.close()
+ """
+def async_error_in_client_when_conection_is_closed():
+ """
+If a connection is closed, we need to make sure write calls generate errors.
+ >>> logger = logging.getLogger('zc.ngi')
+ >>> log_handler = logging.StreamHandler(sys.stdout)
+ >>> logger.addHandler(log_handler)
+ >>> logger.setLevel(logging.WARNING)
+ >>> server_event = threading.Event()
+ >>> @zc.ngi.generator.handler
+ ... def server(conn):
+ ... data = yield
+ ... print data
+ ... server_event.set()
+ >>> listener = zc.ngi.async.listener(None, server)
+
+ >>> class Connector:
+ ... def __init__(self):
+ ... self.event = threading.Event()
+ ... def connected(self, conn):
+ ... self.conn = conn
+ ... self.event.set()
+
+ >>> connector = Connector()
+ >>> zc.ngi.async.connect(listener.address, connector)
+ >>> connector.event.wait(1)
+
+OK, we've connected. If we close the connection, we won't be able to write:
+
+ >>> connector.conn.close()
+ >>> connector.conn.write('xxx')
+
+ >>> connector.conn.writelines(['xxx', 'yyy'])
+
+Similarly if the server closes the connection:
+
+ >>> connector = Connector()
+ >>> zc.ngi.async.connect(listener.address, connector)
+ >>> connector.event.wait(1)
+
+ >>> connector.conn.write('aaa'); server_event.wait(1)
+ aaa
+
+ >>> connector.conn.write('xxx')
+
+ >>> connector.conn.writelines(['xxx', 'yyy'])
+
+
+ >>> logger.removeHandler(log_handler)
+ >>> logger.setLevel(logging.NOTSET)
+
"""
class BrokenConnect:
More information about the checkins
mailing list