[Checkins] SVN: lovely.responsecache/trunk/ - added purge testing utilities
Juergen Kartnaller
juergen at kartnaller.at
Thu Sep 11 09:59:56 EDT 2008
Log message for revision 91060:
- added purge testing utilities
Changed:
U lovely.responsecache/trunk/CHANGES.txt
A lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.py
A lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.txt
U lovely.responsecache/trunk/src/lovely/responsecache/tests.py
-=-
Modified: lovely.responsecache/trunk/CHANGES.txt
===================================================================
--- lovely.responsecache/trunk/CHANGES.txt 2008-09-11 12:06:36 UTC (rev 91059)
+++ lovely.responsecache/trunk/CHANGES.txt 2008-09-11 13:59:55 UTC (rev 91060)
@@ -5,6 +5,8 @@
trunk
=====
+ - added purge testing utilities
+
2008/07/17 1.2.0
================
Added: lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.py
===================================================================
--- lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.py (rev 0)
+++ lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.py 2008-09-11 13:59:55 UTC (rev 91060)
@@ -0,0 +1,65 @@
+##############################################################################
+#
+# Copyright (c) 2006-2008 Lovely Systems GmbH. All Rights Reserved.
+#
+# This software is subject to the provisions of the Lovely Visible Source
+# License, Version 1.0 (LVSL). A copy of the LVSL should accompany this
+# distribution.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE
+#
+##############################################################################
+"""
+$Id$
+"""
+__docformat__ = 'restructuredtext'
+
+import re
+
+from zope import component
+
+from zope.testing.loggingsupport import InstalledHandler
+
+from lovely.responsecache.purge import log, PurgeUtil
+from lovely.responsecache.interfaces import IPurge
+
+
+_purgeOriginal = PurgeUtil._purgeURLs.im_func
+
+def _purgeTesting(self, urls):
+ for url in urls:
+ log.info('purged %r', url)
+ return True
+
+REMOVE_LINES = re.compile('lovely.responsecache.purge.*\n')
+
+class PurgeInfo(object):
+
+ def __init__(self, log_info):
+ self.log_info = log_info
+
+ def __call__(self):
+ result = str(self.log_info)
+ self.log_info.clear()
+ return REMOVE_LINES.sub('', result)
+
+
+def setUpPurge(test):
+ PurgeUtil._purgeURLs = _purgeTesting
+
+ log_info = InstalledHandler('lovely.responsecache.purge')
+ test.globs['log_info'] = log_info
+ test.globs['purgeInfo'] = PurgeInfo(log_info)
+
+ purgeUtil = component.getUtility(IPurge)
+ purgeUtil.failLock.acquire()
+ purgeUtil.failedHosts.clear()
+ purgeUtil.failLock.release()
+
+
+def tearDownPurge(test):
+ PurgeUtil._purgeURLs = _purgeOriginal
+
Property changes on: lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.txt
===================================================================
--- lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.txt (rev 0)
+++ lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.txt 2008-09-11 13:59:55 UTC (rev 91060)
@@ -0,0 +1,46 @@
+=======================
+Purge Testing Utilities
+=======================
+
+The module lovely.testing.purge allowes simple logging of purge expressions
+sent from a purge utility.
+
+To activate the purge expression test functionality the setUpPurge and
+tearDownPurge funktions must be used in your test setUp and tearDown
+functions.
+
+After that the function purgeInfo is available in the doc test.
+
+ >>> purgeInfo()
+ ''
+ >>> from zope import component
+ >>> from lovely.responsecache.interfaces import IPurge
+ >>> purger = component.getUtility(IPurge)
+ >>> purger.purge('expression')
+
+We still got no purge info because purging is done on transaction.commit().
+
+ >>> purgeInfo()
+ ''
+
+After a commit we get the purge info.
+
+ >>> import transaction
+ >>> transaction.commit()
+ >>> print purgeInfo()
+ purged 'expression'
+
+A second call to purgeInfo returns nothing because the stored log was deleted.
+
+ >>> purgeInfo()
+ ''
+
+ Multiple purge expressions.
+
+ >>> purger.purge('expr 1')
+ >>> purger.purge('expr 2')
+ >>> transaction.commit()
+ >>> print purgeInfo()
+ purged 'expr 2'
+ purged 'expr 1'
+
Property changes on: lovely.responsecache/trunk/src/lovely/responsecache/testing/purge.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: lovely.responsecache/trunk/src/lovely/responsecache/tests.py
===================================================================
--- lovely.responsecache/trunk/src/lovely/responsecache/tests.py 2008-09-11 12:06:36 UTC (rev 91059)
+++ lovely.responsecache/trunk/src/lovely/responsecache/tests.py 2008-09-11 13:59:55 UTC (rev 91060)
@@ -31,6 +31,10 @@
from zope.testing.loggingsupport import InstalledHandler
+from lovely.responsecache.purge import PurgeUtil
+
+import testing.purge
+
from view import ResponseCacheSettings
@@ -72,6 +76,16 @@
setup.placefulTearDown()
+def purgeSetUp(test):
+ # before we can use the purge test utilities we need to have a purge
+ # utility.
+ component.provideUtility(PurgeUtil(['varnish'], 1, 60)) # , IPurge)
+ testing.purge.setUpPurge(test)
+
+def purgeTearDown(test):
+ testing.purge.tearDownPurge(test)
+
+
def test_suite():
fsuite = functional.FunctionalDocFileSuite('PURGEVIEW.txt')
fsuite.layer=ResponseCacheLayer
@@ -93,6 +107,10 @@
'PURGEDISK.txt', setUp=setUp, tearDown=tearDown,
optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
),
+ DocFileSuite(
+ 'testing/purge.txt', setUp=purgeSetUp, tearDown=purgeTearDown,
+ optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
+ ),
fsuite,
)
More information about the Checkins
mailing list