You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by bu...@apache.org on 2005/02/07 07:14:29 UTC

svn commit: r151685 - in jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser: impl/CaptureOutputFeedParserListener.java test/DebugPerformance.java test/TestComments.java

Author: burton
Date: Sun Feb  6 22:14:27 2005
New Revision: 151685

URL: http://svn.apache.org/viewcvs?view=rev&rev=151685
Log:
unit tests for comments RSS and RSS 2.0 comments

Added:
    jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/CaptureOutputFeedParserListener.java
    jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/DebugPerformance.java
    jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestComments.java

Added: jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/CaptureOutputFeedParserListener.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/CaptureOutputFeedParserListener.java?view=auto&rev=151685
==============================================================================
--- jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/CaptureOutputFeedParserListener.java (added)
+++ jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/CaptureOutputFeedParserListener.java Sun Feb  6 22:14:27 2005
@@ -0,0 +1,61 @@
+/*
+ * Copyright 1999,2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.commons.feedparser.impl;
+
+import org.apache.commons.feedparser.*;
+import org.jdom.*;
+
+import java.util.*;
+import java.io.*;
+
+/**
+ * Code which can run a parse but capture the output to a string to verify
+ * certain methods were called via greping the output.  This is ONLY for unit
+ * tests.
+ * 
+ * @author <a href="mailto:burton@apache.org">Kevin A. Burton (burtonator)</a>
+ * @version $Id: DebugFeedParserListener.java 151683 2005-02-07 05:54:38Z burton $
+ */
+public class CaptureOutputFeedParserListener
+    extends DebugFeedParserListener {
+
+    public CaptureOutputFeedParserListener() {
+        super( new CapturePrintStream() );
+    }
+
+    public String toString() {
+
+        CapturePrintStream cps = (CapturePrintStream)out;
+        ByteArrayOutputStream bos = (ByteArrayOutputStream)cps.getOutputStream();
+
+        return bos.toString();
+        
+    }
+    
+}
+
+class CapturePrintStream extends PrintStream {
+
+    public CapturePrintStream() {
+        super( new ByteArrayOutputStream() );
+    }
+
+    public OutputStream getOutputStream() {
+        return out;
+    }
+    
+}
\ No newline at end of file

Added: jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/DebugPerformance.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/DebugPerformance.java?view=auto&rev=151685
==============================================================================
--- jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/DebugPerformance.java (added)
+++ jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/DebugPerformance.java Sun Feb  6 22:14:27 2005
@@ -0,0 +1,161 @@
+/*
+ * Copyright 1999,2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.commons.feedparser.test;
+
+import java.applet.*;
+import java.util.*;
+import java.io.*;
+import java.net.*;
+import java.security.*;
+import java.lang.reflect.*;
+
+import junit.framework.*;
+
+import org.apache.commons.feedparser.*;
+import org.apache.commons.feedparser.impl.*;
+import org.apache.commons.feedparser.network.*;
+
+import javax.xml.parsers.*;
+import org.xml.sax.*;
+import org.xml.sax.helpers.*;
+
+/**
+ *
+ * @author <a href="mailto:burton@peerfear.org">Kevin A. Burton</a>
+ * @version $Id: TestAtom.java 149187 2005-01-30 23:54:29Z burton $
+ */
+public class DebugPerformance {
+
+    static SAXParser parser = null;
+
+    public static void doTestSAX() throws Exception {
+
+        if ( parser == null ) {
+            parser = SAXParserFactory.newInstance().newSAXParser();
+
+            //need to enable SAX2 locals and namespace
+            parser.getXMLReader().setFeature( "http://xml.org/sax/features/namespaces", true );
+        }
+
+         org.apache.commons.feedparser.sax.RSSFeedParser handler =
+              new org.apache.commons.feedparser.sax.RSSFeedParser();
+
+         handler.listener = new DefaultFeedParserListener() {
+
+                 public void onChannel( FeedParserState state,
+                                        String title,
+                                        String link,
+                                        String description ) throws FeedParserException {
+
+//                      System.out.println( "onChannel: title: " + title );
+                    
+                 }
+
+                 public void onItem( FeedParserState state,
+                                     String title,
+                                     String link,
+                                     String description,
+                                     String permalink ) throws FeedParserException {
+
+//                     System.out.println( "onItem: title: " + title );
+                    
+                 }
+
+                 public void onItemEnd() throws FeedParserException {
+
+//                     System.out.println( "onItemEnd");
+
+                 }
+
+             };
+
+        String resource = "file:/home/burton/index.rss";
+        
+        ResourceRequest request = ResourceRequestFactory
+            .getResourceRequest( resource );
+
+        parser.parse( request.getInputStream(), handler );
+
+    }
+
+    public static void doTestDefault() throws Exception {
+
+        FeedParser parser = FeedParserFactory.newFeedParser();
+        FeedParserListener listener = new DefaultFeedParserListener() {};
+
+        String resource = "file:/home/burton/index.rss";
+        
+        ResourceRequest request = ResourceRequestFactory
+            .getResourceRequest( resource );
+        
+        parser.parse( listener,
+                      request.getInputStream(),
+                      resource );
+
+    }
+
+    public static void main( String[] args ) throws Exception {
+
+        DebugPerformance test = new DebugPerformance();
+        
+        //test.testGetWeblogLinkForResource();
+        //test.test1();
+
+        doTestMethod( "doTestSAX", DebugPerformance.class, 100 );
+        doTestMethod( "doTestDefault", DebugPerformance.class, 100 );
+        
+    }
+
+    public static void  doTestMethod( String name, Class clazz, int max ) throws Exception {
+
+        Method method = clazz.getMethod( name, null );
+
+        System.out.println( "Testing method: " + name );
+
+        long duration = 0;
+        
+        for ( int i = 0; i <= max; ++i ) {
+
+            long before = System.currentTimeMillis();
+            
+            method.invoke( null, null );
+
+            if ( i == 0 )
+                continue; //don't measure the first call
+
+            long after = System.currentTimeMillis();
+            duration += after-before;
+            
+        }
+
+        System.out.println( "----------------" );
+        System.out.println( "Total parse count: " + max );
+
+        System.out.println( "Total duration: " + duration + "  milliseconds" );
+
+        float totalAvgDuration = (float)duration / (float)max;
+
+        System.out.println( "Total avg duration: " + totalAvgDuration + "  milliseconds" );
+
+        float totalPerSecond = 1000 / totalAvgDuration;
+
+        System.out.println( "Total per second: " + totalPerSecond );
+
+    }
+
+}
+

Added: jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestComments.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestComments.java?view=auto&rev=151685
==============================================================================
--- jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestComments.java (added)
+++ jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestComments.java Sun Feb  6 22:14:27 2005
@@ -0,0 +1,73 @@
+/*
+ * Copyright 1999,2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.commons.feedparser.test;
+
+import java.applet.*;
+import java.util.*;
+import java.io.*;
+import java.net.*;
+import java.security.*;
+
+import junit.framework.*;
+
+import org.apache.commons.feedparser.*;
+import org.apache.commons.feedparser.impl.*;
+import org.apache.commons.feedparser.network.*;
+
+/**
+ *
+ * @author <a href="mailto:burton@peerfear.org">Kevin A. Burton</a>
+ * @version $Id: TestAtom.java 149187 2005-01-30 23:54:29Z burton $
+ */
+public class TestComments extends TestCase {
+
+    public TestComments( String name ) throws Exception {
+        super( name );
+    }
+
+    public void test1() throws Exception {
+
+        String resource = "file:tests/feeds/wordpress-comments.rss";
+        
+        FeedParser parser = FeedParserFactory.newFeedParser();
+
+        FeedParserListener listener = new CaptureOutputFeedParserListener();
+        
+        ResourceRequest request = ResourceRequestFactory.getResourceRequest( resource );
+        
+        parser.parse( listener, request.getInputStream(), resource );
+
+        String output = listener.toString();
+
+        if ( output.indexOf( "onComments: " ) == -1 )
+            throw new Exception();
+
+        if ( output.indexOf( "onCommentsFeed: " ) == -1 )
+            throw new Exception();
+
+    }
+
+    public static void main( String[] args ) throws Exception {
+
+        TestComments test = new TestComments( null );
+        
+        //test.testGetWeblogLinkForResource();
+        test.test1();
+
+    }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org