You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2010/03/08 19:05:47 UTC

svn commit: r920425 - in /cocoon/cocoon3/trunk: cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/ cocoon-sample/src/main/resources/COB-INF/ cocoon-sample/src/main/resources/COB-INF/sax-pipeline/

Author: reinhard
Date: Mon Mar  8 18:05:47 2010
New Revision: 920425

URL: http://svn.apache.org/viewvc?rev=920425&view=rev
Log:
COCOON3-53
provide a test case for the caching problem (however, the testcase doesn't fail)

Added:
    cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-1.xml   (with props)
    cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-2.xml   (with props)
Modified:
    cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java
    cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap

Modified: cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java?rev=920425&r1=920424&r2=920425&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java Mon Mar  8 18:05:47 2010
@@ -26,17 +26,18 @@
 public class CachingOfPipelinesTest extends CocoonHtmlUnitTestCase {
 
     /**
-     * A non-caching pipeline mustn't produce the same result twice.
+     * Test if different matches in the same <map:pipeline>, produce different results.
      */
-    public void testNonCachingPipeline() throws Exception {
-        this.loadResponse("caching-pipeline/off");
+    public void testCachingOfDifferentPipelines() throws Exception {
+        this.loadResponse("sax-pipeline/simple-1");
         String content1 = this.response.getContentAsString();
         assertNotNull(content1);
 
-        this.loadResponse("caching-pipeline/off");
+        this.loadResponse("sax-pipeline/simple-2");
         String content2 = this.response.getContentAsString();
         assertNotNull(content2);
-        assertFalse("The response has to change with every request.", content1.equals(content2));
+
+        assertFalse(content1.equals(content2));
     }
 
     /**
@@ -59,9 +60,33 @@
     }
 
     /**
-     * This caching pipeline returns the same result for 2 seconds (see the 'expires' parameter in the sitemap). After
-     * 2.1 it produces a different result because the first result generated has become invalid in the meantime and the
-     * refresh is being performed in the same thread.
+     * This async-caching pipeline returns the same result for 2 seconds (see the 'expires'
+     * parameter in the sitemap). After 2.1 seconds it still produces the same result but because
+     * the cache key of this pipeline has changed, a separate thread is started that refreshs the
+     * cache.
+     * 
+     * After waiting for another second, a fresh result is returned.
+     */
+    public void testExpiresAsyncCaching() throws Exception {
+        this.loadResponse("/expires/async-caching-pipeline/on");
+        String content1 = this.response.getContentAsString();
+
+        Thread.sleep(2100);
+        this.loadResponse("/expires/async-caching-pipeline/on");
+        String content2 = this.response.getContentAsString();
+        assertEquals("The response has to be the same as before.", content1, content2);
+
+        Thread.sleep(500);
+        this.loadResponse("/expires/async-caching-pipeline/on");
+        String content3 = this.response.getContentAsString();
+        assertFalse("The response mustn't be the same as before.", content3.equals(content2));
+
+    }
+
+    /**
+     * This caching pipeline returns the same result for 2 seconds (see the 'expires' parameter in
+     * the sitemap). After 2.1 it produces a different result because the first result generated has
+     * become invalid in the meantime and the refresh is being performed in the same thread.
      * 
      * @see {@link #testExpiresAsyncCaching()}
      */
@@ -84,25 +109,16 @@
     }
 
     /**
-     * This async-caching pipeline returns the same result for 2 seconds (see the 'expires' parameter in the sitemap).
-     * After 2.1 seconds it still produces the same result but because the cache key of this pipeline has changed, a
-     * separate thread is started that refreshs the cache.
-     * 
-     * After waiting for another second, a fresh result is returned.
+     * A non-caching pipeline mustn't produce the same result twice.
      */
-    public void testExpiresAsyncCaching() throws Exception {
-        this.loadResponse("/expires/async-caching-pipeline/on");
+    public void testNonCachingPipeline() throws Exception {
+        this.loadResponse("caching-pipeline/off");
         String content1 = this.response.getContentAsString();
+        assertNotNull(content1);
 
-        Thread.sleep(2100);
-        this.loadResponse("/expires/async-caching-pipeline/on");
+        this.loadResponse("caching-pipeline/off");
         String content2 = this.response.getContentAsString();
-        assertEquals("The response has to be the same as before.", content1, content2);
-
-        Thread.sleep(500);
-        this.loadResponse("/expires/async-caching-pipeline/on");
-        String content3 = this.response.getContentAsString();
-        assertFalse("The response mustn't be the same as before.", content3.equals(content2));
-
+        assertNotNull(content2);
+        assertFalse("The response has to change with every request.", content1.equals(content2));
     }
 }

Added: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-1.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-1.xml?rev=920425&view=auto
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-1.xml (added)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-1.xml Mon Mar  8 18:05:47 2010
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<simple>simple-text-1</simple>

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-1.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-1.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-1.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-2.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-2.xml?rev=920425&view=auto
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-2.xml (added)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-2.xml Mon Mar  8 18:05:47 2010
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<simple>simple-text-2</simple>

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-2.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-2.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sax-pipeline/simple-2.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap?rev=920425&r1=920424&r2=920425&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap Mon Mar  8 18:05:47 2010
@@ -47,6 +47,14 @@
         </map:transform>
         <map:serialize />
       </map:match>
+      <map:match equals="sax-pipeline/simple-1">
+        <map:generate src="sax-pipeline/simple-1.xml" />
+        <map:serialize />
+      </map:match>
+      <map:match equals="sax-pipeline/simple-2">
+        <map:generate src="sax-pipeline/simple-2.xml" />
+        <map:serialize />
+      </map:match>
       <map:match pattern="sax-pipeline/simple-xhtml">
         <map:generate src="sax-pipeline/simple.xml" />
         <map:transform src="sax-pipeline/simple.xslt">
@@ -79,7 +87,7 @@
         <map:serialize type="xml" />
       </map:match>
     </map:pipeline>
-    
+
     <map:pipeline type="async-caching" jmx-group-name="async-caching">
       <map:match pattern="async-caching-pipeline/on">
         <map:generate type="timestamp-caching" />
@@ -93,27 +101,27 @@
         <map:serialize type="xml" />
       </map:match>
     </map:pipeline>
-    
+
     <map:pipeline expires="2" expires-cache-key="some-key">
       <map:match pattern="expires/caching-pipeline/on">
         <map:generate type="timestamp-noncaching" />
         <map:serialize type="xml" />
       </map:match>
-    </map:pipeline>    
-    
+    </map:pipeline>
+
     <map:pipeline expires="2">
       <map:match pattern="expires/caching-pipeline/invalid">
         <map:generate type="timestamp-noncaching" />
         <map:serialize type="xml" />
       </map:match>
-    </map:pipeline>    
-    
+    </map:pipeline>
+
     <map:pipeline type="async-caching" expires="2" expires-cache-key="some-other-key">
       <map:match pattern="expires/async-caching-pipeline/on">
         <map:generate type="timestamp-noncaching" />
         <map:serialize type="xml" />
       </map:match>
-    </map:pipeline>    
+    </map:pipeline>
 
     <!-- ~~~~~~~~~~~~~~~~ servlet service framework ~~~~~~~~~~~~~~~ -->
     <map:pipeline jmx-group-name="servlet-service">
@@ -126,14 +134,14 @@
       </map:match>
       <map:match pattern="ssf/service-consumer">
         <map:generate type="service-consumer" />
-        <map:serialize type="xml" />      
+        <map:serialize type="xml" />
       </map:match>
       <map:match pattern="ssf/transformer-pipeline">
         <map:generate type="service-consumer" />
         <map:transform src="sax-pipeline/simple.xslt">
           <map:parameter name="myParam" value="transformer-pipeline" />
         </map:transform>
-        <map:serialize type="xml" />      
+        <map:serialize type="xml" />
       </map:match>
       <map:match pattern="ssf/serializer-pipeline">
         <map:generate type="service-consumer" />
@@ -190,8 +198,8 @@
         </map:match>
       </map:match>
     </map:pipeline>
-    
-    <!-- ~~~~~~~~~~~~~~~~ advanced matching (when/otherwise) ~~~~~~~~~~~~~~~ -->    
+
+    <!-- ~~~~~~~~~~~~~~~~ advanced matching (when/otherwise) ~~~~~~~~~~~~~~~ -->
     <map:pipeline>
       <map:match pattern="advanced-matching">
         <map:select value="{jexl:cocoon.request.myparam}">
@@ -221,7 +229,7 @@
             <map:transform src="sax-pipeline/simple.xslt">
               <map:parameter name="myParam" value="otherwise" />
             </map:transform>
-            <map:serialize />          
+            <map:serialize />
           </map:otherwise>
         </map:select>
       </map:match>
@@ -236,17 +244,17 @@
           <map:otherwise>
             <map:transform src="sax-pipeline/simple.xslt">
               <map:parameter name="myParam" value="otherwise" />
-            </map:transform>          
+            </map:transform>
           </map:otherwise>
         </map:select>
         <map:serialize />
-      </map:match>      
+      </map:match>
       <map:match wildcard="advanced-matching-3">
         <map:generate src="sax-pipeline/simple.xml" />
         <map:match value="{jexl:cocoon.request.myparam}" equals="1">
           <map:transform src="sax-pipeline/simple.xslt">
             <map:parameter name="myParam" value="1" />
-          </map:transform>        
+          </map:transform>
         </map:match>
         <map:match value="{jexl:cocoon.request.yourparam}" equals="2">
           <map:transform src="sax-pipeline/add-paragraph.xslt">
@@ -254,12 +262,12 @@
           </map:transform>
         </map:match>
         <map:serialize />
-      </map:match>      
+      </map:match>
       <map:match wildcard="advanced-matching-4">
         <map:generate src="sax-pipeline/simple.xml" />
         <map:transform src="sax-pipeline/simple.xslt">
           <map:parameter name="myParam" value="1" />
-        </map:transform>            
+        </map:transform>
         <map:match value="{jexl:cocoon.request.param_a}" equals="1">
           <map:select value="{jexl:cocoon.request.param_b}">
             <map:when equals="1">
@@ -270,21 +278,21 @@
                 <map:transform src="sax-pipeline/add-paragraph.xslt">
                   <map:parameter name="text" value="3"/>
                 </map:transform>
-                <map:select value="{jexl:cocoon.request.param_d}">   
-                  <map:when equals="1">                
+                <map:select value="{jexl:cocoon.request.param_d}">
+                  <map:when equals="1">
                     <map:transform src="sax-pipeline/add-paragraph.xslt">
                       <map:parameter name="text" value="4"/>
-                    </map:transform>                
+                    </map:transform>
                   </map:when>
-                </map:select>             
+                </map:select>
               </map:match>
             </map:when>
             <map:otherwise>
               <map:transform src="sax-pipeline/add-paragraph.xslt">
                 <map:parameter name="text" value="5"/>
-              </map:transform>               
+              </map:transform>
             </map:otherwise>
-          </map:select>    
+          </map:select>
         </map:match>
         <map:match value="{jexl:cocoon.request.param_e}" equals="1">
           <map:transform src="sax-pipeline/add-paragraph.xslt">
@@ -296,19 +304,19 @@
           <map:otherwise>
             <map:transform src="sax-pipeline/add-paragraph.xslt">
               <map:parameter name="text" value="7"/>
-            </map:transform>               
+            </map:transform>
           </map:otherwise>
         </map:select>
         <map:select value="{jexl:cocoon.request.param_g}">
           <map:when regexp="(?!1\b)\b.+\b">
             <map:transform src="sax-pipeline/add-paragraph.xslt">
               <map:parameter name="text" value="8"/>
-            </map:transform>             
+            </map:transform>
           </map:when>
         </map:select>
         <map:serialize />
-      </map:match>     
-      
+      </map:match>
+
       <!-- named matcher -->
       <map:match wildcard="named-matcher/{a}" name="m1">
         <map:match value="{jexl:cocoon.request.param_a}" equals="1">
@@ -318,11 +326,11 @@
               <map:parameter name="myParam" value="{map:m1/a}" />
             </map:transform>
             <map:serialize />
-          </map:match>        
+          </map:match>
         </map:match>
       </map:match>
-      
-      <!-- deep relative matcher --> 
+
+      <!-- deep relative matcher -->
       <map:match wildcard="deep-relative-matcher/{a}">
         <map:match value="{jexl:cocoon.request.param_a}" equals="1">
           <map:match value="{jexl:cocoon.request.param_b}" equals="1">
@@ -331,10 +339,10 @@
               <map:parameter name="myParam" value="{map:../../a}" />
             </map:transform>
             <map:serialize />
-          </map:match>        
+          </map:match>
         </map:match>
-      </map:match>      
-    </map:pipeline>    
+      </map:match>
+    </map:pipeline>
 
     <!-- ~~~~~~~~~~~~~~~~ aggregation ~~~~~~~~~~~~~~~ -->
     <map:pipeline>
@@ -363,7 +371,7 @@
     </map:pipeline>
 
     <!-- ~~~~~~~~~~~~~~~~ matcher: parameter passing ~~~~~~~~~~~~~~~ -->
-    <!--  
+    <!--
     <map:pipeline>
       <map:match pattern="parameter-passing/failing">
         <map:match type="parameter-passing">
@@ -441,7 +449,7 @@
         <map:serialize type="xhtml" status-code="501" />
       </map:handle-errors>
     </map:pipeline>
-    
+
     <!-- FOP -->
     <map:pipeline>
       <map:match equals="fop/test.pdf">
@@ -466,37 +474,37 @@
           <map:parameter name="myParam" value="2" />
         </map:transform>
         <map:serialize type="exhtml" doctype-default="strict" />
-      </map:match>    
+      </map:match>
       <map:match equals="serializers/ehtml">
         <map:generate src="sax-pipeline/simple.xml" />
         <map:transform src="sax-pipeline/simple.xslt">
           <map:parameter name="myParam" value="2" />
         </map:transform>
         <map:serialize type="ehtml" encoding="iso-8859-1"/>
-      </map:match>    
+      </map:match>
     </map:pipeline>
-    
+
     <!-- Cocoon Wicket integration -->
     <map:pipeline type="noncaching">
       <map:match wildcard="wicket/**">
         <map:read type="wicket" base-path="/wicket" />
       </map:match>
     </map:pipeline>
- 
+
     <!-- Global error handling -->
     <map:handle-errors>
       <map:select value="{jexl:cocoon.exception.class.name}">
         <map:when contains="NoMatchingPipelineException">
           <map:generate src="error-handling/404.xml" />
-          <map:serialize type="xhtml" status-code="404" />        
+          <map:serialize type="xhtml" status-code="404" />
         </map:when>
         <map:when ends-with="CustomException">
           <map:generate src="error-handling/500.xml" />
           <map:serialize type="xhtml" status-code="500" />
-        </map:when>        
+        </map:when>
         <map:otherwise>
           <map:generate type="exception" />
-          <map:serialize type="xml" status-code="500" />        
+          <map:serialize type="xml" status-code="500" />
         </map:otherwise>
       </map:select>
       <!--