[Checkins] SVN: zc.zk/trunk/src/zc/zk/ Updated to take advantage of new content-manager and waiting support
Jim Fulton
jim at zope.com
Sun Jan 29 14:49:20 UTC 2012
Log message for revision 124245:
Updated to take advantage of new content-manager and waiting support
in zope.testing.
Changed:
U zc.zk/trunk/src/zc/zk/disconnectiontests.py
U zc.zk/trunk/src/zc/zk/testing.py
U zc.zk/trunk/src/zc/zk/tests.py
-=-
Modified: zc.zk/trunk/src/zc/zk/disconnectiontests.py
===================================================================
--- zc.zk/trunk/src/zc/zk/disconnectiontests.py 2012-01-29 14:28:09 UTC (rev 124244)
+++ zc.zk/trunk/src/zc/zk/disconnectiontests.py 2012-01-29 14:49:19 UTC (rev 124245)
@@ -19,6 +19,7 @@
# enough to control).
from pprint import pprint
+from zope.testing.wait import wait
import zc.zk
import zookeeper
import zope.testing.loggingsupport
@@ -42,10 +43,10 @@
We'll wait a while while it tries in vane to connect:
- >>> wait_until((lambda : zk is not None), 4)
+ >>> wait((lambda : zk is not None), 4)
Traceback (most recent call last):
...
- AssertionError: timeout
+ TimeOutWaitingFor: <lambda>
>>> print handler # doctest: +ELLIPSIS
zc.zk CRITICAL
@@ -58,7 +59,7 @@
Now, we'll make the connection possible:
>>> ZooKeeper._allow_connection('Invalid')
- >>> wait_until(lambda : zk is not None)
+ >>> wait(lambda : zk is not None)
>>> zk.state == zookeeper.CONNECTED_STATE
True
Modified: zc.zk/trunk/src/zc/zk/testing.py
===================================================================
--- zc.zk/trunk/src/zc/zk/testing.py 2012-01-29 14:28:09 UTC (rev 124244)
+++ zc.zk/trunk/src/zc/zk/testing.py 2012-01-29 14:49:19 UTC (rev 124245)
@@ -19,6 +19,7 @@
It provides setUp and tearDown functions that can be used with
doctests or with regular ```unittest`` tests.
"""
+from zope.testing import setupstack
import json
import mock
import os
@@ -34,6 +35,9 @@
__all__ = ['assert_', 'setUp', 'tearDown', 'testing_with_real_zookeeper']
+def side_effect(mock):
+ return lambda func: setattr(mock, 'side_effect', func)
+
def assert_(cond, mess='', error=True):
"""A simple assertion function.
@@ -47,10 +51,10 @@
print 'assertion failed: ', mess
def wait_until(func=None, timeout=9):
- """Wait until a function returns true.
+ import warnings
+ warnings.warn("wait_until is deprecated. Use zope.testing.wait.wait",
+ DeprecationWarning, 2)
- Raise an AssertionError on timeout.
- """
if func():
return
deadline = time.time()+timeout
@@ -127,8 +131,7 @@
A regular unit test can check the ZooKeeper test attribute.
"""
- globs = getattr(test, 'globs', test.__dict__)
- teardowns = []
+ globs = setupstack.globs(test)
faux_zookeeper = None
real_zk = testing_with_real_zookeeper()
if real_zk:
@@ -137,17 +140,17 @@
setup_tree(tree, real_zk, test_root, True)
orig_init = zookeeper.init
- cm = mock.patch('zookeeper.init')
- m = cm.__enter__()
+
+ @side_effect(
+ setupstack.context_manager(test, mock.patch('zookeeper.init')))
def init(addr, watch=None, session_timeout=1000):
if addr != connection_string:
return orig_init(addr, watch, session_timeout)
else:
return orig_init(real_zk+test_root, watch, session_timeout)
- m.side_effect = init
- teardowns.append(cm.__exit__)
- teardowns.append(lambda : setattr(zc.zk.ZooKeeper, 'test_sleep', 0))
+ setupstack.register(
+ test, lambda : setattr(zc.zk.ZooKeeper, 'test_sleep', 0))
zc.zk.ZooKeeper.test_sleep = .01
time.sleep(float(os.environ.get('TEST_ZOOKEEPER_SLEEP', 0)))
@@ -172,18 +175,15 @@
for name in ZooKeeper.__dict__:
if name[0] == '_':
continue
- cm = mock.patch('zookeeper.'+name)
- m = cm.__enter__()
+ m = setupstack.context_manager(test, mock.patch('zookeeper.'+name))
m.side_effect = getattr(faux_zookeeper, name)
- teardowns.append(cm.__exit__)
if tree:
zk = zc.zk.ZooKeeper(connection_string)
zk.import_tree(tree)
zk.close()
- globs['wait_until'] = wait_until
- globs['zc.zk.testing'] = teardowns
+ globs['wait_until'] = wait_until # BBB
globs['ZooKeeper'] = faux_zookeeper
globs.setdefault('assert_', assert_)
@@ -192,13 +192,11 @@
The single argument is the test case passed to setUp.
"""
- globs = getattr(test, 'globs', test.__dict__)
- for cm in globs['zc.zk.testing']:
- cm()
+ setupstack.tearDown(test)
real_zk = testing_with_real_zookeeper()
if real_zk:
zk = zc.zk.ZooKeeper(real_zk)
- root = globs['/zc.zk.testing.test-root']
+ root = setupstack.globs(test)['/zc.zk.testing.test-root']
if zk.exists(root):
zk.delete_recursive(root)
zk.close()
Modified: zc.zk/trunk/src/zc/zk/tests.py
===================================================================
--- zc.zk/trunk/src/zc/zk/tests.py 2012-01-29 14:28:09 UTC (rev 124244)
+++ zc.zk/trunk/src/zc/zk/tests.py 2012-01-29 14:49:19 UTC (rev 124245)
@@ -12,6 +12,8 @@
#
##############################################################################
from pprint import pprint
+from zope.testing import setupstack
+from zope.testing.wait import wait
import doctest
import json
import logging
@@ -45,10 +47,9 @@
except:
pass
- zc.zk.testing.wait_until(
- lambda : [r for r in handler.records
- if 'environment' in r.getMessage()]
- )
+ wait(lambda : [r for r in handler.records
+ if 'environment' in r.getMessage()]
+ )
handler.clear()
# Test that the filter for the "Exceeded deadline by" noise works.
@@ -56,12 +57,11 @@
os.write(zc.zk._logging_pipe[1],
'2012-01-06 16:45:44,572:43673(0x1004f6000):ZOO_WARN@'
'zookeeper_interest at 1461: Exceeded deadline by 27747ms\n')
- zc.zk.testing.wait_until(
- lambda : [r for r in handler.records
- if ('Exceeded deadline by' in r.getMessage()
- and r.levelno == logging.DEBUG)
- ]
- )
+ wait(lambda : [r for r in handler.records
+ if ('Exceeded deadline by' in r.getMessage()
+ and r.levelno == logging.DEBUG)
+ ]
+ )
self.assert_(not [r for r in handler.records
if ('Exceeded deadline by' in r.getMessage()
@@ -97,7 +97,7 @@
zk = zc.zk.ZooKeeper()
return zk
- zc.zk.testing.wait_until(lambda : init.call_args)
+ wait(lambda : init.call_args)
(zkaddr, self.__session_watcher), kw = init.call_args
self.assertEqual((zkaddr, kw), ('127.0.0.1:2181', {}))
self.__session_watcher(
@@ -1521,10 +1521,9 @@
def setUpREADME(test):
zc.zk.testing.setUp(test)
- cm = mock.patch('socket.getfqdn')
- m = cm.__enter__()
- m.side_effect = lambda : 'server.example.com'
- test.globs['zc.zk.testing'].append(cm.__exit__)
+ @side_effect(setupstack.context_manager(test, mock.patch('socket.getfqdn')))
+ def getfqdn():
+ return 'socket.getfqdn'
checker = zope.testing.renormalizing.RENormalizing([
(re.compile('pid = \d+'), 'pid = 9999'),
More information about the checkins
mailing list