diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-01-21 18:38:52 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-01-21 18:38:52 -0500 |
commit | 8109f791e190dc9c500d7238090db7197220ff58 (patch) | |
tree | f3b8e10bd0a5b1c78164d37251955d8f80be369f /test/test_cache.py | |
parent | 3e6981c9754c6813450c55e1c511a84c9bb6766d (diff) | |
download | mako-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.py | 72 |
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 |