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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs