summaryrefslogtreecommitdiff
path: root/test/test_cache.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-01-21 18:38:52 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2012-01-21 18:38:52 -0500
commit8109f791e190dc9c500d7238090db7197220ff58 (patch)
treef3b8e10bd0a5b1c78164d37251955d8f80be369f /test/test_cache.py
parent3e6981c9754c6813450c55e1c511a84c9bb6766d (diff)
downloadmako-8109f791e190dc9c500d7238090db7197220ff58.tar.gz
- [feature] Added support for Beaker cache regions
in templates. Usage of regions should be considered as superseding the very obsolete idea of passing in backend options, timeouts, etc. within templates. - rewrite the cache docs again which had a lot of misleading/inaccurate info.
Diffstat (limited to 'test/test_cache.py')
-rw-r--r--test/test_cache.py72
1 files changed, 58 insertions, 14 deletions
diff --git a/test/test_cache.py b/test/test_cache.py
index 8240e7b..4ba5d1f 100644
--- a/test/test_cache.py
+++ b/test/test_cache.py
@@ -1,13 +1,14 @@
from mako.template import Template
from mako.lookup import TemplateLookup
from mako import lookup
-import shutil, unittest, os
+import shutil, unittest, os, time
from util import result_lines
from test import TemplateTest, template_base, module_base
from test import eq_
try:
import beaker
+ import beaker.cache
except:
from nose import SkipTest
raise SkipTest("Beaker is required for these tests.")
@@ -15,33 +16,78 @@ except:
from mako.cache import register_plugin, CacheImpl
class MockCacheImpl(CacheImpl):
+ realcacheimpl = None
def __init__(self, cache):
self.cache = cache
- self.realcacheimpl = cache._load_impl("beaker")
+ use_beaker= self.cache.template.cache_args.get('use_beaker', True)
+ if use_beaker:
+ self.realcacheimpl = cache._load_impl("beaker")
def get_or_create(self, key, creation_function, **kw):
self.key = key
self.kwargs = kw.copy()
- return self.realcacheimpl.get_or_create(key, creation_function, **kw)
+ if self.realcacheimpl:
+ return self.realcacheimpl.get_or_create(key, creation_function, **kw)
+ else:
+ return creation_function()
def put(self, key, value, **kw):
self.key = key
self.kwargs = kw.copy()
- self.realcacheimpl.put(key, value, **kw)
+ if self.realcacheimpl:
+ self.realcacheimpl.put(key, value, **kw)
def get(self, key, **kw):
self.key = key
self.kwargs = kw.copy()
- return self.realcacheimpl.get(key, **kw)
+ if self.realcacheimpl:
+ return self.realcacheimpl.get(key, **kw)
def invalidate(self, key, **kw):
self.key = key
self.kwargs = kw.copy()
- self.realcacheimpl.invalidate(key, **kw)
+ if self.realcacheimpl:
+ self.realcacheimpl.invalidate(key, **kw)
register_plugin("mock", __name__, "MockCacheImpl")
+class BeakerCacheTest(TemplateTest):
+ def _regions(self):
+ return beaker.cache.CacheManager(
+ cache_regions = {
+ 'short':{
+ 'expire':1,
+ 'type':'memory'
+ },
+ 'long':{
+ 'expire':60,
+ 'type':'memory'
+ }
+ }
+ )
+
+ def test_region(self):
+ t = Template("""
+ <%block name="foo" cached="True" cache_region="short">
+ short term ${x}
+ </%block>
+ <%block name="bar" cached="True" cache_region="long">
+ long term ${x}
+ </%block>
+ <%block name="lala">
+ none ${x}
+ </%block>
+ """, cache_args={"manager":self._regions()})
+
+ r1 = result_lines(t.render(x=5))
+ time.sleep(2)
+ r2 = result_lines(t.render(x=6))
+ r3 = result_lines(t.render(x=7))
+ eq_(r1, ["short term 5", "long term 5", "none 5"])
+ eq_(r2, ["short term 6", "long term 5", "none 6"])
+ eq_(r3, ["short term 6", "long term 5", "none 7"])
+
class CacheTest(TemplateTest):
def _install_mock_cache(self, template):
template.cache_impl = 'mock'
@@ -387,7 +433,6 @@ class CacheTest(TemplateTest):
</%def>
""")
- import time
x1 = t.render()
time.sleep(3)
x2 = t.render()
@@ -401,7 +446,6 @@ class CacheTest(TemplateTest):
</%def>
""")
- import time
x1 = t.render(x=1)
time.sleep(3)
x2 = t.render(x=2)
@@ -470,26 +514,26 @@ class CacheTest(TemplateTest):
cache_timeout="50" cache_foo="foob">
</%def>
${foo()}
- """)
+ """, cache_args={'use_beaker':False})
m = self._install_mock_cache(t)
t.render()
- eq_(m.kwargs, {'region':'myregion', 'timeout':50, 'foo':'foob'})
+ eq_(m.kwargs, {'use_beaker':False,'region':'myregion', 'timeout':50, 'foo':'foob'})
def test_custom_args_block(self):
t = Template("""
<%block name="foo" cached="True" cache_region="myregion"
cache_timeout="50" cache_foo="foob">
</%block>
- """)
+ """, cache_args={'use_beaker':False})
m = self._install_mock_cache(t)
t.render()
- eq_(m.kwargs, {'region':'myregion', 'timeout':50, 'foo':'foob'})
+ eq_(m.kwargs, {'use_beaker':False, 'region':'myregion', 'timeout':50, 'foo':'foob'})
def test_custom_args_page(self):
t = Template("""
<%page cached="True" cache_region="myregion"
cache_timeout="50" cache_foo="foob"/>
- """)
+ """, cache_args={'use_beaker':False})
m = self._install_mock_cache(t)
t.render()
- eq_(m.kwargs, {'region':'myregion', 'timeout':50, 'foo':'foob'}) \ No newline at end of file
+ eq_(m.kwargs, {'use_beaker':False, 'region':'myregion', 'timeout':50, 'foo':'foob'}) \ No newline at end of file