[Checkins] SVN: Sandbox/J1m/resumelb/src/zc/resumelb/worker.test Added missing worker-reconnection tests.
Jim Fulton
jim at zope.com
Wed Nov 9 10:29:50 UTC 2011
Log message for revision 123323:
Added missing worker-reconnection tests.
Changed:
U Sandbox/J1m/resumelb/src/zc/resumelb/worker.test
-=-
Modified: Sandbox/J1m/resumelb/src/zc/resumelb/worker.test
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/worker.test 2011-11-09 09:15:33 UTC (rev 123322)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/worker.test 2011-11-09 10:29:50 UTC (rev 123323)
@@ -11,6 +11,7 @@
>>> server = gevent.server.StreamServer(('127.0.0.1', 0), handle)
>>> server.start()
+ >>> server_port = server.server_port
Now, we can start a worker:
@@ -18,7 +19,7 @@
>>> worker = gevent.spawn(
... zc.resumelb.worker.Worker,
... zc.resumelb.tests.app(),
- ... ('127.0.0.1', server.server_port),
+ ... ('127.0.0.1', server_port),
... history=5)
Here we created a worker using a test application, telling it to
@@ -59,7 +60,7 @@
The newenv helper:
-- Creates a request enviton
+- Creates a request environ
- without input or error streams
- with a passed request class. The request class is needed for the resume.
@@ -190,14 +191,9 @@
The next message we recieve will be the new resume:
>>> zero, resume = read_message(worker_socket)
- >>> zero == zero
- True
- >>> resume.keys()
- ['', '1', '2']
+ >>> zero, resume.keys(), [x for x in resume.values() if type(x) != float]
+ (0, ['', '1', '2'], [])
- >>> [x for x in resume.values() if type(x) != float]
- []
-
>>> resume[''] > 10, resume['1'] > 10, resume['2'] < 10
(True, True, True)
@@ -221,5 +217,35 @@
<BLANKLINE>
1200000
+Reconnection
+============
-XXX Need disconnect/connect test
+If a worker is disconnected, it will automatically reconnect:
+
+ >>> worker_socket_result = gevent.event.AsyncResult()
+ >>> worker_socket.close()
+ >>> worker_socket = worker_socket_result.get()
+
+and send it's resume:
+
+ >>> zero, resume = read_message(worker_socket)
+ >>> zero, resume.keys(), [x for x in resume.values() if type(x) != float]
+ (0, ['', '1', '2'], [])
+ >>> resume[''] > 10, resume['1'] > 10, resume['2'] < 10
+ (True, True, True)
+
+We can even stop the server for a while, and the worker will
+reconnect:
+
+ >>> server.stop()
+ >>> worker_socket.close()
+ >>> gevent.sleep(3)
+ >>> worker_socket_result = gevent.event.AsyncResult()
+ >>> server = gevent.server.StreamServer(('127.0.0.1', server_port), handle)
+ >>> server.start()
+ >>> worker_socket = worker_socket_result.get()
+ >>> zero, resume = read_message(worker_socket)
+ >>> zero, resume.keys(), [x for x in resume.values() if type(x) != float]
+ (0, ['', '1', '2'], [])
+ >>> resume[''] > 10, resume['1'] > 10, resume['2'] < 10
+ (True, True, True)
More information about the checkins
mailing list