Update of /var/cvs/applications/vpro-wizards/tests/org/mmbase/applications/vprowizards/spring/cache In directory james.mmbase.org:/tmp/cvs-serv2827/applications/vpro-wizards/tests/org/mmbase/applications/vprowizards/spring/cache
Modified Files: applicationContext.xml OSCacheHandlerInterceptorIntegrationTest.java TokenizerCacheNameResolverTest.java Added Files: OSCacheHandlerInterceptorSupport.java OSCachehandlerSpringConfigTest.java Log Message: tests are finished See also: http://cvs.mmbase.org/viewcvs/applications/vpro-wizards/tests/org/mmbase/applications/vprowizards/spring/cache OSCacheHandlerInterceptorSupport.java is new OSCachehandlerSpringConfigTest.java is new Index: applicationContext.xml =================================================================== RCS file: /var/cvs/applications/vpro-wizards/tests/org/mmbase/applications/vprowizards/spring/cache/applicationContext.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- applicationContext.xml 6 Dec 2008 17:58:47 -0000 1.2 +++ applicationContext.xml 10 Dec 2008 15:44:18 -0000 1.3 @@ -6,10 +6,17 @@ interceptor </description> + <bean id="tokenizerCacheNameResolverFactory" class="org.mmbase.applications.vprowizards.spring.util.ClassInstanceFactory"> + <property name="className" value="org.mmbase.applications.vprowizards.spring.cache.TokenizerCacheNameResolver"/> + </bean> + + <bean id="dummyCacheWrapper" + class="org.mmbase.applications.vprowizards.spring.cache.DummyCacheWrapper" /> <bean id="handlerInterceptor" class="org.mmbase.applications.vprowizards.spring.cache.BasicCacheHandlerInterceptor"> <property name="cacheWrapper" ref="dummyCacheWrapper" /> + <property name="cacheNameResolverFactory" ref="tokenizerCacheNameResolverFactory"/> <property name="modifiers"> <list> <bean @@ -17,15 +24,10 @@ <property name="prefix" value="pre_" /> <property name="suffix" value="_suf" /> </bean> + <bean class="org.mmbase.applications.vprowizards.spring.cache.modifiers.TemplateCleanerModifier"/> </list> </property> - <property name="cacheNameResolverFactory"> - <bean class="org.mmbase.applications.vprowizards.spring.util.ClassInstanceFactory"> - <property name="className" value="org.mmbase.applications.vprowizards.spring.cache.TokenizerCacheNameResolver"/> - </bean> - </property> </bean> - <bean id="dummyCacheWrapper" - class="org.mmbase.applications.vprowizards.spring.cache.DummyCacheWrapper" /> + </beans> \ No newline at end of file Index: OSCacheHandlerInterceptorIntegrationTest.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/tests/org/mmbase/applications/vprowizards/spring/cache/OSCacheHandlerInterceptorIntegrationTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- OSCacheHandlerInterceptorIntegrationTest.java 8 Dec 2008 19:37:08 -0000 1.1 +++ OSCacheHandlerInterceptorIntegrationTest.java 10 Dec 2008 15:44:18 -0000 1.2 @@ -1,29 +1,208 @@ package org.mmbase.applications.vprowizards.spring.cache; -import junit.framework.TestCase; +import static org.easymock.EasyMock.*; + -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import junit.framework.TestCase; -public class OSCacheHandlerInterceptorIntegrationTest extends TestCase { +import org.mmbase.applications.vprowizards.spring.util.ClassInstanceFactory; - private ApplicationContext context; +public class OSCacheHandlerInterceptorIntegrationTest extends OSCacheHandlerInterceptorSupport { @Override - protected void setUp() throws Exception { - context = new ClassPathXmlApplicationContext("org/mmbase/applications/vprowizards/spring/cache/applicationContext.xml"); + protected void setUp() { + cacheNameResolverFactory = new ClassInstanceFactory<CacheNameResolver>(); + cacheNameResolverFactory.setClass(TokenizerCacheNameResolver.class); + cacheWrapper = new DummyCacheWrapper(); + + osCacheHandlerInterceptor = new BasicCacheHandlerInterceptor(); + osCacheHandlerInterceptor.setCacheNameResolverFactory(cacheNameResolverFactory); + osCacheHandlerInterceptor.setCacheWrapper(cacheWrapper); + } + + public void test_no_flush_param_does_nothing(){ + setUpRequest(createList(createCacheFlushHintTypeNode()), ""); + handleRequest(); + + assertAmountOfCacheFlushes(0); + } + + public void test_no_cacheflush_hint_dous_nothing(){ + setUpRequest(null, "node:user"); + handleRequest(); + assertAmountOfCacheFlushes(0); + } + + public void test_single_hint_with_matching_template_couses_flush(){ + setUpRequest(createList(createCacheFlushHintTypeNode()), "node:user"); + handleRequest(); + assertAmountOfCacheFlushes(1); + assertCacheHasBeenFlushed("user"); + + setUp(); + setUpRequest(createList(createCacheFlushHintTypeRelation()), "relation:user"); + handleRequest(); + assertAmountOfCacheFlushes(1); + assertCacheHasBeenFlushed("user"); + + setUp(); + setUpRequest(createList(createCacheFlushHintTypeRequest()), "request:user"); + handleRequest(); + assertAmountOfCacheFlushes(1); + assertCacheHasBeenFlushed("user"); + } + + public void test_single_hint_with_template_for_different_hint_type_dous_nothing(){ + setUpRequest(createList(createCacheFlushHintTypeNode()), "relation:user"); + handleRequest(); + assertAmountOfCacheFlushes(0); + + setUp(); + setUpRequest(createList(createCacheFlushHintTypeRelation()), "node:user"); + handleRequest(); + assertAmountOfCacheFlushes(0); + + setUp(); + setUpRequest(createList(createCacheFlushHintTypeRequest()), "node:user"); + handleRequest(); + assertAmountOfCacheFlushes(0); } - public void test_application_context(){ - assertNotNull(context.getBean("handlerInterceptor")); - assertNotNull(context.getBean("dummyCacheWrapper")); - BasicCacheHandlerInterceptor handlerInterceptor = (BasicCacheHandlerInterceptor) context.getBean("handlerInterceptor"); - assertNotNull(handlerInterceptor.getCacheNameResolverFactory()); + public void test_single_hint_with_multiple_matching_templates_for_different_hint_type_dous_nothing(){ + setUpRequest(createList(createCacheFlushHintTypeNode()), "relation:user,disco"); + handleRequest(); + assertAmountOfCacheFlushes(0); + + setUp(); + setUpRequest(createList(createCacheFlushHintTypeRelation()), "request:user,disco"); + handleRequest(); + assertAmountOfCacheFlushes(0); + + setUp(); + setUpRequest(createList(createCacheFlushHintTypeRequest()), "node:user,disco"); + handleRequest(); + assertAmountOfCacheFlushes(0); + } - assertTrue(DummyCacheWrapper.class.isInstance(handlerInterceptor.getCacheWrapper())); - assertEquals(TokenizerCacheNameResolver.class, handlerInterceptor.getCacheNameResolverFactory().getClazz()); + public void test_single_hint_with_multiple_matching_templates_couses_flush(){ + setUpRequest( + createList(createCacheFlushHintTypeNode()), + "node:user,disco"); + handleRequest(); + assertAmountOfCacheFlushes(2); + assertCacheHasBeenFlushed("user"); + assertCacheHasBeenFlushed("disco"); + + setUp(); + setUpRequest( + createList(createCacheFlushHintTypeRelation()), + "relation:user,disco"); + handleRequest(); + assertAmountOfCacheFlushes(2); + assertCacheHasBeenFlushed("user"); + assertCacheHasBeenFlushed("disco"); + + setUp(); + setUpRequest( + createList(createCacheFlushHintTypeRequest()), + "request:user,disco"); + handleRequest(); + assertAmountOfCacheFlushes(2); + assertCacheHasBeenFlushed("user"); + assertCacheHasBeenFlushed("disco"); } - public void test_some_more(){ + + public void test_multiple_matching_hints(){ + setUpRequest( + createList(createCacheFlushHintTypeNode(), + createCacheFlushHintTypeRelation(), + createCacheFlushHintTypeRequest()), + "node:user relation:disco,something request:global"); + handleRequest(); + assertAmountOfCacheFlushes(4); + assertCacheHasBeenFlushed("user"); + assertCacheHasBeenFlushed("disco"); + assertCacheHasBeenFlushed("something"); + assertCacheHasBeenFlushed("global"); } + public void test_mix_of_matching_and_nonmatching_hints(){ + setUpRequest( + createList(createCacheFlushHintTypeNode(), + createCacheFlushHintTypeRequest()), + "node:user relation:disco,something request:global"); + handleRequest(); + assertAmountOfCacheFlushes(2); + assertCacheHasBeenFlushed("user"); + assertCacheHasBeenFlushed("global"); + } + + public void test_unsupported_namespace_dous_nothing(){ + setUpRequest( + createList(createCacheFlushHintTypeNode()), + "unsupportednamespace:user"); + handleRequest(); + assertAmountOfCacheFlushes(0); + } + + public void test_with_prefix_suffix_modifier(){ + setUpRequest( + createList(createCacheFlushHintTypeNode(), + createCacheFlushHintTypeRelation(), + createCacheFlushHintTypeRequest()), + "node:user relation:disco,something request:global"); + addPrefixSuffixModifier("p_", "_s"); + handleRequest(); + assertAmountOfCacheFlushes(4); + assertCacheHasBeenFlushed("p_user_s"); + assertCacheHasBeenFlushed("p_disco_s"); + assertCacheHasBeenFlushed("p_something_s"); + assertCacheHasBeenFlushed("p_global_s"); + } + + + public void test_with_template_cleaner_modifier_and_simple_template(){ + setUpRequest(createList(createCacheFlushHintTypeNode()), "node:user_[users:90]"); + addTemplateRemover(); + handleRequest(); + assertAmountOfCacheFlushes(1); + assertCacheHasBeenFlushed("user_90"); + } + + public void test_with_template_cleaner_modifier_and_query_template(){ + setUpRequest(createList(createCacheFlushHintTypeNode()), "node:user_[users.disco.nogwat:90]"); + addTemplateRemover(); + handleRequest(); + assertAmountOfCacheFlushes(1); + assertCacheHasBeenFlushed("user_90"); + } + + public void test_with_template_cleaner_modifier_and_multi_template(){ + setUpRequest(createList(createCacheFlushHintTypeNode()), + "node:user_[users.disco.nogwat:90]and[something:80]"); + addTemplateRemover(); + handleRequest(); + assertAmountOfCacheFlushes(1); + assertCacheHasBeenFlushed("user_90and80"); + } + + public void test_with_template_cleaner_modifier_and_simple_template_without_number(){ + setUpRequest(createList(createCacheFlushHintTypeNode()), "node:user_[users]"); + addTemplateRemover(); + handleRequest(); + assertAmountOfCacheFlushes(1); + assertCacheHasBeenFlushed("user_"); + } + + public void test_with_both_prefixsuffix_and_template_cleaner(){ + setUpRequest(createList(createCacheFlushHintTypeNode()), "node:user_[users:100]"); + addTemplateRemover(); + addPrefixSuffixModifier("p_", "_s"); + handleRequest(); + assertAmountOfCacheFlushes(1); + assertCacheHasBeenFlushed("p_user_100_s"); + } } Index: TokenizerCacheNameResolverTest.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/tests/org/mmbase/applications/vprowizards/spring/cache/TokenizerCacheNameResolverTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -b -r1.3 -r1.4 --- TokenizerCacheNameResolverTest.java 8 Dec 2008 19:37:08 -0000 1.3 +++ TokenizerCacheNameResolverTest.java 10 Dec 2008 15:44:18 -0000 1.4 @@ -34,15 +34,15 @@ tcnr.setInput("drie:hallo vier:noop,noppes"); List<String> l = tcnr.getNames("drie"); assertEquals(1, l.size()); - assertNotNull(l.contains("hallo")); + assertTrue(l.contains("hallo")); } public void test_values_with_matching_namespace_should_be_returned() { tcnr.setInput("drie:hallo vier:noop,noppes"); List<String> l = tcnr.getNames("vier"); assertEquals(2, l.size()); - assertNotNull(l.contains("noop")); - assertNotNull(l.contains("noppes")); + assertTrue(l.contains("noop")); + assertTrue(l.contains("noppes")); l = tcnr.getNames("drie"); assertEquals(1, l.size()); @@ -52,27 +52,27 @@ tcnr.setInput("foo drie:hallo vier:noop,noppes"); List<String> l = tcnr.getNames("drie"); assertEquals(2, l.size()); - assertNotNull(l.contains("foo")); - assertNotNull(l.contains("hallo")); + assertTrue(l.contains("foo")); + assertTrue(l.contains("hallo")); } public void test_global_values_and_values_with_matching_namespace_should_be_returned() { tcnr.setInput("foo,bar,again drie:hallo vier:noop,noppes"); List<String> l = tcnr.getNames("drie"); assertEquals(4, l.size()); - assertNotNull(l.contains("foo")); - assertNotNull(l.contains("bar")); - assertNotNull(l.contains("again")); - assertNotNull(l.contains("hallo")); + assertTrue(l.contains("foo")); + assertTrue(l.contains("bar")); + assertTrue(l.contains("again")); + assertTrue(l.contains("hallo")); } public void test_just_global_values() { tcnr.setInput("foo,bar,again vier:noop,noppes"); List<String> l = tcnr.getNames("drie"); assertEquals(3, l.size()); - assertNotNull(l.contains("foo")); - assertNotNull(l.contains("bar")); - assertNotNull(l.contains("again")); + assertTrue(l.contains("foo")); + assertTrue(l.contains("bar")); + assertTrue(l.contains("again")); } @@ -80,23 +80,31 @@ tcnr.setInput("vier:noop[test],noppes"); List<String> l = tcnr.getNames("vier"); assertEquals(2, l.size()); - assertNotNull(l.contains("noop[test]")); - assertNotNull(l.contains("noppes")); + assertTrue(l.contains("noop[test]")); + assertTrue(l.contains("noppes")); } - public void test_template_with_nodenr(){ + public void test_template_with_simple_template(){ tcnr.setInput("vier:noop[test:4576],noppes[jaja]"); List<String> l = tcnr.getNames("vier"); assertEquals(2, l.size()); - assertNotNull(l.contains("noop[test:4576]")); - assertNotNull(l.contains("noppes[jaja]")); + assertTrue(l.contains("noop[test:4576]")); + assertTrue(l.contains("noppes[jaja]")); } - public void test_templates_with_paht(){ + public void test_templates_with_query_template(){ tcnr.setInput("vier:noop[test.disco.nogwat:4576]"); List<String> l = tcnr.getNames("vier"); assertEquals(1, l.size()); - assertNotNull(l.contains("noop[test.disco.nogwat:4576]")); + assertTrue(l.contains("noop[test.disco.nogwat:4576]")); + } + + public void test_templates_with_multi_template(){ + tcnr.setInput("vier:noop[test.disco.nogwat:4576]en[een:89],twee"); + List<String> l = tcnr.getNames("vier"); + assertEquals(2, l.size()); + assertTrue(l.contains("noop[test.disco.nogwat:4576]en[een:89]")); + assertTrue(l.contains("twee")); } public void test_tokenizer_resets_with_new_input(){ _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs