Re: [feedparser] Security patch
On 10/10/06, Nick Lothian <[EMAIL PROTECTED]> wrote: Hi, I'm a developer on the ROME RSS/Atom parser project (http://rome.dev.java.net/). We were recently notified of a possible security issue in our code (http://www.somebits.com/weblog/tech/bad/xmlCode.html), which we've fixed. I'm aware that FeedParser is a dormant project, but the attached patch will fix the same problem in the Apache-Commons project version. FeedParser def isn't dormant http://code.tailrank.com/feedparser I just haven't officially announced that I'm moving it out of Apache. Just been to busy with official work to be a good maintainer :-/ I've also attached updated FeedParserImpl.java suitable for using with Kevin's TailRank version (http://tailrank.com/code.php) (Hi Kevin!) Sweet. SAXBuilder.java is needed for both versions. There is also an example RSS file which triggers the bug. (You'll need some kind of monitoring tool to check for connections to example.com on port 80). Hopefully someone will find these useful. Interesting.. I'll take a look. Thanks. Kevin -- Founder/CEO Tailrank.com Location: San Francisco, CA AIM/YIM: sfburtonator Skype: burtonator Blog: feedblog.org Cell: 415-637-8078
svn commit: r159217 - in jakarta/commons/proper/feedparser/trunk: build.xml src/java/org/apache/commons/feedparser/locate/ResourceExpander.java src/java/org/apache/commons/feedparser/locate/blogservice/BlogService.java src/java/org/apache/commons/feedparser/network/ResourceRequestFactory.java
Author: burton Date: Sun Mar 27 15:47:14 2005 New Revision: 159217 URL: http://svn.apache.org/viewcvs?view=rev&rev=159217 Log: Full javadoc cleanup... Modified: jakarta/commons/proper/feedparser/trunk/build.xml jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/blogservice/BlogService.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequestFactory.java Modified: jakarta/commons/proper/feedparser/trunk/build.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/build.xml?view=diff&r1=159216&r2=159217 == --- jakarta/commons/proper/feedparser/trunk/build.xml (original) +++ jakarta/commons/proper/feedparser/trunk/build.xml Sun Mar 27 15:47:14 2005 @@ -170,13 +170,17 @@ + + Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java?view=diff&r1=159216&r2=159217 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java Sun Mar 27 15:47:14 2005 @@ -180,8 +180,8 @@ } /** - * Determines if the given resource has a scheme (i.e. does it start - * with "http://foo.com"; or does it just have "foo.com"). + * Determines if the given resource has a scheme. (i.e. does it start with + * "http://foo.com"; or does it just have "foo.com"). */ public static boolean hasScheme( String resource ) { return schemePattern.matcher( resource ).matches(); Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/blogservice/BlogService.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/blogservice/BlogService.java?view=diff&r1=159216&r2=159217 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/blogservice/BlogService.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/blogservice/BlogService.java Sun Mar 27 15:47:14 2005 @@ -196,9 +196,11 @@ return (resource.indexOf(domain) != -1); } -/** Determines if the given content was generated by the given generator - * (i.e. this document contains a meta tag with name="generator" and - * content equal to the generatorType). +/** + * Determines if the given content was generated by the given generator. + + * Example. This document contains a meta tag with name="generator" and + * content equal to the generatorType). */ protected boolean hasGenerator(String content, String generatorType) { if (content == null) { Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequestFactory.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequestFactory.java?view=diff&r1=159216&r2=159217 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequestFactory.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequestFactory.java Sun Mar 27 15:47:14 2005 @@ -152,7 +152,7 @@ /** * - * @see getResourceRequest( String ) + * @see #getResourceRequest( String ) * */ public static ResourceRequest getResourceRequest( String resource ) throws NetworkException { @@ -161,7 +161,7 @@ /** * - * @see getResourceRequest( String ) + * @see #getResourceRequest( String ) * */ public static ResourceRequest getResourceRequest( URL resource ) throws NetworkException { - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r159216 - jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BlockingResourceRequest.java
Author: burton Date: Sun Mar 27 15:37:28 2005 New Revision: 159216 URL: http://svn.apache.org/viewcvs?view=rev&rev=159216 Log: removed more @authors and cleanup Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BlockingResourceRequest.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BlockingResourceRequest.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BlockingResourceRequest.java?view=diff&r1=159215&r2=159216 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BlockingResourceRequest.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BlockingResourceRequest.java Sun Mar 27 15:37:28 2005 @@ -21,6 +21,9 @@ import java.util.*; /** + * + * A blocking request that waits for a specified or random amount of time. + * * SCHEME - block://localhost/?duration=100 * * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r159215 - in jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser: ContentDetector.java FeedFilter.java FeedVersion.java MetaFeedParserListener.java locate/EntityDecoder.java locate/ProbeLocator.java test/BaseTestCase.java test/TestBrokenFeeds.java
Author: burton Date: Sun Mar 27 15:36:16 2005 New Revision: 159215 URL: http://svn.apache.org/viewcvs?view=rev&rev=159215 Log: removed more @authors Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentDetector.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedVersion.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/MetaFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/EntityDecoder.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/BaseTestCase.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestBrokenFeeds.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentDetector.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentDetector.java?view=diff&r1=159214&r2=159215 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentDetector.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentDetector.java Sun Mar 27 15:36:16 2005 @@ -32,7 +32,7 @@ * cheat because really we have no way of telling if this is RSS other than if * it is XML and it starts with an RSS 1.0, 2.0, 0.91 or 0.9 decl * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static ContentDetectorResult detect( String content ) throws Exception { @@ -56,7 +56,7 @@ /** * Return true if this is RSS 1.0 content * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static boolean isRSS_1_0_Content( String content ) throws Exception { @@ -70,7 +70,7 @@ /** * Return true if this is RSS 2.0 content * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static boolean isRSS_0_9_1_Content( String content ) throws Exception { @@ -82,7 +82,7 @@ /** * Return true if this is RSS 0.9.2 content * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static boolean isRSS_0_9_2_Content( String content ) throws Exception { @@ -94,7 +94,7 @@ /** * Return true if this is RSS 2.0 content * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static boolean isRSS_2_0_Content( String content ) throws Exception { @@ -105,7 +105,7 @@ /** * Return true if this is RSS 2.0 content * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static boolean isRSS_0_9_0_Content( String content ) throws Exception { @@ -123,7 +123,7 @@ /** * Return true if this is RSS 2.0 content * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static boolean isHTMLContent( String content ) throws Exception { Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java?view=diff&r1=159214&r2=159215 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java Sun Mar 27 15:36:16 2005 @@ -44,7 +44,7 @@ * think because assuming a content type is bad form. * * @deprecated Specify an encoding with #parse( bytes[], encoding ) - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static byte[] parse( byte[] bytes ) throws Exception { @@ -67,7 +67,7 @@ * * http://wiki.apache.org/jakarta-commons/FeedParser_2fStringAllocationConsideredHelpful * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static byte[] parse( String content, String encoding ) throws Exception { Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedVersion.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedVersion.java?view=diff&r1=159214&r2=159215
svn commit: r159214 - in jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser: locate/ResourceExpander.java network/BaseResourceRequest.java tools/XMLEncodingParser.java
Author: burton Date: Sun Mar 27 15:33:51 2005 New Revision: 159214 URL: http://svn.apache.org/viewcvs?view=rev&rev=159214 Log: removed more @authors Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BaseResourceRequest.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/tools/XMLEncodingParser.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java?view=diff&r1=159213&r2=159214 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java Sun Mar 27 15:33:51 2005 @@ -57,7 +57,7 @@ * @param link The link to possibly expand, such as "/index.rdf" or * "http://www.somehost.com/somepage.html";. * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static String expand( String resource, String link ) { @@ -161,7 +161,7 @@ /** * Return true if this is an valid scheme and should be expanded. * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static boolean isValidScheme( String resource ) { if (hasScheme(resource) == false) @@ -199,7 +199,7 @@ * * for file: URLs we return file:// * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static String getSite( String resource ) { @@ -261,7 +261,7 @@ * http://www.foo.com/directory * * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static String getBase( String resource ) { Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BaseResourceRequest.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BaseResourceRequest.java?view=diff&r1=159213&r2=159214 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BaseResourceRequest.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BaseResourceRequest.java Sun Mar 27 15:33:51 2005 @@ -79,7 +79,7 @@ /** * Fire a new ArchiveEvent * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public void fireDataEvent( long count ) { @@ -108,7 +108,7 @@ /** * Fire a new ArchiveEvent * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public void fireDataEvent( DataEvent event ) { Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/tools/XMLEncodingParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/tools/XMLEncodingParser.java?view=diff&r1=159213&r2=159214 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/tools/XMLEncodingParser.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/tools/XMLEncodingParser.java Sun Mar 27 15:33:51 2005 @@ -33,7 +33,7 @@ /** * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static String parse( byte[] content ) throws Exception { - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r159213 - in jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser: ./ locate/ network/
Author: burton Date: Sun Mar 27 15:32:01 2005 New Revision: 159213 URL: http://svn.apache.org/viewcvs?view=rev&rev=159213 Log: removed more @authors Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/MetaFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/TagFeedParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/DiscoveryLocator.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/AdvancedInputStream.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BaseResourceRequest.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BlockingResourceRequest.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/HTTPClientNetworkResource.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequest.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequestFactory.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java?view=diff&r1=159212&r2=159213 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java Sun Mar 27 15:32:01 2005 @@ -96,7 +96,7 @@ * Removing prolog whitespace, comments, and other garbage from the * beginning of a feed. * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ private static String doRemoveLeadingProlog( String content, String encoding ) { Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/MetaFeedParserListener.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/MetaFeedParserListener.java?view=diff&r1=159212&r2=159213 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/MetaFeedParserListener.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/MetaFeedParserListener.java Sun Mar 27 15:32:01 2005 @@ -101,7 +101,7 @@ * Used to represent RSS 2.0 GUIDs and atom:id constructs. For Atom * isPermalink should be ignored. * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public void onGUID( FeedParserState state, String value, Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/TagFeedParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/TagFeedParser.java?view=diff&r1=159212&r2=159213 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/TagFeedParser.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/TagFeedParser.java Sun Mar 27 15:32:01 2005 @@ -71,7 +71,7 @@ * this needs to be per element. It seems that the real infringer is * Delicious but I can fix this by processing dc:subject last. * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static void doDcSubject( TagFeedParserListener listener, FeedParserState state ) throws Exception { @@ -100,7 +100,7 @@ /** * Parse out atom:category and RSS 2.0/0.91 category * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static boolean doParseCategory( TagFeedParserListener listener, FeedParserState state ) throws Exception { Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/DiscoveryLocator.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparse
svn commit: r159212 - in jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser: ./ impl/ locate/ network/ output/ sax/
Author: burton Date: Sun Mar 27 15:31:07 2005 New Revision: 159212 URL: http://svn.apache.org/viewcvs?view=rev&rev=159212 Log: removed more @authors Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FOAFFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedDirectoryParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedLifecycleListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedList.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/MetaFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/DebugFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/AnchorParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/FeedLocator.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ResourceExpander.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/MalformedResourceException.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/NetworkEventListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/NetworkException.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequest.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/output/RSS10_OutputFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/sax/RSSFeedParser.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentFeedParserListener.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentFeedParserListener.java?view=diff&r1=159211&r2=159212 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentFeedParserListener.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ContentFeedParserListener.java Sun Mar 27 15:31:07 2005 @@ -75,7 +75,7 @@ * @param isSummary True if this is just a summary of the content and not * the full content. This is only known for Atom feeds. * - * @author mailto:[EMAIL PROTECTED]">Kevin Burton + * */ public void onContent( FeedParserState state, String type, Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java?view=diff&r1=159211&r2=159212 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java Sun Mar 27 15:31:07 2005 @@ -82,7 +82,7 @@ /** * http://www.mnot.net/drafts/draft-nottingham-atom-format-00.html#rfc.section.3.2.8 * - * @author mailto:[EMAIL PROTECTED]">Kevin Burton + * */ public void onCreated( FeedParserState state, Date date ) throws FeedParserException{} public void onCreatedEnd() throws FeedParserException {} @@ -93,7 +93,7 @@ /** * http://www.mnot.net/drafts/draft-nottingham-atom-format-00.html#rfc.section.3.2.7 * - * @author mailto:[EMAIL PROTECTED]">Kevin Burton + * */ public void onIssued( FeedParserState state, String content ) throws FeedParserException {} public void onIssuedEnd() throws FeedParserException {} Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FOAFFeedParserListener.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FOAFFeedParse
svn commit: r159211 - in jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser: ./ impl/ locate/ network/ output/ tools/
Author: burton Date: Sun Mar 27 15:24:21 2005 New Revision: 159211 URL: http://svn.apache.org/viewcvs?view=rev&rev=159211 Log: removed @author to make javadoc build easier Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/ChangesFeedParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FOAFFeedParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FOAFFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedDirectoryParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedFilter.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedLifecycleListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedParserState.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/MetaFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/OPMLFeedParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/TagFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/Test.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/DebugFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/AnchorParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/AnchorParserException.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/DiscoveryLocator.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/FeedLocator.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/LinkLocator.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/BaseResourceRequest.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequest.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/ResourceRequestFactory.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLCookieManager.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/output/RSS10_OutputFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/tools/XMLCleanser.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java?view=diff&r1=159210&r2=159211 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java Sun Mar 27 15:24:21 2005 @@ -53,7 +53,7 @@ /** * Parse this feed. * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ public static void parse( FeedParserListener listener, org.jdom.Document doc ) throws Exception { @@ -302,7 +302,7 @@ /** * Get the content of the given element. * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * */ private static String getXMLOfContent( List content ) { Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java?view=diff&r1=159210&r2=159211 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java (original) +++ jakarta/commons/proper/feedpars
svn commit: r159209 - in jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser: RSSFeedParser.java network/URLResourceRequest.java
Author: burton Date: Sun Mar 27 15:19:50 2005 New Revision: 159209 URL: http://svn.apache.org/viewcvs?view=rev&rev=159209 Log: changed URL to not include the sandbox Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java?view=diff&r1=159208&r2=159209 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java Sun Mar 27 15:19:50 2005 @@ -227,7 +227,9 @@ Element items = state.current.getChild( "items", NS.CONTENT ); if ( items != null ) { - + +//FIXME: with malformed XML this could throw an NPE. Luckly +//this format is rare now. Element value = items.getChild( "Bag", NS.RDF ) .getChild( "li", NS.RDF ) Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java?view=diff&r1=159208&r2=159209 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java Sun Mar 27 15:19:50 2005 @@ -45,15 +45,22 @@ public static final String ACCEPT_ENCODING_HEADER = "Accept-Encoding"; public static final String IF_NONE_MATCH_HEADER = "If-None-Match"; - public static final String GZIP_ENCODING = "gzip"; - public static final String USER_AGENT_HEADER = "User-Agent"; - + +/** + * + * Enable RFC 3228 HTTP Delta for feeds. + * + * http://bobwyman.pubsub.com/main/2004/09/using_rfc3229_w.html + * + * http://bobwyman.pubsub.com/main/2004/09/implementations.html + * + */ public static boolean ENABLE_HTTP_DELTA_FEED_IM = false; public static String USER_AGENT -= "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1; aggregator:FeedParser; http://jakarta.apache.org/commons/sandbox/feedparser/) Gecko/20021130"; += "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1; aggregator:FeedParser; http://jakarta.apache.org/commons/feedparser/) Gecko/20021130"; public static String USER_AGENT_MOZILLA = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021130"; @@ -62,7 +69,7 @@ * Not used anymore. Provided for historical reasons. */ public static final String REFERER -= "http://jakarta.apache.org/commons/sandbox/feedparser/?isAggregator=true";; += "http://jakarta.apache.org/commons/feedparser/?isAggregator=true";; public static final int MAX_CONTENT_LENGTH = 100; @@ -166,7 +173,10 @@ if ( ENABLE_HTTP_DELTA_FEED_IM ) { //note that this will return HTTP 226 if used. +// + httpURLConn.setRequestProperty( "A-IM", "feed, gzip" ); + } } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [patch?] feedparser (organizing imports)
Matthias Wessendorf wrote: Hi, I liked the remove unused import statements patch. How did you find this out? Did you use checkstyle or something? No. I used a feature from eclipse regarding that. Cool... goign to have to play with that. separating means? one patch per clazz or per package ? Oh... separate it into one patch with removing the unnecessary imports ;) -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [patch?] feedparser (organizing imports)
Matthias Wessendorf wrote: Hi Kevin, sorry for bothering you, but I started looking at sources for [feedparser] and saw lot's of "import java.xxx.*" and also unused importstatements. Are you interessted in "structuring" them? I liked the remove unused import statements patch. How did you find this out? Did you use checkstyle or something? I'm not sure about the generic import java.xxx.* removal. I prefer this style as it saves a LOT of time over worrying about which classes to import. I realize that some IDEs have support for just in time class import but I use Emacs which doesn't have that fancy feature ;) Would you be interested in separating the patches? I'd like to accept the remove unnecessary imports code. Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: VOTE: feedparser 0.5.0 RC1
Dion Gillard wrote: There's no NOTICE file in the .tar.gz file as well. I know... I was going to put it there before the release.Its going to be in there on release as the requirements are there. I didn't think it was required for an RC. Because the Apache release requirements are so long (> 15 steps). I've been putting it off. Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: VOTE: feedparser 0.5.0 RC1
Martin Cooper wrote: Unfortunately, you also didn't get the minimum 3 +1s necessary. ;-( (I have not looked at FeedParser, so I don't consider myself qualified to vote one way or another.) Uh... I don't think I need 3 +1s to do a release as long as their are no -1s... Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: VOTE: feedparser 0.5.0 RC1
Matthias Wessendorf wrote: Ok, is there any result on this issue? I played a bit with [feedparser] and it works for me ;) So "+1" for rc1 But needs lot of JARs... ;-( I'm working on the "Needs a lot of jars issue" :) I didn't get any -1s so I assume its a go. The big issue is that I just haven't had time to do the release... Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r158368 - in jakarta/commons/proper/feedparser/trunk: ./ src/java/org/apache/commons/feedparser/ src/java/org/apache/commons/feedparser/impl/ src/java/org/apache/commons/feedparser/test/ xdocs/
Author: burton Date: Sun Mar 20 14:54:02 2005 New Revision: 158368 URL: http://svn.apache.org/viewcvs?view=rev&rev=158368 Log: support for onContentItem from within the capture output layer Added: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestBrokenFeeds.java Modified: jakarta/commons/proper/feedparser/trunk/project.xml jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedVersion.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/DebugFeedParserListener.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/BaseTestCase.java jakarta/commons/proper/feedparser/trunk/xdocs/index.xml Modified: jakarta/commons/proper/feedparser/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/project.xml?view=diff&r1=158367&r2=158368 == --- jakarta/commons/proper/feedparser/trunk/project.xml (original) +++ jakarta/commons/proper/feedparser/trunk/project.xml Sun Mar 20 14:54:02 2005 @@ -122,8 +122,6 @@ 1.2 - - saxpath 1.0-FCS Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java?view=diff&r1=158367&r2=158368 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/DefaultFeedParserListener.java Sun Mar 20 14:54:02 2005 @@ -39,7 +39,8 @@ ContentFeedParserListener { private Object context = null; - + +public void onFeedVersion( FeedVersion version ) throws FeedParserException {} public void init() throws FeedParserException {} public void setContext( Object context ) throws FeedParserException { @@ -117,7 +118,6 @@ public void onAuthorEnd() throws FeedParserException {} - public void onComments( FeedParserState state, String resource ) throws FeedParserException {} @@ -128,7 +128,6 @@ public void onCommentsFeedEnd() throws FeedParserException {} - // ModContentFeedParserListener public void onContentEncoded( FeedParserState state, @@ -148,8 +147,6 @@ public void onXHTMLBody( FeedParserState state, Element value ) throws FeedParserException {} public void onXHTMLBodyEnd() throws FeedParserException {} - -public void onFeedVersion( FeedVersion version ) throws FeedParserException {} // ContentFeedParserListener *** Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedVersion.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedVersion.java?view=diff&r1=158367&r2=158368 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedVersion.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/FeedVersion.java Sun Mar 20 14:54:02 2005 @@ -64,5 +64,26 @@ public int version_major = 0; public int version_minor = 0; public int version_sub = 0; + +public String toString() { + +String result = ""; + +if ( isAtom ) +result = "atom"; +else if ( isRSS ) +result = "rss"; +else if ( isFOAF ) +result = "foaf"; +else if ( isOPML ) +result = "opml"; +else if ( isXFN ) +result = "xfn"; +else if ( isChanges ) +result = "changes"; + +return result += ":" + version; + +} } Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/DebugFeedParserListener.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/impl/DebugFeedParserListener.java?view=diff&r1=158367&r2=158368 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/common
svn commit: r158366 - jakarta/commons/proper/feedparser/trunk/tests/feeds/zawodny-broken-content.rss2
Author: burton Date: Sun Mar 20 14:26:32 2005 New Revision: 158366 URL: http://svn.apache.org/viewcvs?view=rev&rev=158366 Log: added new unit test for zawodny not including content Added: jakarta/commons/proper/feedparser/trunk/tests/feeds/zawodny-broken-content.rss2 Added: jakarta/commons/proper/feedparser/trunk/tests/feeds/zawodny-broken-content.rss2 URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/tests/feeds/zawodny-broken-content.rss2?view=auto&rev=158366 == --- jakarta/commons/proper/feedparser/trunk/tests/feeds/zawodny-broken-content.rss2 (added) +++ jakarta/commons/proper/feedparser/trunk/tests/feeds/zawodny-broken-content.rss2 Sun Mar 20 14:26:32 2005 @@ -0,0 +1,432 @@ + +http://purl.org/dc/elements/1.1/"; +xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"; +xmlns:admin="http://webns.net/mvcb/"; +xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; +xmlns:content="http://purl.org/rss/1.0/modules/content/";> + + +Jeremy Zawodny's blog +http://jeremy.zawodny.com/blog/ +SELECT * FROM random_thoughts ORDER BY date DESC +en-us +[EMAIL PROTECTED] +Copyright 2005 +2005-03-20T12:56:26-08:00 +http://www.movabletype.org/?v=2.63"; /> +mailto:[EMAIL PROTECTED]"/> +hourly +1 +2000-01-01T12:00+00:00 + + + Thoughts on Flickr and Yahoo + http://jeremy.zawodny.com/blog/archives/004362.html + The first time I used Flickr, I knew it was something different and something important. It took me a while to figure out and try to articulate exactly what that was, but I took my first swipe back in September when I called it a Next Generation Web Service. In that posting, I said: Flickr has been on my radar for a while now, but I only recently began to start playing with it. I'm impressed as hell. After my... + [EMAIL PROTECTED]://jeremy.zawodny.com/blog/ + + Yahoo + 2005-03-20T12:56:26-08:00 + + + ETech, Yahoo! 360, Amazon, Open Search, and Generally Crazy Times + http://jeremy.zawodny.com/blog/archives/004357.html + I've been so busy between stuff going on at ETech and stuff back at Yahoo that I haven't had a chance to even post here. You probably heard about Yahoo! 360 (our answer to what happens when you combine your friends, your content (pictures, lists, reviews, etc), and a bit of blogging fu). I'll write more about it later, probably but am happy to see that some people "get it." 360 was not designed to be YASNS (Yet Another Social... + [EMAIL PROTECTED]://jeremy.zawodny.com/blog/ + + Yahoo + 2005-03-16T23:38:52-08:00 + + + Headed to ETech in the Morning... + http://jeremy.zawodny.com/blog/archives/004351.html + I have a 7:00am flight tomorrow down to San Diego for the 2005 Emerging Technologies Conference. The program looks great this year. They're even letting me speak: Introduction to Yahoo! Search Web Services. That topic's a big shock, I'm sure. Anyway, if you're in town for the conference I hope we run into each other. Don't forget to drop by the Yahoo booth to get some goodies, find out about getting a job at Yahoo, etc. In theory I arrive... + [EMAIL PROTECTED]://jeremy.zawodny.com/blog/ + + Yahoo + 2005-03-14T20:48:27-08:00 + + + Transparensee's Discovery Search Engine + http://jeremy.zawodny.com/blog/archives/004348.html + In Grokking Transparensee, John Battelle said the following: This is powerful stuff when you think about it, and it solves a core database search issue, at least for me: you know there is the right answer for the query you are entering, but damned if it isn't escaping you, due to the blunt nature of structured search. He's referring to Transparensee's Discovery Search Engine. He did a decent job of explaining what it is, but it's really one of those... + [EMAIL PROTECTED]://jeremy.zawodny.com/blog/ + + Random + 2005-03-14T08:09:38-08:00 + + + What about Microsoft's upcoming contextual advertising system? + http://jeremy.zawodny.com/blog/archives/004337.html + I keep reading all these speculative posts about Yahoo getting into the contextual advertising game, being "poised" to compete with AdSense, and so on. But what surprises me is how little chatter about Microsoft I read. If people really think that MSN Search is Microsoft's only assault on the cash cow in Mountain View, there's some really good crack getting smoked. Maybe it's time to review Google's financials and think like like the monoplist that Microsoft is. If you wanted... + [EMAIL PROTECTED]://jeremy.zaw
Re: [Feedparser] NoClassDefFoundError
Matthias Wessendorf wrote: Hi, when I start the "HelloFeedParser" sample, I got: NoClassDefFoundError: org/saxpath/SAXPathException (see below) I loaded the *binary* from http://apache.org/~burton/ here is the SRC of my "HelloFeedParser": http://cvs.apache.org/viewcvs.cgi/jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/example/HelloFeedParser.java?rev=1.1&view=markup Looks like you'll need saxpath.jar from SVN in your classpath. I think this dependency will go away once we move to Jaxen 1.0.. in 0.6.0 of the FeedParser. Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [Feedparser] dependencies of JARs
Matthias Wessendorf wrote: Hi, I just saw on [1] that [feedparser] depends on lot's of JARs are all of them really needed to "run" applications, based upon [feedparser] ? The only dependencies are jdom, jaxen, log4j, and xerces. I want to get this down to JUST log4j and xerces in 2.0 though. Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [Feedparser] dependencies of JARs
Matthias Wessendorf wrote: Hi, I just saw on [1] that [feedparser] depends on lot's of JARs are all of them really needed to "run" applications, based upon [feedparser] ? Most are needed to compile. I'll update the site in a bit to specify which jars are needed in a practical application. Thanks! Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r158183 - jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Fri Mar 18 17:27:45 2005 New Revision: 158183 URL: http://svn.apache.org/viewcvs?view=rev&rev=158183 Log: Assert that the constructor benchmark isn't actually registered Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=158182&r2=158183 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Fri Mar 18 17:27:45 2005 @@ -44,6 +44,9 @@ child.start(); child.complete(); +assertFalse( b.registered ); + +assertEquals( 0, b.getTracker1().now.completed ); assertEquals( 1, child.getTracker1().now.completed ); } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r158178 - jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java
Author: burton Date: Fri Mar 18 17:07:02 2005 New Revision: 158178 URL: http://svn.apache.org/viewcvs?view=rev&rev=158178 Log: Fixed a bug where getBenchmark would accidentally create a benchmark Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java?view=diff&r1=158177&r2=158178 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java Fri Mar 18 17:07:02 2005 @@ -61,7 +61,7 @@ */ public Hashtable getBenchmarkAsHashtable( String name ) { -Benchmark benchmark = Benchmark.getBenchmark( name ); +Benchmark benchmark = (Benchmark)Benchmark.getBenchmarks().get( name ); if ( benchmark == null ) return null; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r158174 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Fri Mar 18 16:53:10 2005 New Revision: 158174 URL: http://svn.apache.org/viewcvs?view=rev&rev=158174 Log: more unit tests... more javadoc... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java?view=diff&r1=158173&r2=158174 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java Fri Mar 18 16:53:10 2005 @@ -54,6 +54,11 @@ .getTracker1().getLast().getMeanDuration() ); } +/** + * Get an individual benchmark as a hashtable with all values exposed. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ public Hashtable getBenchmarkAsHashtable( String name ) { Benchmark benchmark = Benchmark.getBenchmark( name ); @@ -66,16 +71,20 @@ //map.put( "1min.now.duration", new Double( benchmark.getTracker1().getNow().duration ) ); //map.put( "1min.last.duration", new Double( benchmark.getTracker1().getNow().duration ) ); -addHashtableMetrics( map, benchmark.getTracker1().getLast(), "1min.last." ); -addHashtableMetrics( map, benchmark.getTracker5().getLast(), "5min.last." ); -addHashtableMetrics( map, benchmark.getTracker15().getLast(), "15min.last." ); +addHashtableMetrics( map, benchmark.getTracker1().getLast(), "1min." ); +addHashtableMetrics( map, benchmark.getTracker5().getLast(), "5min." ); +addHashtableMetrics( map, benchmark.getTracker15().getLast(), "15min." ); return map; } /** - * @see Benchmark.getBenchmarks() + * + * Get all current benchmarks that have been defined in the system. We + * return the data as a Hashtable with the name of the benchmark and the + * associated values. + * * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton */ public Map getBenchmarks() { Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=158173&r2=158174 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Fri Mar 18 16:53:10 2005 @@ -33,6 +33,21 @@ super(testName); } +public void testChild() throws Exception { + +Benchmark b = new Benchmark(); + +Benchmark child = b.child( "foo" ); + +assertTrue( "child not setup", child.getName().indexOf( "foo" ) != -1 ); + +child.start(); +child.complete(); + +assertEquals( 1, child.getTracker1().now.completed ); + +} + //FIXME: write unit test for PERFORMANCE. With it enabled/disabled we //should be able to call it FREQUENTLY without killing the CPU. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r158157 - jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java
Author: burton Date: Fri Mar 18 15:07:31 2005 New Revision: 158157 URL: http://svn.apache.org/viewcvs?view=rev&rev=158157 Log: Fixed a bug due to a threading issue corrupting a HashSet.. we now use a mutex... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java?view=diff&r1=158156&r2=158157 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java Fri Mar 18 15:07:31 2005 @@ -37,6 +37,13 @@ public class GraphTask extends Thread { /** + * RRD 1.4 has a bug where they use a HashSet internall to keep track of + * open writers which causes threads to screw up so we need to synchronize a + * mutex. Since this is just disk IO it should be OK. + */ +public static final Object RRD_MUTEX = new Object(); + +/** * True when we should generate tasks within the current process. */ public static boolean ENABLE_GENERATE_GRAPHS=true; @@ -208,7 +215,8 @@ graph.saveAsPNG( path ); System.out.println( "Generating graph: " + path + " ...done" ); - +//graph.close(); + } /** @@ -219,56 +227,60 @@ */ private void doCreateRRD() throws Exception { -new File( ROOT ).mkdirs(); +synchronized( RRD_MUTEX ) { -System.out.println( "Creating rrd file: " + rrd_path ); +new File( ROOT ).mkdirs(); -RrdDef rrdDef = new RrdDef( rrd_path ); -rrdDef.setStartTime( begin ); +System.out.println( "Creating rrd file: " + rrd_path ); + +RrdDef rrdDef = new RrdDef( rrd_path ); +rrdDef.setStartTime( begin ); -rrdDef.addDatasource( "speed", - "GAUGE", - GraphTaskRunner.COUNTER_INTERVAL_SECONDS, - Double.NaN, - Double.NaN ); +rrdDef.addDatasource( "speed", + "GAUGE", + GraphTaskRunner.COUNTER_INTERVAL_SECONDS, + Double.NaN, + Double.NaN ); -//set the step to 1 minute (the default is 5 minutes). -rrdDef.setStep( GraphTaskRunner.COUNTER_INTERVAL_SECONDS ); +//set the step to 1 minute (the default is 5 minutes). +rrdDef.setStep( GraphTaskRunner.COUNTER_INTERVAL_SECONDS ); -//keep one measurement for every single poll. +//keep one measurement for every single poll. -//rrdDef.addArchive( "AVERAGE", 0.5, 1, 3600 ); +//rrdDef.addArchive( "AVERAGE", 0.5, 1, 3600 ); -//rrdDef.addArchive( "AVERAGE", 0.5, 1, 60 ); +//rrdDef.addArchive( "AVERAGE", 0.5, 1, 60 ); -//FIXME: increase this to about 400... because this would yield a much -//higher density image. +//FIXME: increase this to about 400... because this would yield a much +//higher density image. -//6 hours (6 minute intervals... with 60 measurements which yields 360 -//minutes which is 6 hours). +//6 hours (6 minute intervals... with 60 measurements which yields 360 +//minutes which is 6 hours). -rrdDef.addArchive( "AVERAGE", 0.5, 1, 360 ); +rrdDef.addArchive( "AVERAGE", 0.5, 1, 360 ); -//12 hours -rrdDef.addArchive( "AVERAGE", 0.5, 2, 360 ); +//12 hours +rrdDef.addArchive( "AVERAGE", 0.5, 2, 360 ); -//24 hours -rrdDef.addArchive( "AVERAGE", 0.5, 4, 360 ); +//24 hours +rrdDef.addArchive( "AVERAGE", 0.5, 4, 360 ); -//1 week -rrdDef.addArchive( "AVERAGE", 0.5, 28, 360 ); +//1 week +rrdDef.addArchive( "AVERAGE", 0.5, 28, 360 ); -//1 month -rrdDef.addArchive( "AVERAGE", 0.5, 120, 360 ); +//1 month +rrdDef.addArchive( "AVERAGE", 0.5, 120, 360 ); -//1 year -rrdDef.addArchive( "AVERAGE", 0.5, 1460, 360 ); +//1 year +rrdDef.addArchive( "AVERAGE", 0.5, 1460, 360 ); -//FIXME:
svn commit: r157627 - in jakarta/commons/sandbox/benchmark/trunk: project.xml src/java/org/apache/commons/benchmark/rrd/GraphTask.java
Author: burton Date: Tue Mar 15 18:13:59 2005 New Revision: 157627 URL: http://svn.apache.org/viewcvs?view=rev&rev=157627 Log: cactch all throwables: Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/project.xml?view=diff&r1=157626&r2=157627 == --- jakarta/commons/sandbox/benchmark/trunk/project.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/project.xml Tue Mar 15 18:13:59 2005 @@ -83,6 +83,7 @@ **/Test*.java +**/TestPerformance.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java?view=diff&r1=157626&r2=157627 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java Tue Mar 15 18:13:59 2005 @@ -329,8 +329,8 @@ exec(); generateGraphs(); -} catch ( Exception e ) { -e.printStackTrace(); +} catch ( Throwable t ) { +t.printStackTrace(); } } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Moving benchmark out of sandbox?
Niall Pemberton wrote: JRobin is LGPL License: http://www.jrobin.org/license.html Crap.. I totally forgot about that! I'm going to ask the author if he's interested in a BSD version :) Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157573 - jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/TestPerformance.java
Author: burton Date: Tue Mar 15 10:35:33 2005 New Revision: 157573 URL: http://svn.apache.org/viewcvs?view=rev&rev=157573 Log: ... Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/TestPerformance.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/TestPerformance.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/TestPerformance.java?view=diff&r1=157572&r2=157573 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/TestPerformance.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/TestPerformance.java Tue Mar 15 10:35:33 2005 @@ -47,7 +47,7 @@ double tps = ((double)TEST1_COUNT / (double)bmeta.duration) * 1000D; -assertTrue( "Not meeting minimum TPS", tps > 20 ); +assertTrue( "Not meeting minimum TPS", tps > 15 ); //NOW disable the whole thing and trytry again. Benchmark.DISABLED=true; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: How do I setup nightly builds?
Craig McClanahan wrote: I added a build.xml generated from "maven ant", but the unit tests fail (see my commit message for build.xml) which causes the "ant clean dist" command to fail as well. If the unit tests are made to work, I can start uploading nightly builds for you, which will appear in: http://cvs.apache.org/builds/jakarta-commons/nightly/commons-benchmark/ I'll fix the unit tests. There's a performance test which is probably confused when not running on my laptop ;).. Still trying to figure out how to write a test for that. I'll fix it now :) -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: How do I setup nightly builds?
Martin Cooper wrote: The Commons nightlies are run by Craig at the moment. As long as FeedParser and Benchmark build cleanly with 'ant clean dist', a request to Craig should get them added to the list of components built nightly. Do you know if I can run maven? "maven clean dist" works fine. I'm sure I could get Ant setup but Maven just gives it to me for free. Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
How do I setup nightly builds?
I want to setup nightly builds for FeedParser and Benchmark but I can't figure out how. Looked all over the wiki in the TitleIndex and even tried google. Pointers please! :) Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Moving benchmark out of sandbox?
Dion Gillard wrote: Using nightly builds? Thats a step in the right direction I guess ;) I'll setup nightly builds and then blog about the benchmark package and what you can do with it... then build really nice javadoc. I guess I'm getting ahead of myself because I want to integrate it within FeedParser :) Thanks! Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157511 - in jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/config: ./ XMLConfigurator.java
Author: burton Date: Mon Mar 14 20:45:29 2005 New Revision: 157511 URL: http://svn.apache.org/viewcvs?view=rev&rev=157511 Log: added XMLConfigurator which wasn't present (bad) Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/config/ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/config/XMLConfigurator.java Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/config/XMLConfigurator.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/config/XMLConfigurator.java?view=auto&rev=157511 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/config/XMLConfigurator.java (added) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/config/XMLConfigurator.java Mon Mar 14 20:45:29 2005 @@ -0,0 +1,121 @@ +/* + * 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.benchmark.config; + +import org.apache.commons.benchmark.rrd.*; + +import java.util.*; + +import javax.xml.parsers.*; +import org.w3c.dom.*; + +import org.apache.commons.beanutils.*; + +/** + * Simple XML based configuration tool. + * + * @author mailto:[EMAIL PROTECTED]">Kevin Burton + * @version $Id: Benchmark.java,v 1.3 2005/02/16 02:28:09 burton Exp $ + */ +public class XMLConfigurator { + +/** + * Configure benchmark for the current VM. + */ +public static void configure( String path ) throws Exception { + +DocumentBuilder builder = DocumentBuilderFactory +.newInstance().newDocumentBuilder(); + +Document document = builder.parse( path ); + +Element root = document.getDocumentElement(); + +NodeList tasksList = root.getElementsByTagName( "tasks" ); + +if ( tasksList.getLength() > 0 ) { + +//process tasks +Node tasksNode = tasksList.item( 0 ); +Element tasksElement = (Element)tasksNode; + +NodeList sourceList = tasksElement.getElementsByTagName( "source" ); + +for ( int i = 0; i < sourceList.getLength(); ++i ) { + +Node sourceNode = sourceList.item( i ); +Element sourceElement = (Element)sourceNode; + +String classname = sourceElement.getAttribute( "classname" ); +String name = sourceElement.getAttribute( "name" ); +String title = sourceElement.getAttribute( "title" ); + +String unitDescription = sourceElement.getAttribute( "unitDescription" ); +String unitName = sourceElement.getAttribute( "unitName" ); + +//FIXME: process params as well. + +Class clazz = Class.forName( classname ); + +Source source = (Source)clazz.newInstance(); + +//set properties on the source with beansutils. +applyParams( source, sourceElement ); + +GraphTask task = new GraphTask( name, +title, +unitDescription, +unitName, +source ); + +GraphTaskRunner.tasks.add( task ); + +} + +} + +} + +public static void applyParams( Source source, Element sourceElement ) +throws Exception { + +NodeList paramList = sourceElement.getElementsByTagName( "param" ); + +for ( int j = 0; j < paramList.getLength(); ++j ) { + +Node paramNode = paramList.item( j ); +Element paramElement = (Element)paramNode; + +String name = paramElement.getAttribute( "name" ); +String value = paramElement.getAttribute( "value" ); + +if ( value == null || value.equals( "" ) ) { +value = paramElement.getFirstChild().getNodeValue(); + +} + +PropertyUtils.setSimpleProperty( source, name, value ); +
Re: Moving benchmark out of sandbox?
Martin Cooper wrote: I don't believe Benchmark is ready to be promoted to Commons Proper. As far as I can tell, it is missing the single most important ingredient of a project at the ASF - community. It has a single committer and very little discussion on the lists. This isn't all that surprising, since it hasn't been around very long, but it does mean that it's not ready for promotion out of the Sandbox quite yet. I was thinking the same ting... which is one reason I thought I'd mention Benchmark again ;) The problem is how do I get community if I can't do a release - the sandbox prohibits releases! Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: VOTE: feedparser 0.5.0 RC1
Dion Gillard wrote: Accessing http://apache.org/~burton/commons-feedparser-0.5-beta.tar.gz gives: Forbidden You don't have permission to access /~burton/commons-feedparser-0.5-beta.tar.gz on this server. Wow... sorry. Permissions issue :-/ -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157486 - jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java
Author: burton Date: Mon Mar 14 16:01:08 2005 New Revision: 157486 URL: http://svn.apache.org/viewcvs?view=rev&rev=157486 Log: Fixed a race condition that would lockup the runner Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java?view=diff&r1=157485&r2=157486 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java Mon Mar 14 16:01:08 2005 @@ -316,11 +316,13 @@ public void run() { while ( true ) { + +isWaiting = true; + synchronized( this ) { try { -isWaiting = true; wait(); isWaiting = false; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157480 - in jakarta/commons/proper/feedparser/trunk: build.xml src/java/org/apache/commons/feedparser/locate/ProbeLocator.java src/java/org/apache/commons/feedparser/test/TestPerformance.java src/java/org/apache/commons/feedparser/test/TestProbeLocator.java
Author: burton Date: Mon Mar 14 15:02:23 2005 New Revision: 157480 URL: http://svn.apache.org/viewcvs?view=rev&rev=157480 Log: Refactored test mechanism.. all of our anchor parser unit tests works. Blogger test fails but I think thats not release depenedent and is a blogger bug Modified: jakarta/commons/proper/feedparser/trunk/build.xml jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestPerformance.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java Modified: jakarta/commons/proper/feedparser/trunk/build.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/build.xml?view=diff&r1=157479&r2=157480 == --- jakarta/commons/proper/feedparser/trunk/build.xml (original) +++ jakarta/commons/proper/feedparser/trunk/build.xml Mon Mar 14 15:02:23 2005 @@ -112,7 +112,7 @@ +depends="jar"> - @@ -151,13 +151,18 @@ - - + + + + + + + Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java?view=diff&r1=157479&r2=157480 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java Mon Mar 14 15:02:23 2005 @@ -175,8 +175,10 @@ * * @author Brad Neuberg, [EMAIL PROTECTED] */ -protected static boolean feedExists(String resource, BlogService blogService) -throws Exception { +protected static boolean feedExists( String resource, + BlogService blogService) +throws Exception { + log.debug("feedExists, resource="+resource); ResourceRequest request = ResourceRequestFactory.getResourceRequest( resource ); Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestPerformance.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestPerformance.java?view=diff&r1=157479&r2=157480 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestPerformance.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestPerformance.java Mon Mar 14 15:02:23 2005 @@ -38,11 +38,15 @@ * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton * @version $Id$ */ -public class TestPerformance { +public class TestPerformance extends TestCase { + +public TestPerformance( String name ) { +super( name ); +} static SAXParser parser = null; -public static void doTestSAX() throws Exception { +public static void testSAX() throws Exception { if ( parser == null ) { parser = SAXParserFactory.newInstance().newSAXParser(); @@ -92,7 +96,7 @@ } -public static void doTestDefault() throws Exception { +public static void testDefault() throws Exception { FeedParser parser = FeedParserFactory.newFeedParser(); FeedParserListener listener = new DefaultFeedParserListener() {}; @@ -110,13 +114,13 @@ public static void main( String[] args ) throws Exception { -TestPerformance test = new TestPerformance(); +TestPerformance test = new TestPerformance( null ); //test.testGetWeblogLinkForResource(); //test.test1(); -doTestMethod( "doTestSAX", TestPerformance.class, 100 ); -doTestMethod( "doTestDefault", TestPerformance.class, 100 ); +doTestMethod( "testSAX", TestPerformance.class, 100 ); +doTestMethod( "testDefault", TestPerformance.class, 100 ); } Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/tr
svn commit: r157468 - in jakarta/commons/sandbox/benchmark/trunk: src/java/org/apache/commons/benchmark/BenchmarkMeta.java src/java/org/apache/commons/benchmark/BenchmarkUtils.java xdocs/index.xml
Author: burton Date: Mon Mar 14 13:40:09 2005 New Revision: 157468 URL: http://svn.apache.org/viewcvs?view=rev&rev=157468 Log: changed to package level with getters/setters Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java?view=diff&r1=157467&r2=157468 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java Mon Mar 14 13:40:09 2005 @@ -25,13 +25,13 @@ */ public class BenchmarkMeta { -public long timestamp = -1; +long timestamp = -1; -public long started = 0; +long started = 0; -public long completed = 0; +long completed = 0; -public long duration = 0; +long duration = 0; /** * The time the current benchmark was started. -1 for never started. Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java?view=diff&r1=157467&r2=157468 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java Mon Mar 14 13:40:09 2005 @@ -50,8 +50,6 @@ int numIterations, Class clazz ) throws Exception { -System.gc(); - Method method = clazz.getMethod( name, null ); if ( method == null ) @@ -60,6 +58,7 @@ BenchmarkMethodMeta bmeta = new BenchmarkMethodMeta(); bmeta.name = name; +System.gc(); bmeta.memoryBefore = getUsedMemory(); long duration = 0; Modified: jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml?view=diff&r1=157467&r2=157468 == --- jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Mon Mar 14 13:40:09 2005 @@ -120,16 +120,17 @@ -Benchmark benchmark = Benchmark.getBenchmark( "foo" ); +//get a benchmark +Benchmark benchmark = Benchmark.getBenchmark( "my_benchmark_name" ); try { -benchmark.start(); +benchmark.start(); -//do something expensive +//do something expensive } finally { -benchmark.complete(); +benchmark.complete(); } @@ -141,6 +142,15 @@ overhead. + +We provide shortcuts for determining the benchmark name from the +caller. For example if youre class +is mypackage.MyClass and you call +Benchmark.getBenchmark() or simply new +Benchmark() we automatically determine the class name and +use this as the name of the benchmark. + + @@ -276,7 +286,20 @@ no + + + + +xmlrpc + + + +no + + +yes + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Moving benchmark out of sandbox?
Michael Heuer wrote: On Sun, 13 Mar 2005, Kevin A. Burton wrote: Has annyone had a chance to take a look at the benchmark project I've been working on? http://jakarta.apache.org/commons/sandbox/benchmark/ I'm really happy with the way everything is turning out and I'd like to move from the sandbox to proper so that I can do a release. I am not an apache committer, so consider these comments appropriately, but I do not feel that benchmark as-is should move to commons proper. A checkstyle report should be generated, as there are lots of style and API problems that I see, public fields, methods with no javadoc, wild-card imports, package-level fields on a public abstract class, etc. Even if the quality of the implementation is good, it doesn't look it at first glance. There are a few issues here: I agree that javadoc should be updated. That was the first thing I would do prior to the move to is to run though all the methods and update the javadoc. The public fields were intentional. I was going to blog a manifesto about javabean semantic considered harmful but I have yet had the time. That said I probably don't want to open that can of worms by having it conflict with the commit so I'll probably just update the code. I don't disagree with the wild-card import issue though. Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412
svn commit: r157449 - jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java
Author: burton Date: Mon Mar 14 10:58:01 2005 New Revision: 157449 URL: http://svn.apache.org/viewcvs?view=rev&rev=157449 Log: ability to run tests from disk... Modified: jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java Modified: jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java?view=diff&r1=157448&r2=157449 == --- jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java Mon Mar 14 10:58:01 2005 @@ -22,6 +22,8 @@ import junit.framework.*; +import org.apache.commons.feedparser.network.*; + /** * * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton @@ -32,33 +34,32 @@ super( name ); } -static int anchorCount = 0; - -private void assertAnchorCount( int linkCount, String content ) throws Exception { +private void doTest( int linkCount, String resource ) throws Exception { -anchorCount = 0; - -AnchorParserListener listener = new AnchorParserListener() { +ResourceRequest request = ResourceRequestFactory.getResourceRequest( resource ); +String content = request.getInputStreamAsString(); -public boolean onAnchor( String href, String rel, String title ) { +TestAnchorParserListener listener = new TestAnchorParserListener(); -++anchorCount; - -return true; -} +AnchorParser.parse( content, listener ); -public Object getResult() { return null; } -public void setContext( Object context ) {} +System.out.println( "Found N anchors: " + listener.anchorCount ); -}; +assertEquals( linkCount, listener.anchorCount ); + +} + +private void assertAnchorCount( int linkCount, String content ) throws Exception { + +TestAnchorParserListener listener = new TestAnchorParserListener(); AnchorParser.parse( content, listener ); -assertEquals( linkCount, anchorCount ); +assertEquals( linkCount, listener.anchorCount ); } -public void test1() throws Exception { +public void testBasic() throws Exception { assertAnchorCount( 1, "http://peerfear.org\"; title=\"linux\" >adf" ); @@ -74,14 +75,44 @@ //assertAnchorCount( "", // 1 ); +//FIXME: what about unit tests which have multiple lines ? + +} + +public void testContent() throws Exception { + +doTest( 1, "file:tests/anchor/anchor1.html" ); +doTest( 1, "file:tests/anchor/anchor2.html" ); +doTest( 1, "file:tests/anchor/anchor3.html" ); +doTest( 1, "file:tests/anchor/anchor4.html" ); + } public static void main( String[] args ) throws Exception { //FIXME: won't work with -new TestAnchorParser( null ).test1(); +TestAnchorParser test = new TestAnchorParser( null ); +test.testBasic(); +test.testContent(); } } + +class TestAnchorParserListener implements AnchorParserListener { + +public int anchorCount; + +public boolean onAnchor( String href, String rel, String title ) { + +++anchorCount; + +return true; +} + +public Object getResult() { return null; } +public void setContext( Object context ) {} + +} + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157447 - in jakarta/commons/proper/feedparser/trunk/src/test: ./ org/ org/apache/ org/apache/commons/ org/apache/commons/feedparser/ org/apache/commons/feedparser/locate/ org/apache/commons/feedparser/locate/TestAnchorParser.java
Author: burton Date: Mon Mar 14 10:49:21 2005 New Revision: 157447 URL: http://svn.apache.org/viewcvs?view=rev&rev=157447 Log: Added unit tests for the anchor parser... init of moving the test to src/test Added: jakarta/commons/proper/feedparser/trunk/src/test/ jakarta/commons/proper/feedparser/trunk/src/test/org/ jakarta/commons/proper/feedparser/trunk/src/test/org/apache/ jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/ jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/ jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/ jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java Added: jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java?view=auto&rev=157447 == --- jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java (added) +++ jakarta/commons/proper/feedparser/trunk/src/test/org/apache/commons/feedparser/locate/TestAnchorParser.java Mon Mar 14 10:49:21 2005 @@ -0,0 +1,87 @@ +/* + * 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.locate; + +import java.io.*; +import java.net.*; +import java.util.*; +import java.util.regex.*; + +import junit.framework.*; + +/** + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ +public class TestAnchorParser extends TestCase { + +public TestAnchorParser( String name ) { +super( name ); +} + +static int anchorCount = 0; + +private void assertAnchorCount( int linkCount, String content ) throws Exception { + +anchorCount = 0; + +AnchorParserListener listener = new AnchorParserListener() { + +public boolean onAnchor( String href, String rel, String title ) { + +++anchorCount; + +return true; +} + +public Object getResult() { return null; } +public void setContext( Object context ) {} + +}; + +AnchorParser.parse( content, listener ); + +assertEquals( linkCount, anchorCount ); + +} + +public void test1() throws Exception { + +assertAnchorCount( 1, "http://peerfear.org\"; title=\"linux\" >adf" ); + +assertAnchorCount( 1, "http://peerfear.org\"; rel='linux' title='linux' >adf" ); + +assertAnchorCount( 1, "adf" ); + +assertAnchorCount( 1, "http://peerfear.org\"; >adf" ); + +assertAnchorCount( 1, "http://peerfear.org\"; rel=\"linux\" title=\"linux\" >adf" ); + +//FIXME: this won't work because it has an image +//assertAnchorCount( "", +// 1 ); + +} + +public static void main( String[] args ) throws Exception { + +//FIXME: won't work with + +new TestAnchorParser( null ).test1(); + +} + +} - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Moving benchmark out of sandbox?
Has annyone had a chance to take a look at the benchmark project I've been working on? http://jakarta.apache.org/commons/sandbox/benchmark/ I'm really happy with the way everything is turning out and I'd like to move from the sandbox to proper so that I can do a release. I want to use the benchmark code within the FeedParser so I can export benchmarks on network IO, feed parse time, etc. I need to move into proper so that I can do a benchmark 1.0 release. :) Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
VOTE: feedparser 0.5.0 RC1
(Sent this out on Friday but it looks like it bounced... ) OK. I took the time tonight and made an FeedParser 0.5.0 RC1 available for testing: http://apache.org/~burton/ http://apache.org/~burton/commons-feedparser-0.5-beta.tar.gz This is our initial release and on Monday I'll probably cut 0.5.0 final assuming there are no objections. http://jakarta.apache.org/commons/feedparser/ Since this is a first release a changelog doesn't really apply. One thing to note is that this includes Brad's RSS feed location bugfixes. The current release plan to 1.0 is to release 0.5.0 as a initial release. I'll probably want to do a 0.6.0 release right after this with some refactoring and commons-benchmark. Then I want to release a FeedParser 1.0 as the code is really solid. Thanks! Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157305 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/BenchmarkMeta.java java/org/apache/commons/benchmark/BenchmarkMethodMeta.java java/org/apache/commons/benchmark/BenchmarkUtils.java test/org/apache/commons/benchmark/TestPerformance.java
Author: burton Date: Sat Mar 12 18:02:06 2005 New Revision: 157305 URL: http://svn.apache.org/viewcvs?view=rev&rev=157305 Log: unit tests for speed Added: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/TestPerformance.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java?view=diff&r1=157304&r2=157305 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java Sat Mar 12 18:02:06 2005 @@ -72,16 +72,6 @@ return duration > 0 ? duration / completed : 0; } -public float getCompletedPerSecond() { - -long meanDuration = getMeanDuration(); - -if ( meanDuration == 0 ) -return 0; - -return 1000 / getMeanDuration(); -} - public void reset() { started = 0; completed = 0; Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java?view=diff&r1=157304&r2=157305 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java Sat Mar 12 18:02:06 2005 @@ -65,7 +65,8 @@ buff.append( "--\n" );; buff.append( "Results from method test: " + name + "\n" ); -buff.append( "Total duration: " + duration + "milliseconds \n" ); +buff.append( "Total duration: " + duration + " milliseconds \n" ); +buff.append( "Mean duration: " + getMeanDuration() + " milliseconds \n" ); buff.append( "Total completed: " + completed + "\n" ); buff.append( "Total completed per second: " + getCompletedPerSecond() + "\n" ); Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java?view=diff&r1=157304&r2=157305 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java Sat Mar 12 18:02:06 2005 @@ -29,7 +29,17 @@ public static BenchmarkMethodMeta benchmarkMethod( String name ) throws Exception { return benchmarkMethod( name, 10 ); } - + +public static BenchmarkMethodMeta benchmarkMethod( String name, + int numIterations ) throws Exception { + +String caller = Benchmark.getCallerClassname(); + +Class clazz = Class.forName( caller ); + +return benchmarkMethod( name, numIterations, clazz ); +} + /** * Benchmark the performance of a given method. * @@ -37,29 +47,29 @@ * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton */ public static BenchmarkMethodMeta benchmarkMethod( String name, - int numIterations ) throws Exception { + int numIterations, + Class clazz ) throws Exception { -String caller = Benchmark.getCallerClassname(); - -Class clazz = Class.forName( caller ); - System.gc(); Method method = clazz.getMethod( name, null ); +if ( method == null ) +throw new Exception( "Unable to find method: " + method + " in class " + clazz ); + BenchmarkMethodMeta bmeta = new BenchmarkMethodMeta(); bmeta.name = name; bmeta.memoryBefore = getUsedMemory();
svn commit: r157289 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/ test/org/apache/commons/benchmark/
Author: burton Date: Sat Mar 12 14:43:41 2005 New Revision: 157289 URL: http://svn.apache.org/viewcvs?view=rev&rev=157289 Log: Refactored a bit. Adding a string and two longs increase the benchmark by 140 bytes which isn't acceptable. Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/TestBenchmarkUtils.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java?view=diff&r1=157288&r2=157289 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java Sat Mar 12 14:43:41 2005 @@ -32,18 +32,6 @@ public long completed = 0; public long duration = 0; - -/** - * The name of this metadata result (optional) - */ -public String name = null; - -/** - * Track the total amount of memory available BEFORE this benchmark. -1 if - * not available. - */ -public long memoryBefore = -1; -public long memoryAfter = -1; /** * The time the current benchmark was started. -1 for never started. @@ -98,32 +86,6 @@ started = 0; completed = 0; duration = 0; -} - -/** - * Build a human readable report from the benchmark. This should include - * information such as mean duration, memory used, etc. - * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton - */ -public String getReport() { - -StringBuffer buff = new StringBuffer(); - -buff.append( "--\n" );; -buff.append( "Results from method test: " + name + "\n" ); -buff.append( "Total duration: " + duration + "milliseconds \n" ); -buff.append( "Total completed: " + completed + "\n" ); -buff.append( "Total completed per second: " + getCompletedPerSecond() + "\n" ); - -if ( memoryBefore > -1 ) { - -buff.append( "Used memory: " + (memoryAfter-memoryBefore) + "\n" ); - -} - -return buff.toString(); - } } Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java?view=auto&rev=157289 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java (added) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMethodMeta.java Sat Mar 12 14:43:41 2005 @@ -0,0 +1,82 @@ +/* + * 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.benchmark; + +/** + * Used to represent metadata for a benchmark including name, timestamp, + * started, completed, etc. + * + * @author mailto:[EMAIL PROTECTED]">Kevin Burton + * @version $Id: Benchmark.java,v 1.3 2005/02/16 02:28:09 burton Exp $ + */ +public class BenchmarkMethodMeta extends BenchmarkMeta{ + +/** + * The name of this metadata result (optional) + */ +public String name = null; + +/** + * Track the total amount of memory available BEFORE this benchmark. -1 if + * not available. + */ +public long memoryBefore = -1; +public long memoryAfter = -1; + +public float getCompletedPerSecond() { + +long meanDuration = getMeanDuration(); + +if ( meanDurati
svn commit: r157287 - in jakarta/commons/sandbox/benchmark/trunk: src/java/org/apache/commons/benchmark/BenchmarkMeta.java src/java/org/apache/commons/benchmark/BenchmarkUtils.java src/test/org/apache/commons/benchmark/Test1.java xdocs/index.xml
Author: burton Date: Sat Mar 12 14:18:52 2005 New Revision: 157287 URL: http://svn.apache.org/viewcvs?view=rev&rev=157287 Log: refactored to not use stdout but to return as metadata Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java?view=diff&r1=157286&r2=157287 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java Sat Mar 12 14:18:52 2005 @@ -17,6 +17,8 @@ package org.apache.commons.benchmark; /** + * Used to represent metadata for a benchmark including name, timestamp, + * started, completed, etc. * * @author mailto:[EMAIL PROTECTED]">Kevin Burton * @version $Id: Benchmark.java,v 1.3 2005/02/16 02:28:09 burton Exp $ @@ -32,6 +34,18 @@ public long duration = 0; /** + * The name of this metadata result (optional) + */ +public String name = null; + +/** + * Track the total amount of memory available BEFORE this benchmark. -1 if + * not available. + */ +public long memoryBefore = -1; +public long memoryAfter = -1; + +/** * The time the current benchmark was started. -1 for never started. */ public long getTimestamp() { @@ -70,10 +84,46 @@ return duration > 0 ? duration / completed : 0; } +public float getCompletedPerSecond() { + +long meanDuration = getMeanDuration(); + +if ( meanDuration == 0 ) +return 0; + +return 1000 / getMeanDuration(); +} + public void reset() { started = 0; completed = 0; duration = 0; +} + +/** + * Build a human readable report from the benchmark. This should include + * information such as mean duration, memory used, etc. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ +public String getReport() { + +StringBuffer buff = new StringBuffer(); + +buff.append( "--\n" );; +buff.append( "Results from method test: " + name + "\n" ); +buff.append( "Total duration: " + duration + "milliseconds \n" ); +buff.append( "Total completed: " + completed + "\n" ); +buff.append( "Total completed per second: " + getCompletedPerSecond() + "\n" ); + +if ( memoryBefore > -1 ) { + +buff.append( "Used memory: " + (memoryAfter-memoryBefore) + "\n" ); + +} + +return buff.toString(); + } } Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java?view=diff&r1=157286&r2=157287 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java Sat Mar 12 14:18:52 2005 @@ -26,12 +26,18 @@ */ public class BenchmarkUtils { -public static void benchmarkMethod( String name ) throws Exception { -benchmarkMethod( name, 10 ); +public static BenchmarkMeta benchmarkMethod( String name ) throws Exception { +return benchmarkMethod( name, 10 ); } -public static void benchmarkMethod( String name, -int max ) throws Exception { +/** + * Benchmark the performance of a given method. + * + * @param name The name of the method from the caller (found via reflection). + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ +public static BenchmarkMeta benchmarkMethod( String name, + int numIterations ) throws Exception { String caller = Benchmark.getCallerClassname(); @@ -41,12 +47,13 @@ Method method = clazz.getMethod( name, null ); -System.out.println( "Testing method: " + name ); +Benchmark
svn commit: r157285 - in jakarta/commons/sandbox/benchmark/trunk: src/java/org/apache/commons/benchmark/Benchmark.java src/java/org/apache/commons/benchmark/rrd/GraphTask.java xdocs/index.xml
Author: burton Date: Sat Mar 12 13:51:45 2005 New Revision: 157285 URL: http://svn.apache.org/viewcvs?view=rev&rev=157285 Log: refactored to support only closing once... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=157284&r2=157285 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Sat Mar 12 13:51:45 2005 @@ -282,9 +282,12 @@ String name = trace[i].getClassName(); -if ( name.startsWith( "org.apache.commons.benchmark" ) == false ) +if ( name.startsWith( "org.apache.commons.benchmark" ) == false ) { return name; - +} else if ( name.indexOf( "Test" ) != -1 ) { +return name; +} + } return null; Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java?view=diff&r1=157284&r2=157285 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java Sat Mar 12 13:51:45 2005 @@ -58,11 +58,6 @@ private String rrd_path = null; /** - * The current RRD sample... - */ -private Sample sample = null; - -/** * Unit title and description. */ private String unit_desc, unit_name = null; @@ -288,16 +283,25 @@ } RrdDb rrdDb = new RrdDb( rrd_path ); -sample = rrdDb.createSample(); +Sample sample = rrdDb.createSample(); try { -data( source.getValue() ); -//value += 10; -//data( value ); -rrdDb.sync(); -rrdDb.close(); - +long v = source.getValue(); + +//NOTE: this is the correct mechanism but it might be off by a bit due +//to skew with running getValue() from diff impls... +//lastUpdatedSeconds = currentTimeSeconds(); + +lastUpdatedSeconds += GraphTaskRunner.COUNTER_INTERVAL_SECONDS; + +String time = formatTime( lastUpdatedSeconds ); + +System.out.println( "time: " + time + " , " + unit_name + " value: " + v ); +System.out.println( "lastUpdated: " + lastUpdatedSeconds ); + +sample.setAndUpdate( lastUpdatedSeconds + ":" + v ); + } finally { rrdDb.sync(); @@ -330,25 +334,5 @@ } } } - -/** - * Take the RRD and call setAndUpdate on it with the given value. - */ -public void data( long v ) throws Exception { - -//NOTE: this is the correct mechanism but it might be off by a bit due -//to skew with running getValue() from diff impls... -//lastUpdatedSeconds = currentTimeSeconds(); -lastUpdatedSeconds += GraphTaskRunner.COUNTER_INTERVAL_SECONDS; - -String time = formatTime( lastUpdatedSeconds ); - -System.out.println( "time: " + time + " , " + unit_name + " value: " + v ); -System.out.println( "lastUpdated: " + lastUpdatedSeconds ); - -sample.setAndUpdate( lastUpdatedSeconds + ":" + v ); - -} - } Modified: jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml?view=diff&r1=157284&r2=157285 == --- jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Sat Mar 12 13:51:45 2005 @@ -59,7 +59,7 @@ Proprietary - + Infrasture code such as rrdtool, ganglia, and jrobin, provide @@ -80,6 +80,8 @@ A graphing package based on JR
VOTE: feedparser 0.5.0 RC1
OK. I took the time tonight and made an FeedParser 0.5.0 RC1 available for testing: http://apache.org/~burton/ http://apache.org/~burton/commons-feedparser-0.5-beta.tar.gz This is our initial release and on Monday I'll probably cut 0.5.0 final assuming there are no objections. http://jakarta.apache.org/commons/feedparser/ Since this is a first release a changelog doesn't really apply. One thing to note is that this includes Brad's RSS feed location bugfixes. The current release plan to 1.0 is to release 0.5.0 as a initial release. I'll probably want to do a 0.6.0 release right after this with some refactoring and commons-benchmark. Then I want to release a FeedParser 1.0 as the code is really solid. Thanks! Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157240 - jakarta/commons/proper/feedparser/tags/FEEDPARSER_0_5_0_RC1
Author: burton Date: Fri Mar 11 23:27:46 2005 New Revision: 157240 URL: http://svn.apache.org/viewcvs?view=rev&rev=157240 Log: RC1 tag Added: jakarta/commons/proper/feedparser/tags/FEEDPARSER_0_5_0_RC1/ - copied from r157239, jakarta/commons/proper/feedparser/trunk/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157239 - jakarta/commons/proper/feedparser/trunk/xdocs/navigation.xml
Author: burton Date: Fri Mar 11 23:24:58 2005 New Revision: 157239 URL: http://svn.apache.org/viewcvs?view=rev&rev=157239 Log: xdocs updated with non proper ref Modified: jakarta/commons/proper/feedparser/trunk/xdocs/navigation.xml Modified: jakarta/commons/proper/feedparser/trunk/xdocs/navigation.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/xdocs/navigation.xml?view=diff&r1=157238&r2=157239 == --- jakarta/commons/proper/feedparser/trunk/xdocs/navigation.xml (original) +++ jakarta/commons/proper/feedparser/trunk/xdocs/navigation.xml Fri Mar 11 23:24:58 2005 @@ -21,7 +21,7 @@ href="http://wiki.apache.org/jakarta-commons/FeedParser"; /> http://svn.apache.org/viewcvs.cgi/jakarta/commons/sandbox/feedparser/trunk"; /> + href="http://svn.apache.org/viewcvs.cgi/jakarta/commons/proper/feedparser/"; /> &common-menus; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157238 - jakarta/commons/proper/feedparser/trunk/project.xml
Author: burton Date: Fri Mar 11 23:18:56 2005 New Revision: 157238 URL: http://svn.apache.org/viewcvs?view=rev&rev=157238 Log: Full support for compiling feedparser from maven Modified: jakarta/commons/proper/feedparser/trunk/project.xml Modified: jakarta/commons/proper/feedparser/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/project.xml?view=diff&r1=157237&r2=157238 == --- jakarta/commons/proper/feedparser/trunk/project.xml (original) +++ jakarta/commons/proper/feedparser/trunk/project.xml Fri Mar 11 23:18:56 2005 @@ -109,7 +109,7 @@ commons-httpclient -3.0-beta1 +3.0-rc1 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r157235 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java java/org/apache/commons/benchmark/BenchmarkUtils.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Fri Mar 11 22:28:59 2005 New Revision: 157235 URL: http://svn.apache.org/viewcvs?view=rev&rev=157235 Log: Ability to specify just a constructor now Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=157234&r2=157235 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Fri Mar 11 22:28:59 2005 @@ -108,19 +108,34 @@ /** * The current name of this benchmark. */ -private String name = null; +String name = null; /** * The current benchmark. */ -private BenchmarkTracker tracker1 = null; -private BenchmarkTracker tracker5 = null; -private BenchmarkTracker tracker15 = null; +BenchmarkTracker tracker1 = null; +BenchmarkTracker tracker5 = null; +BenchmarkTracker tracker15 = null; + +/** + * When benchmarks are created with a constructor we only store them as a + * valid benchmark when start/complete is called without a given operation. + */ +boolean registered = false; + +/** + * Create a benchmark for the current class as caller. + */ +public Benchmark() { + +this( getCallerClassname() ); + +} /** * Create a new benchmark with a given name. */ -private Benchmark( String name ) { +public Benchmark( String name ) { this.name = name; @@ -205,6 +220,8 @@ if ( DISABLED ) return; +doRegisterWhenNecessary(); + tracker1.start(); tracker5.start(); tracker15.start(); @@ -220,12 +237,21 @@ if ( DISABLED ) return; +doRegisterWhenNecessary(); + tracker1.complete(); tracker5.complete(); tracker15.complete(); } +private void doRegisterWhenNecessary() { + +if ( registered == false ) +benchmarks.put( name, this ); + +} + /** * Return a child benchmark of the current method. This can be used to * return a benchmark for a specific method based on a benchmark for a @@ -249,9 +275,19 @@ static String getCallerClassname() { Exception e = new Exception(); -String name = e.getStackTrace()[2].getClassName(); -return name; +StackTraceElement trace[] = e.getStackTrace(); + +for ( int i = 2; i < trace.length; ++i ) { + +String name = trace[i].getClassName(); + +if ( name.startsWith( "org.apache.commons.benchmark" ) == false ) +return name; + +} + +return null; } @@ -322,6 +358,7 @@ if ( benchmark == null ) { benchmark= new Benchmark( name ); benchmarks.put( name, benchmark ); +benchmark.registered = true; } return benchmark; Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java?view=auto&rev=157235 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java (added) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkUtils.java Fri Mar 11 22:28:59 2005 @@ -0,0 +1,87 @@ +/* + * 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.benchmark; + +import java.util.*; +import java.lang.reflect.*; + +/** + * +
svn commit: r157022 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java java/org/apache/commons/benchmark/BenchmarkTracker.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Thu Mar 10 17:15:53 2005 New Revision: 157022 URL: http://svn.apache.org/viewcvs?view=rev&rev=157022 Log: duration enabled via threadlocal and assertions that its only using required memory Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=157021&r2=157022 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Thu Mar 10 17:15:53 2005 @@ -98,7 +98,7 @@ * feature uses threadlocal variables so there's a constant overhead per * thread. */ -public static boolean DISABLE_LOCAL = true; +public static boolean DISABLE_LOCAL = false; /** * Maintain a metadata map between the name and BMeta classes. @@ -183,9 +183,19 @@ public String getName() { return name; } - + // implementation code for start/complete ** - + +public void start( String name ) { +Benchmark child = child( name ); +child.start(); +} + +public void complete( String name ) { +Benchmark child = child( name ); +child.complete(); +} + /** * Tell the benchmark that its has been started for this interval. * @@ -221,6 +231,7 @@ * return a benchmark for a specific method based on a benchmark for a * class. The resulting name will have parent#name semantics. * + * @deprecated use start( String ) completed( String ) * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton */ public Benchmark child( String name ) { Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=157021&r2=157022 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Thu Mar 10 17:15:53 2005 @@ -64,6 +64,11 @@ this.parent = parent; } +BenchmarkTracker rollover() { +rollover( System.currentTimeMillis() ); +return this; +} + /** * Do a physical rollover from now to -> last . * Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=157021&r2=157022 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Thu Mar 10 17:15:53 2005 @@ -33,6 +33,66 @@ super(testName); } +public void testThreads() throws Exception { + +int count = 100; + +ThreadGroup tg = new ThreadGroup( "foo" ); + +System.gc(); +long before = getUsedMemory(); + +for ( int i = 0; i < count; ++i ) { +TestThread tt = new TestThread( tg ); +tt.start(); +} + +while ( tg.activeCount() > 0 ) { + +System.out.print( "." ); +Thread.sleep( 100 ); + +} + +System.out.println(); + +System.gc(); +long after = getUsedMemory(); + +System.out.println( "Done thread test" ); + +//500k bytes is only 500 bytes per benchmark. We should try to thin +//this down a bit. I could do MUCH better I think. Maybe NOT keep +//references to strings? +long usedMemory = after - before; +System.out.println( "Total bytes used by benchmark: " + usedMemory ); +assertTrue( usedMemory < 500 * count ); + +} + +private long getUsedMemory() { +return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); +} + +public void
svn commit: r156745 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Wed Mar 9 22:19:40 2005 New Revision: 156745 URL: http://svn.apache.org/viewcvs?view=rev&rev=156745 Log: reverted to use '.' for methods and '#' for operations Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156744&r2=156745 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Wed Mar 9 22:19:40 2005 @@ -219,7 +219,7 @@ /** * Return a child benchmark of the current method. This can be used to * return a benchmark for a specific method based on a benchmark for a - * class. + * class. The resulting name will have parent#name semantics. * * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton */ @@ -231,6 +231,19 @@ // static code * +/** + * Get the name of the calling classname.. + * + */ +static String getCallerClassname() { + +Exception e = new Exception(); +String name = e.getStackTrace()[2].getClassName(); + +return name; + +} + public static Object getBenchmarkAsProxy( Object _instance, Class _interface ) { return BenchmarkProxyFactory.newBenchmarkFactory( _instance, _interface ); @@ -245,12 +258,11 @@ */ public static Benchmark getBenchmark() { -Exception e = new Exception(); -String name = e.getStackTrace()[1].getClassName(); +String name = getCallerClassname(); return getBenchmark( name ); } - + /** * Factory method for obtaining a benchmark by classname * @@ -263,12 +275,22 @@ * Create a benchmark on a the caller when performing a specific operation * on a given target object.. For example if your class is 'org.apache.Foo' * and the operation is 'bar' then the resulting benchmark name will be - * 'org.apache.Foo#bar'. + * 'org.apache.Foo#bar'. When the target is null the name of the caller is + * used. This means we won't throw an NPE and it also means we have similar + * operation to child(), */ public static Benchmark getBenchmark( Object target, String operation ) { -String name = target.getClass().getName() + "#" + operation; +String prefix = null; + +if ( target == null ) { +prefix = getCallerClassname(); +} else { +prefix = target.getClass().getName(); +} + +String name = prefix + "#" + operation; return getBenchmark( name ); Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156744&r2=156745 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Wed Mar 9 22:19:40 2005 @@ -38,7 +38,15 @@ Benchmark b = Benchmark.getBenchmark( this, "foo" ); assertEquals( "org.apache.commons.benchmark.Test1#foo", b.getName() ); - + +b = Benchmark.getBenchmark( null, "foo" ); + +assertEquals( "org.apache.commons.benchmark.Test1#foo", b.getName() ); + +b = Benchmark.getBenchmark( "string", "foo" ); + +assertEquals( "java.lang.String#foo", b.getName() ); + } //setup a test to verify that X benchmarks don't use more than Y - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156744 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Wed Mar 9 21:58:34 2005 New Revision: 156744 URL: http://svn.apache.org/viewcvs?view=rev&rev=156744 Log: ... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156743&r2=156744 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Wed Mar 9 21:58:34 2005 @@ -260,6 +260,21 @@ } /** + * Create a benchmark on a the caller when performing a specific operation + * on a given target object.. For example if your class is 'org.apache.Foo' + * and the operation is 'bar' then the resulting benchmark name will be + * 'org.apache.Foo#bar'. + */ +public static Benchmark getBenchmark( Object target, + String operation ) { + +String name = target.getClass().getName() + "#" + operation; + +return getBenchmark( name ); + +} + +/** * Factory method for obtaining a benchmark by name * */ Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156743&r2=156744 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Wed Mar 9 21:58:34 2005 @@ -33,7 +33,15 @@ super(testName); } -//FIXME: setup a test to verify that X benchmarks don't use more than Y +public void testBenchmarkWithCaller() { + +Benchmark b = Benchmark.getBenchmark( this, "foo" ); + +assertEquals( "org.apache.commons.benchmark.Test1#foo", b.getName() ); + +} + +//setup a test to verify that X benchmarks don't use more than Y //bytes of memory. public void testMemory() throws Exception { - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156739 - jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Wed Mar 9 20:05:53 2005 New Revision: 156739 URL: http://svn.apache.org/viewcvs?view=rev&rev=156739 Log: looks like I need 500 bytes of memory to to object overhead... need to thin that down... Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156738&r2=156739 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Wed Mar 9 20:05:53 2005 @@ -59,7 +59,10 @@ long usedMemory = after - before; -//500k bytes is only 500 bytes per benchmark. +//500k bytes is only 500 bytes per benchmark. We should try to thin +//this down a bit. I could do MUCH better I think. Maybe NOT keep +//references to strings? + System.out.println( "Total bytes used by benchmark: " + usedMemory ); assertTrue( usedMemory < 500 * count ); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156737 - jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Wed Mar 9 19:59:36 2005 New Revision: 156737 URL: http://svn.apache.org/viewcvs?view=rev&rev=156737 Log: looks like I need 500 bytes of memory to to object overhead... need to thin that down... Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156736&r2=156737 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Wed Mar 9 19:59:36 2005 @@ -38,6 +38,8 @@ public void testMemory() throws Exception { +System.gc(); + long before = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); int count = 1000; @@ -45,20 +47,25 @@ for ( int i = 0; i < count; ++i ) { Benchmark b = Benchmark.getBenchmark( "foo:" + i ); + b.start(); b.complete(); } +System.gc(); + long after = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); -//150k bytes is only 150 bytes per benchmark. -assertTrue( after < 150 * count ); +long usedMemory = after - before; -System.out.println( "total bytes used: " + (after-before) ); +//500k bytes is only 500 bytes per benchmark. +System.out.println( "Total bytes used by benchmark: " + usedMemory ); + +assertTrue( usedMemory < 500 * count ); Benchmark.benchmarks = new HashMap(); - +//Benchmark.benchmarks.clear(); } /** - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156736 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Wed Mar 9 19:49:44 2005 New Revision: 156736 URL: http://svn.apache.org/viewcvs?view=rev&rev=156736 Log: unit test to assert that memory usage is within acceptable limits... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156735&r2=156736 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Wed Mar 9 19:49:44 2005 @@ -103,7 +103,7 @@ /** * Maintain a metadata map between the name and BMeta classes. */ -public static HashMap benchmarks = new HashMap(); +static HashMap benchmarks = new HashMap(); /** * The current name of this benchmark. Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156735&r2=156736 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Wed Mar 9 19:49:44 2005 @@ -33,6 +33,34 @@ super(testName); } +//FIXME: setup a test to verify that X benchmarks don't use more than Y +//bytes of memory. + +public void testMemory() throws Exception { + +long before = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); + +int count = 1000; + +for ( int i = 0; i < count; ++i ) { + +Benchmark b = Benchmark.getBenchmark( "foo:" + i ); +b.start(); +b.complete(); + +} + +long after = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); + +//150k bytes is only 150 bytes per benchmark. +assertTrue( after < 150 * count ); + +System.out.println( "total bytes used: " + (after-before) ); + +Benchmark.benchmarks = new HashMap(); + +} + /** * Test out all XMLRPC methods...that we have exported. * - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156695 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java java/org/apache/commons/benchmark/BenchmarkTracker.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Wed Mar 9 14:01:29 2005 New Revision: 156695 URL: http://svn.apache.org/viewcvs?view=rev&rev=156695 Log: We were ALWAYS resetting the last metric which was really stupid... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156694&r2=156695 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Wed Mar 9 14:01:29 2005 @@ -157,7 +157,7 @@ * */ public BenchmarkTracker getTracker1() { -return tracker1.resetWhenNecessary(); +return tracker1.rolloverWhenNecessary(); } /** @@ -165,7 +165,7 @@ * */ public BenchmarkTracker getTracker5() { -return tracker5.resetWhenNecessary(); +return tracker5.rolloverWhenNecessary(); } /** @@ -173,7 +173,7 @@ * */ public BenchmarkTracker getTracker15() { -return tracker15.resetWhenNecessary(); +return tracker15.rolloverWhenNecessary(); } /** Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156694&r2=156695 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Wed Mar 9 14:01:29 2005 @@ -64,13 +64,18 @@ this.parent = parent; } -BenchmarkTracker reset( long currentTimeMillis ) { +/** + * Do a physical rollover from now to -> last . + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ +BenchmarkTracker rollover( long currentTimeMillis ) { //need to perform a swap and save the current benchmark. last = now; //if we've slept for too long we have to start fresh -if ( currentTimeMillis - last.timestamp > interval ) { +if ( currentTimeMillis - last.timestamp > (interval*2) ) { last.reset(); } @@ -86,15 +91,15 @@ } /** - * Reset stats if necessary. + * Rollover stats if necessary. */ -BenchmarkTracker resetWhenNecessary() { +BenchmarkTracker rolloverWhenNecessary() { long currentTimeMillis = System.currentTimeMillis(); if ( currentTimeMillis - now.timestamp > interval ) { - -reset( currentTimeMillis ); + +rollover( currentTimeMillis ); } @@ -113,7 +118,7 @@ //threads this is important. synchronized( MUTEX ) { -resetWhenNecessary(); +rolloverWhenNecessary(); ++now.started; doLocalStart(); @@ -129,7 +134,7 @@ synchronized( MUTEX ) { -resetWhenNecessary(); +rolloverWhenNecessary(); ++now.completed; doLocalCompleted(); Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156694&r2=156695 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Wed Mar 9 14:01:29 2005 @@ -40,6 +40,10 @@ */ public void testXmlrpc() throws Exception { +Benchmark.INTERVAL_1 = 1000; +Benchmark.INTERVAL_5 = 5000; +Benchmark.INTERVAL_15 = 15000; + WebServer webserver = new WebServer ( 2048 ); webserver.addHandler( "benchmark", @@ -63,7 +67,12 @@ assertEquals( 1, b.getTracker1().now.completed ); -b.getTracker1().reset( System.currentTimeMillis() ); +//this should sleep long enough to rollover interval1 + +System.out.println( "going to sleep&q
svn commit: r156693 - jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Wed Mar 9 13:49:05 2005 New Revision: 156693 URL: http://svn.apache.org/viewcvs?view=rev&rev=156693 Log: more test dox Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156692&r2=156693 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Wed Mar 9 13:49:05 2005 @@ -33,6 +33,11 @@ super(testName); } +/** + * Test out all XMLRPC methods...that we have exported. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ public void testXmlrpc() throws Exception { WebServer webserver = new WebServer ( 2048 ); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156691 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Wed Mar 9 13:45:54 2005 New Revision: 156691 URL: http://svn.apache.org/viewcvs?view=rev&rev=156691 Log: support for getting ALL benchmarks back over XMLRPC Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156690&r2=156691 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Wed Mar 9 13:45:54 2005 @@ -288,7 +288,7 @@ * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton */ public static Map getBenchmarks() { -return Collections.unmodifiableMap( benchmarks ); +return benchmarks; } // Object methods ** Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java?view=diff&r1=156690&r2=156691 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java Wed Mar 9 13:45:54 2005 @@ -74,7 +74,29 @@ } -public void addHashtableMetrics( Hashtable map, BenchmarkMeta meta, String prefix ) { +/** + * @see Benchmark.getBenchmarks() + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ +public Map getBenchmarks() { +Hashtable result = new Hashtable(); + +Iterator it = Benchmark.getBenchmarks().keySet().iterator(); + +while ( it.hasNext() ) { + +String key = (String)it.next(); + +Benchmark b = Benchmark.getBenchmark( key ); + +result.put( b.getName(), b.toString() ); + +} + +return result; +} + +private void addHashtableMetrics( Hashtable map, BenchmarkMeta meta, String prefix ) { map.put( prefix + "duration", new Double( meta.getDuration() ) ); map.put( prefix + "meanDuration", new Double( meta.getMeanDuration() ) ); @@ -82,19 +104,6 @@ map.put( prefix + "started", new Double( meta.getStarted() ) ); } - -/* - Add support for getting values back as a hashmap -duration1=N -duration5=N -duration15=N - -completed1=N -completed5=N -completed15=N - -*/ - } Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156690&r2=156691 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Wed Mar 9 13:45:54 2005 @@ -78,9 +78,12 @@ //now call getBenchmark on the service to get it back as a hashmap result = xmlrpc.execute ( "benchmark.getBenchmarkAsHashtable", params ); - System.out.println( "result: " + result ); - + +result = xmlrpc.execute ( "benchmark.getBenchmarks", new Vector() ); + +System.out.println( "benchmarks are now: " + result ); + } public void testDuration() throws Exception { - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156675 - jakarta/commons/sandbox/benchmark/trunk/benchmark.xml
Author: burton Date: Wed Mar 9 12:05:29 2005 New Revision: 156675 URL: http://svn.apache.org/viewcvs?view=rev&rev=156675 Log: benchmark.xml example/test/config Added: jakarta/commons/sandbox/benchmark/trunk/benchmark.xml Added: jakarta/commons/sandbox/benchmark/trunk/benchmark.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/benchmark.xml?view=auto&rev=156675 == --- jakarta/commons/sandbox/benchmark/trunk/benchmark.xml (added) +++ jakarta/commons/sandbox/benchmark/trunk/benchmark.xml Wed Mar 9 12:05:29 2005 @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156674 - in jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd: ./ BenchmarkSource.java ExampleRandomSource.java GraphTask.java GraphTaskRunner.java Main.java Source.java
Author: burton Date: Wed Mar 9 11:37:12 2005 New Revision: 156674 URL: http://svn.apache.org/viewcvs?view=rev&rev=156674 Log: new rrd logging and graphing infra Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/BenchmarkSource.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/ExampleRandomSource.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTaskRunner.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/Main.java (with props) jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/Source.java Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/BenchmarkSource.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/BenchmarkSource.java?view=auto&rev=156674 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/BenchmarkSource.java (added) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/BenchmarkSource.java Wed Mar 9 11:37:12 2005 @@ -0,0 +1,37 @@ +/* + * 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.benchmark.rrd; + +/** + * Represents an abstract datasource for an source for logging. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * @version $Id: $ + */ +public abstract class BenchmarkSource { + +String title = null; +String description = null; + +/** + * Get the current value for this counter. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ +public abstract long getValue() throws Exception; + +} \ No newline at end of file Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/ExampleRandomSource.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/ExampleRandomSource.java?view=auto&rev=156674 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/ExampleRandomSource.java (added) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/ExampleRandomSource.java Wed Mar 9 11:37:12 2005 @@ -0,0 +1,50 @@ +/* + * 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.benchmark.rrd; + +import java.util.*; + +/** + * Source which logs a random number between 0 and 100 for testing purposes. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + * @version $Id: $ + */ +public class ExampleRandomSource extends Source { + +private String foo = null; + +/** + * Get the current value for this counter. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ +public long getValue() throws Exception { + +Random r = new Random(); +return (long)(r.nextFloat() * 100F); +} + +public void setFoo( String foo ) { +this.foo = foo; +} + +public String getFoo() { +return foo; +} + +} \ No newline at end of file Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/rrd/GraphTask.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark
svn commit: r156673 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Wed Mar 9 11:36:41 2005 New Revision: 156673 URL: http://svn.apache.org/viewcvs?view=rev&rev=156673 Log: support for returning results as hashlists... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156672&r2=156673 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Wed Mar 9 11:36:41 2005 @@ -304,6 +304,9 @@ "," + "duration:" + getTracker1().now.getDuration() + +"," + +"meanDuration:" + +getTracker1().now.getMeanDuration() + ")" + " " + "last=(" + @@ -312,6 +315,12 @@ "," + "completed:" + getTracker1().last.getCompleted() + +"," + +"duration:" + +getTracker1().now.getDuration() + +"," + +"meanDuration:" + +getTracker1().now.getMeanDuration() + ")"; } Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java?view=diff&r1=156672&r2=156673 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java Wed Mar 9 11:36:41 2005 @@ -54,5 +54,47 @@ .getTracker1().getLast().getMeanDuration() ); } +public Hashtable getBenchmarkAsHashtable( String name ) { + +Benchmark benchmark = Benchmark.getBenchmark( name ); + +if ( benchmark == null ) +return null; + +Hashtable map = new Hashtable(); + +//map.put( "1min.now.duration", new Double( benchmark.getTracker1().getNow().duration ) ); +//map.put( "1min.last.duration", new Double( benchmark.getTracker1().getNow().duration ) ); + +addHashtableMetrics( map, benchmark.getTracker1().getLast(), "1min.last." ); +addHashtableMetrics( map, benchmark.getTracker5().getLast(), "5min.last." ); +addHashtableMetrics( map, benchmark.getTracker15().getLast(), "15min.last." ); + +return map; + +} + +public void addHashtableMetrics( Hashtable map, BenchmarkMeta meta, String prefix ) { + +map.put( prefix + "duration", new Double( meta.getDuration() ) ); +map.put( prefix + "meanDuration", new Double( meta.getMeanDuration() ) ); +map.put( prefix + "completed", new Double( meta.getCompleted() ) ); +map.put( prefix + "started", new Double( meta.getStarted() ) ); + +} + +/* + Add support for getting values back as a hashmap + +duration1=N +duration5=N +duration15=N + +completed1=N +completed5=N +completed15=N + +*/ + } Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156672&r2=156673 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Wed Mar 9 11:36:41 2005 @@ -33,8 +33,6 @@ super(testName); } -//FIXME: test with using really short intervals but with diff values. - public void testXmlrpc() throws Exception { WebServer webserver = new WebServer ( 2048 ); @@ -76,9 +74,15 @@ Object result = xmlrpc.execute ( "benchmark.getLastCompleted", params
svn commit: r156586 - in jakarta/commons/sandbox/benchmark/trunk: project.xml src/java/org/apache/commons/benchmark/Benchmark.java src/test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Tue Mar 8 16:09:49 2005 New Revision: 156586 URL: http://svn.apache.org/viewcvs?view=rev&rev=156586 Log: refactored test to use clear instad of reset... tests for xmlrpc daemon support Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/project.xml?view=diff&r1=156585&r2=156586 == --- jakarta/commons/sandbox/benchmark/trunk/project.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/project.xml Tue Mar 8 16:09:49 2005 @@ -61,6 +61,11 @@ 1.7.0 + +xmlrpc +1.2-b1 + + jrobin1.4.0 Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156585&r2=156586 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Tue Mar 8 16:09:49 2005 @@ -124,7 +124,7 @@ this.name = name; -reset(); +clear(); } @@ -133,7 +133,7 @@ * * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton */ -void reset() { +void clear() { tracker1 = new BenchmarkTracker( INTERVAL_1, this ); tracker5 = new BenchmarkTracker( INTERVAL_5, this ); @@ -146,7 +146,7 @@ /** * Get the tracker for this benchmark which includes all metadata related to * this benchmark including total completed/started and current values. - * + * */ public BenchmarkTracker getTracker() { return getTracker1(); Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156585&r2=156586 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Tue Mar 8 16:09:49 2005 @@ -16,6 +16,11 @@ package org.apache.commons.benchmark; +import org.apache.commons.benchmark.*; +import org.apache.commons.benchmark.xmlrpc.*; + +import org.apache.xmlrpc.*; + import junit.framework.*; import java.util.*; @@ -30,6 +35,50 @@ //FIXME: test with using really short intervals but with diff values. +public void testXmlrpc() throws Exception { + +WebServer webserver = new WebServer ( 2048 ); + +webserver.addHandler( "benchmark", + new BenchmarkHandler() ); + +// deny all clients +webserver.setParanoid ( true ); +// allow local access +webserver.acceptClient ( "10.*.*.*" ); +webserver.acceptClient ( "127.*.*.*" ); + +webserver.start(); + +Thread.sleep( 100 ); + +//create a faux benchmark + +Benchmark b = Benchmark.getBenchmark( "foo" ); +b.start(); +b.complete(); + +assertEquals( 1, b.getTracker1().now.completed ); + +b.getTracker1().reset( System.currentTimeMillis() ); + +//FIXME: this isn't working. +assertEquals( 0, b.getTracker1().now.completed ); +assertEquals( 1, b.getTracker1().last.completed ); + +String router = "http://localhost:2048/RPC2";; + +XmlRpcClient xmlrpc = new XmlRpcClient ( router ); + +Vector params = new Vector (); +params.add( "foo" ); + +Object result = xmlrpc.execute ( "benchmark.getLastCompleted", params ); + +assertEquals( new Double( 1 ), result ); + +} + public void testDuration() throws Exception { Benchmark.DISABLE_LOCAL = false; @@ -59,7 +108,7 @@ assertTrue( 100 < meanDuration ); assertTrue( 200 > meanDuration ); -benchmark.reset(); +benchmark.clear(); } @@ -91,7 +140,7 @@ assertEquals( 0, benchmark.getTracker1().now.getCompleted() ); assertEquals( 0, benchmark.getTracker1().now.getDuration() ); -benchmark.reset(); +benchm
svn commit: r156585 - in jakarta/commons/sandbox/benchmark/trunk: project.xml src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java xdocs/index.xml
Author: burton Date: Tue Mar 8 15:25:39 2005 New Revision: 156585 URL: http://svn.apache.org/viewcvs?view=rev&rev=156585 Log: 0.0.4... xmlrpc refactor Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/project.xml?view=diff&r1=156584&r2=156585 == --- jakarta/commons/sandbox/benchmark/trunk/project.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/project.xml Tue Mar 8 15:25:39 2005 @@ -15,7 +15,7 @@ Jakarta Benchmark -0.0.3 +0.0.4 org.apache.commons.benchmark Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java?view=diff&r1=156584&r2=156585 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java Tue Mar 8 15:25:39 2005 @@ -29,16 +29,29 @@ * @version $Id: BenchmarkHandler.java,v 1.5 2005/03/04 00:31:08 burton Exp $ */ public class BenchmarkHandler { + +//FIXME: I think this needs to be refactored due to the getTracker1() code. +//I should be able to specify time here. -public Double getLastStarted( String name, int interval ) { +public Double getLastStarted( String name ) { return new Double( Benchmark.getBenchmark( name ) .getTracker1().getLast().getStarted() ); } -public Double getLastCompleted( String name, int interval ) { +public Double getLastCompleted( String name ) { return new Double( Benchmark.getBenchmark( name ) .getTracker1().getLast().getCompleted() ); +} + +public Double getLastDuration( String name ) { +return new Double( Benchmark.getBenchmark( name ) + .getTracker1().getLast().getDuration() ); +} + +public Double getLastMeanDuration( String name ) { +return new Double( Benchmark.getBenchmark( name ) + .getTracker1().getLast().getMeanDuration() ); } } Modified: jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml?view=diff&r1=156584&r2=156585 == --- jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Tue Mar 8 15:25:39 2005 @@ -24,7 +24,43 @@ developers can write frontends to monitor application performance. - + + +Of course one approach is to use a Java profiler (and many +exist) but profilers suffer a number of fatal problems: + + + + +Slow + + +Most java profilers are slow due to profiling of ALL method +calls or allocation points. This is a fatal flaw of their +design not their implementation. Since they don't know what +they're looking for they essentially have to look for +everything.. + + + +Require a LOT of memory + +Crash + +Not always enabled + + +Benchmarks are designed to run in always on mode +where collection of performance data has a negligible impact +on the VM. Most profilers on the other hand are not +designed to do this and often cause significant resource +restraints. + + +Proprietary + + + Infrasture code such as rrdtool, ganglia, and jrobin, provide the foundation to view the data and commons benchmarks provides @@ -177,6 +213,72 @@ gmetric script. Slight configuration is required in order to specify the multicast channel, port, cluster name, ec. + + + + + + +The benchmark API is designed to be very lightweight but +depe
svn commit: r156579 - in jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser: AtomFeedParser.java BaseParser.java RSSFeedParser.java
Author: burton Date: Tue Mar 8 15:05:22 2005 New Revision: 156579 URL: http://svn.apache.org/viewcvs?view=rev&rev=156579 Log: Fixed bug with doLocale passing in a null element... Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java?view=diff&r1=156578&r2=156579 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java Tue Mar 8 15:05:22 2005 @@ -306,6 +306,10 @@ */ private static String getXMLOfContent( List content ) { +//NOTE: Fri Mar 04 2005 03:59 PM ([EMAIL PROTECTED]): in my profiling I +//found that this is a BIG memory allocater. FIXME: We SHOULD be able +//to do the same thing we do for xhtml:body RIGHT? + StringBuffer buff = new StringBuffer( 1 ); XMLOutputter outputter = new XMLOutputter( "", true ); Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java?view=diff&r1=156578&r2=156579 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java Tue Mar 8 15:05:22 2005 @@ -45,7 +45,10 @@ protected static void doLocale( FeedParserState state, FeedParserListener listener, Element element ) throws Exception { - + +if ( element == null ) +return; + if ( state.metaFeedParserlistener == null ) return; @@ -66,6 +69,9 @@ FeedParserListener listener, Element element ) throws Exception { + +if ( element == null ) +return; if ( state.metaFeedParserlistener == null ) return; Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java?view=diff&r1=156578&r2=156579 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java Tue Mar 8 15:05:22 2005 @@ -63,6 +63,7 @@ XPath xpath = new XPath( "/descendant::*[local-name() = 'channel']" ); Element channel = (Element)xpath.selectSingleNode( doc ); state.current = channel; + doLocale( state, listener, channel ); doChannel( listener, state ); doLocaleEnd( state, listener, channel ); @@ -213,6 +214,9 @@ if ( encoded != null ) { +//FIXME: move to the onContent API defined within the +//AtomFeedParser and deprecated this body handling. + mcpl.onContentEncoded( new FeedParserState( encoded ), encoded.getText() ); @@ -230,6 +234,9 @@ .getChild( "item", NS.CONTENT ) .getChild( "value", NS.RDF ); +//FIXME: move to the onContent API defined within the +//AtomFeedParser and deprecated this body handling. + mcpl.onContentItem( new FeedParserState( value ), null, null, @@ -251,6 +258,9 @@ Element body = state.current.getChild( "body", NS.XHTML ); +//FIXME: move to the onContent API defined within the AtomFeedParser +//and deprecated this body handling. + if ( body != null ) {
svn commit: r156391 - in jakarta/commons/sandbox/benchmark/trunk: ./ src/java/org/apache/commons/benchmark/ src/java/org/apache/commons/benchmark/xmlrpc/ src/test/org/apache/commons/benchmark/ xdocs/
Author: burton Date: Sun Mar 6 20:44:38 2005 New Revision: 156391 URL: http://svn.apache.org/viewcvs?view=rev&rev=156391 Log: refactored to store individual metadata into a class Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkMeta.java Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/project.xml?view=diff&r1=156390&r2=156391 == --- jakarta/commons/sandbox/benchmark/trunk/project.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/project.xml Sun Mar 6 20:44:38 2005 @@ -15,7 +15,7 @@ Jakarta Benchmark -0.0.2 +0.0.3 org.apache.commons.benchmark @@ -55,6 +55,13 @@ + + +commons-beanutils +1.7.0 + + +jrobin1.4.0 xml-apis2.0.2 Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156390&r2=156391 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Sun Mar 6 20:44:38 2005 @@ -144,22 +144,6 @@ // metadata about this benchmark *** /** - * The total number of start()ed benchmarks since in the last rollover. - * @deprecated - */ -public long getTotalStarted() { -return tracker1.lastStarted; -} - -/** - * The total number of complete()ed benchmarks since in the last rollover. - * @deprecated - */ -public long getTotalCompleted() { -return tracker1.lastCompleted; -} - -/** * Get the tracker for this benchmark which includes all metadata related to * this benchmark including total completed/started and current values. * @@ -313,63 +297,23 @@ return "1min: " + "now=(" + "started:" + -getTracker1().getStarted() + +getTracker1().now.getStarted() + "," + "completed:" + -getTracker1().getCompleted() + +getTracker1().now.getCompleted() + "," + "duration:" + -getTracker1().getDuration() + +getTracker1().now.getDuration() + ")" + " " + "last=(" + "started:" + -getTracker1().getLastStarted() + +getTracker1().last.getStarted() + "," + "completed:" + -getTracker1().getLastCompleted() + +getTracker1().last.getCompleted() + ")"; -} - -// test code *** - -/** - * Quick benchmark code testing. - */ -public static void main( String[] args ) throws Exception { - -//FIXME: we should also support benchmarking of code regions and whether -//we're IN a code region. That would be interesting to. Have a bunch -//of start() complete() methods and then I could benchmark how many are -//open at a given time. -// -// This would support total number of completed operations and total -// number of pending operations within a given timeframe. - -//simple testing framework - -INTERVAL_1 = 10 * 1000; - -Benchmark benchmark = getBenchmark( Benchmark.class ); -benchmark = benchmark.child( "main" ); - -System.out.println( "name: " + benchmark.getName() ); - -for ( int i = 0; i < 60; ++i ) { - -benchmark.start(); - -//do something slow... -Thread.sleep( INTERVAL_1 + 10 ); - -benchmark.complete(); - -System.out.println( "started: " + benchmark.getTotalStarted() )
Benchmark sandbox site updated...
Hey guys. I had some time this weekend to spend more time working on the benchmark project I started in the sandbox. Its coming along nicely and I pushed a version of the xdocs to the site: http://jakarta.apache.org/commons/sandbox/benchmark/ Wanted to see what you guys thought. The core benchmarking code is really robust and I'm trying to get the API as solid as possible ASAP. I have one more refactor to do WRT rollover of the last logged stable metic and the current pending metric. I also have some XMLRPC initialization code that I want to move into SVN and finish up a daemon I have that uses jrobin to build histographs. http://www.jrobin.org/ All of this should tie in really nicely I think and make a really solid and simple benchmarking package in the spirit of log4j. Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156285 - in jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark: Benchmark.java BenchmarkTracker.java xmlrpc/ xmlrpc/BenchmarkHandler.java
Author: burton Date: Sat Mar 5 14:52:41 2005 New Revision: 156285 URL: http://svn.apache.org/viewcvs?view=rev&rev=156285 Log: XMLRPC handler for fetching benchmarks from a remote VM Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156284&r2=156285 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Sat Mar 5 14:52:41 2005 @@ -96,7 +96,7 @@ * We support keeping track of local values between start/complete such as * duration. We can disable this for additional throughput. Enabling this * feature uses threadlocal variables so there's a constant overhead per - * thread. + * thread. */ public static boolean DISABLE_LOCAL = true; @@ -311,15 +311,22 @@ public String toString() { return "1min: " + -"current=(" + +"now=(" + +"started:" + getTracker1().getStarted() + "," + +"completed:" + getTracker1().getCompleted() + +"," + +"duration:" + +getTracker1().getDuration() + ")" + " " + "last=(" + +"started:" + getTracker1().getLastStarted() + "," + +"completed:" + getTracker1().getLastCompleted() + ")"; Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156284&r2=156285 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Sat Mar 5 14:52:41 2005 @@ -251,6 +251,10 @@ } +/** + * Threadlocal which hold BenchmarkThreadLocalClosures. + * + */ class BenchmarkThreadLocal extends ThreadLocal { public Object initialValue() { Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java?view=auto&rev=156285 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java (added) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/xmlrpc/BenchmarkHandler.java Sat Mar 5 14:52:41 2005 @@ -0,0 +1,53 @@ +/* + * 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.benchmark.xmlrpc; + +import java.io.*; +import java.util.*; +import java.net.*; + +import org.apache.commons.benchmark.*; + +/** + * Jakarta XMLRPC handler for working and fetching benchmarks from a remote VM. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton (burtonator) + * @version $Id: BenchmarkHandler.java,v 1.5 2005/03/04 00:31:08 burton Exp $ + */ +public class BenchmarkHandler { + +public Double getTotalStarted( String name ) { +return new Double( Benchmark.getBench
svn commit: r156202 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java java/org/apache/commons/benchmark/BenchmarkTracker.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Fri Mar 4 14:19:35 2005 New Revision: 156202 URL: http://svn.apache.org/viewcvs?view=rev&rev=156202 Log: support for benchmarking duration... disabled for right now until I can benchmark the benchmark code... I want to make sure it doesn't slow down the system much. Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156201&r2=156202 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Fri Mar 4 14:19:35 2005 @@ -91,6 +91,14 @@ * performance overhead zero. */ public static boolean DISABLED = false; + +/** + * We support keeping track of local values between start/complete such as + * duration. We can disable this for additional throughput. Enabling this + * feature uses threadlocal variables so there's a constant overhead per + * thread. + */ +public static boolean DISABLE_LOCAL = true; /** * Maintain a metadata map between the name and BMeta classes. Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156201&r2=156202 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Fri Mar 4 14:19:35 2005 @@ -63,6 +63,15 @@ public long completed = 0; /** + * The total amount of time (in milliseconds) that threads have spent + * between start() and complete() methods. Note that mean duration can be + * computed by duration / completed. + */ +public long duration = 0; + +// Last variables after the rollover *** + +/** * Value getTotalStarted */ public long lastStarted = 0; @@ -73,6 +82,11 @@ public long lastCompleted = 0; /** + * Keep track of duration. + */ +private static BenchmarkThreadLocal threadlocal = new BenchmarkThreadLocal(); + +/** * * Create a new BenchmarkTracker instance. */ @@ -134,6 +148,8 @@ resetWhenNecessary(); ++started; +doLocalStart(); + } } @@ -148,10 +164,43 @@ resetWhenNecessary(); ++completed; +doLocalCompleted(); + } } +void doLocalStart() { + +if ( Benchmark.DISABLE_LOCAL ) +return; + +BenchmarkThreadLocalClosure closure = getClosure(); + +closure.startedTimeMillis = System.currentTimeMillis(); + +} + +void doLocalCompleted() { + +if ( Benchmark.DISABLE_LOCAL ) +return; + +BenchmarkThreadLocalClosure closure = getClosure(); + +closure.completedTimeMillis = System.currentTimeMillis(); + +duration += closure.completedTimeMillis - closure.startedTimeMillis; + +} + +/** + * Get the lexical closure for this benchmark. + */ +BenchmarkThreadLocalClosure getClosure() { +return (BenchmarkThreadLocalClosure)threadlocal.get(); +} + // metadata /** @@ -190,4 +239,38 @@ return completed; } -} \ No newline at end of file +public long getDuration() { +return duration; +} + +public long getMeanDuration() { + +return duration > 0 ? duration / completed : 0; + +} + +} + +class BenchmarkThreadLocal extends ThreadLocal { + +public Object initialValue() { +return new BenchmarkThreadLocalClosure(); +} + +} + +/** + * We keep one threadlocal variable per tracker but we keep the data in a + * lexical closure so that we don't have to have multiple thread locals each + * with dedicated objects. + */ +class BenchmarkThreadLocalClosure { + +/** + * The time (in millis) that this benchmark was started. + */ +
svn commit: r156147 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java java/org/apache/commons/benchmark/BenchmarkTracker.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Fri Mar 4 01:18:36 2005 New Revision: 156147 URL: http://svn.apache.org/viewcvs?view=rev&rev=156147 Log: bug fix for long timeouts with benchmarks Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156146&r2=156147 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Fri Mar 4 01:18:36 2005 @@ -61,6 +61,7 @@ * * * + * * The method overhead is very light. One a modern machine you can perform about * 1M benchmarks per second. For code thats only called a few thousand times * you won't notice any performance overhead. @@ -325,8 +326,8 @@ //FIXME: we should also support benchmarking of code regions and whether //we're IN a code region. That would be interesting to. Have a bunch -//of start() complete() methods and then I could benchmark how many are open -//at a given time. +//of start() complete() methods and then I could benchmark how many are +//open at a given time. // // This would support total number of completed operations and total // number of pending operations within a given timeframe. Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156146&r2=156147 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Fri Mar 4 01:18:36 2005 @@ -84,9 +84,16 @@ BenchmarkTracker reset( long now ) { //need to perform a swap and save the current benchmark. + lastStarted = started; lastCompleted = completed; - + +//if we've slept for too long we have to start fresh +if ( now - timestamp > interval ) { +lastStarted = 0; +lastCompleted = 0; +} + //reset the benchmark timestamp = now; started = 0; Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156146&r2=156147 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Fri Mar 4 01:18:36 2005 @@ -30,10 +30,39 @@ //FIXME: test with using really short intervals but with diff values. +public void testLongSleep() throws Exception { + +// - Potential bug. If we don't log anything > 5 minutes the LAST benchmark +// will be rotated. I actually have to check if the last benchmark was more +// than INTERVAL ago and if so then delete the last benchmark + +// - A unit test for this would be easy... I'd just have to sleep TWICE. + +//this is cheating a bit. We set the intervals smaller so that we can +//get through the tests quickly +Benchmark.INTERVAL_1 = 1000; +Benchmark.INTERVAL_5 = 5000; +Benchmark.INTERVAL_15 = 15000; + +Benchmark benchmark = Benchmark.getBenchmark( Test1.class ); +benchmark = benchmark.child( "testLongSleep" ); + +benchmark.start(); +benchmark.complete(); + +Thread.sleep( 1000 ); +Thread.sleep( 1000 ); + +assertEquals( 0, benchmark.getTracker1().getStarted() ); +assertEquals( 0, benchmark.getTracker1().getLastStarted() ); + +benchmark.reset(); + +} + public void testList() throws Exception { List list = new LinkedList(); - list = (List)Benchmark.getBenchmarkAsProxy( list, List.class ); list.add( "hello" ); @
svn commit: r156142 - in jakarta/commons/sandbox/benchmark/trunk: src/java/org/apache/commons/benchmark/Benchmark.java src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java src/test/org/apache/commons/benchmark/Test1.java xdocs/index.xml
Author: burton Date: Fri Mar 4 00:26:54 2005 New Revision: 156142 URL: http://svn.apache.org/viewcvs?view=rev&rev=156142 Log: tests for using List... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156141&r2=156142 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Fri Mar 4 00:26:54 2005 @@ -301,7 +301,7 @@ // Object methods ** public String toString() { -return "1: " + +return "1min: " + "current=(" + getTracker1().getStarted() + "," + Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java?view=diff&r1=156141&r2=156142 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java Fri Mar 4 00:26:54 2005 @@ -22,6 +22,13 @@ public class BenchmarkProxyFactory { +// public static Object newBenchmarkFactory( Class _instance, +// Class _interface ) { + +// return newBenchmarkFactory( _instance.newInstance(), _interface ); + +// } + public static Object newBenchmarkFactory( Object _instance, Class _interface ) { Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156141&r2=156142 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Fri Mar 4 00:26:54 2005 @@ -18,6 +18,8 @@ import junit.framework.*; +import java.util.*; + /** */ public class Test1 extends TestCase { @@ -27,6 +29,23 @@ } //FIXME: test with using really short intervals but with diff values. + +public void testList() throws Exception { + +List list = new LinkedList(); + +list = (List)Benchmark.getBenchmarkAsProxy( list, List.class ); + +list.add( "hello" ); +list.add( "world" ); +list.iterator(); + +Benchmark benchmark = Benchmark.getBenchmark( "java.util.List.iterator" ); +assertNotNull( benchmark ); + +System.out.println( Benchmark.getBenchmarks() ); + +} public void testProxy() throws Exception { Modified: jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml?view=diff&r1=156141&r2=156142 == --- jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Fri Mar 4 00:26:54 2005 @@ -65,6 +65,30 @@ overhead. + + + + + + + +We also support so-called proxy benchmarks which can benchmark +every method of a given class. The only requirements are that +the class be backed by an interface. + + + + +IFoo foo = new Foo(); + +foo = (IFoo)Benchmark.getBenchmarkAsProxy( foo, IFoo.class ); + +foo.doSomething(); + +Benchmark benchmark = Benchmark.getBenchmark( "org.apache.commons.benchmark.IFoo.doSomething" ); + + +
svn commit: r156141 - jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java
Author: burton Date: Fri Mar 4 00:12:39 2005 New Revision: 156141 URL: http://svn.apache.org/viewcvs?view=rev&rev=156141 Log: removed getTracker code which passed an interval Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156140&r2=156141 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Fri Mar 4 00:12:39 2005 @@ -156,52 +156,33 @@ * */ public BenchmarkTracker getTracker() { -return getTracker( INTERVAL_1 ); +return getTracker1(); } +/** + * Get the tracker with a 1 minute interval. + * + */ public BenchmarkTracker getTracker1() { return tracker1.resetWhenNecessary(); } +/** + * Get the tracker with a 5 minute interval. + * + */ public BenchmarkTracker getTracker5() { return tracker5.resetWhenNecessary(); } +/** + * Get the tracker with a 15 minute interval. + * + */ public BenchmarkTracker getTracker15() { return tracker15.resetWhenNecessary(); } -/** - * Get a tracker with a given interval. When the tracker with an interval - * isn't registered we return null. Note that we're very flexible with the - * interval here. When the value is less than 1000 we assume the user is - * specifying minutes and we do the conversion. This way your code can - * simply call getInterval( 15 ) which is much easier to read instead of - * calling getInterval( 90 ) (which is 15 minutes in millis). - * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton - ' */ -public BenchmarkTracker getTracker( int interval ) { - -if ( interval < 1000 ) { -//the user is trying to specify the interval in minutes not in millis. - -interval = interval * 60 * 1000; - -} - -if ( interval == INTERVAL_1 ) { -return tracker1.resetWhenNecessary(); -} else if ( interval == INTERVAL_5 ) { -return tracker5.resetWhenNecessary(); -} else if ( interval == INTERVAL_15 ) { -return tracker15.resetWhenNecessary(); -} - -return null; - -} - /** * Get the name of this benchmark. Usually the classname or method name of * the caller. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156140 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java java/org/apache/commons/benchmark/proxy/ java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Fri Mar 4 00:01:11 2005 New Revision: 156140 URL: http://svn.apache.org/viewcvs?view=rev&rev=156140 Log: Support for proxy benchmarks Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156139&r2=156140 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Fri Mar 4 00:01:11 2005 @@ -16,6 +16,8 @@ package org.apache.commons.benchmark; +import org.apache.commons.benchmark.proxy.*; + import java.util.*; /** @@ -252,9 +254,15 @@ return getBenchmark( this.name + "." + name ); } - + // static code * +public static Object getBenchmarkAsProxy( Object _instance, Class _interface ) { + +return BenchmarkProxyFactory.newBenchmarkFactory( _instance, _interface ); + +} + /** * Factory method for obtaining a benchmark. This method uses the callers * classname by performing a quick stack analysis. Note that this is slow @@ -300,6 +308,33 @@ } +/** + * Return a map of all known benchmarks. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ +public static Map getBenchmarks() { +return Collections.unmodifiableMap( benchmarks ); +} + +// Object methods ** + +public String toString() { +return "1: " + +"current=(" + +getTracker1().getStarted() + +"," + +getTracker1().getCompleted() + +")" + +" " + +"last=(" + +getTracker1().getLastStarted() + +"," + +getTracker1().getLastCompleted() + +")"; + +} + // test code *** /** Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java?view=auto&rev=156140 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java (added) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/proxy/BenchmarkProxyFactory.java Fri Mar 4 00:01:11 2005 @@ -0,0 +1,66 @@ +/* + * 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.benchmark.proxy; + +import org.apache.commons.benchmark.*; + +import java.lang.reflect.*; + +public class BenchmarkProxyFactory { + +public static Object newBenchmarkFactory( Object _instance, + Class _interface ) { + +Object proxy = Proxy.newProxyInstance( _interface.getClassLoader(), + new Class[] { _interface }, + new BenchmarkInvocationHandler( _instance ) ); + +return proxy; + +} + +} + +class BenchmarkInvocationHandler implements InvocationHandler { + +private Object target = null; + +public BenchmarkInvocationHandler( Object target ) { +this.target = target; +} + +public Object invoke( Object proxy, Me
svn commit: r156138 - in jakarta/commons/sandbox/benchmark/trunk: project.xml xdocs/index.xml
Author: burton Date: Thu Mar 3 22:44:31 2005 New Revision: 156138 URL: http://svn.apache.org/viewcvs?view=rev&rev=156138 Log: more dox Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/project.xml?view=diff&r1=156137&r2=156138 == --- jakarta/commons/sandbox/benchmark/trunk/project.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/project.xml Thu Mar 3 22:44:31 2005 @@ -1,8 +1,6 @@ -../commons-build/sandbox-project.xml - Commons Benchmark commons-benchmark @@ -20,7 +18,19 @@ 0.0.2 org.apache.commons.benchmark - + + +Apache Software Foundation +http://jakarta.apache.org/ +http://jakarta.apache.org/images/jakarta-logo.gif + + +jakarta.apache.org + /www/jakarta.apache.org/commons/sandbox/benchmark + +/www/jakarta.apache.org/builds/jakarta-commons/sandbox/benchmark + + Modified: jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml?view=diff&r1=156137&r2=156138 == --- jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml Thu Mar 3 22:44:31 2005 @@ -48,22 +48,47 @@ try { -benchmark.start(); +benchmark.start(); -//do something expensive +//do something expensive } finally { -benchmark.complete(); +benchmark.complete(); } - + -The method overhead is very light. One a modern machine you can -perform about 1M benchmarks per second. For code thats only -called a few thousand times you won't notice any performance -overhead. + The method overhead is very light. One a modern machine you can + perform about 1M benchmarks per second. For code thats only + called a few thousand times you won't notice any performance + overhead. + + + + + + +Java (and UNIX) has for a long time lacked the equivalent (for +the most part) of Windows perfmon. While perfmon was by no +means perfect the goals were admirable. Developers could export +simple statistics from their application and perfmon could +introspect the values and graph them. + + + +With commons benchmark we can provide similar functionality by +allowing developers to export statistics and then tool +developers can write frontends to monitor application +performance. + + + +Infrasturre code such as rrdtool, ganglia, and jrobin, provide +the foundation to view the data and commons benchmarks provides +a way to get at the data. + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156135 - in jakarta/commons/sandbox/benchmark/trunk: src/java/org/apache/commons/benchmark/Benchmark.java src/java/org/apache/commons/benchmark/BenchmarkTracker.java xdocs/ xdocs/index.xml xdocs/navigation.xml
Author: burton Date: Thu Mar 3 22:04:17 2005 New Revision: 156135 URL: http://svn.apache.org/viewcvs?view=rev&rev=156135 Log: benchmark xdocs Added: jakarta/commons/sandbox/benchmark/trunk/xdocs/ jakarta/commons/sandbox/benchmark/trunk/xdocs/index.xml jakarta/commons/sandbox/benchmark/trunk/xdocs/navigation.xml Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156134&r2=156135 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Thu Mar 3 22:04:17 2005 @@ -134,16 +134,18 @@ /** * The total number of start()ed benchmarks since in the last rollover. + * @deprecated */ public long getTotalStarted() { -return tracker1.totalStarted; +return tracker1.lastStarted; } /** * The total number of complete()ed benchmarks since in the last rollover. + * @deprecated */ public long getTotalCompleted() { -return tracker1.totalCompleted; +return tracker1.lastCompleted; } /** @@ -153,6 +155,18 @@ */ public BenchmarkTracker getTracker() { return getTracker( INTERVAL_1 ); +} + +public BenchmarkTracker getTracker1() { +return tracker1.resetWhenNecessary(); +} + +public BenchmarkTracker getTracker5() { +return tracker5.resetWhenNecessary(); +} + +public BenchmarkTracker getTracker15() { +return tracker15.resetWhenNecessary(); } /** Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156134&r2=156135 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Thu Mar 3 22:04:17 2005 @@ -19,8 +19,11 @@ import java.util.*; /** - * - * Handles physically tracking each benchmark and handling rollover. + * Handles physically tracking each benchmark and handling rollover. Note + * that this class is MUTABLE so if you're working with it and additional + * threads are calling start/complete the values will change. This is normally + * fine but if you're trying to perform some type of benchmark analsis then you + * shouldn't hold on to the tracker long. * * @author mailto:[EMAIL PROTECTED]">Kevin Burton * @version $Id: Benchmark.java,v 1.3 2005/02/16 02:28:09 burton Exp $ @@ -49,25 +52,25 @@ /** * The current number of "started" benchmarks. This can be analyzed at - * runtime but its recommended that you use totalCompleted, totalStarted + * runtime but its recommended that you use lastCompleted, lastStarted */ public long started = 0; /** * The current number of "completed" benchmarks. This can be analyzed at - * runtime but its recommended that you use totalCompleted, totalStarted + * runtime but its recommended that you use lastCompleted, lastStarted */ public long completed = 0; /** * Value getTotalStarted */ -public long totalStarted = 0; +public long lastStarted = 0; /** * Value getTotalCompleted */ -public long totalCompleted = 0; +public long lastCompleted = 0; /** * @@ -81,8 +84,8 @@ BenchmarkTracker reset( long now ) { //need to perform a swap and save the current benchmark. -totalStarted = started; -totalCompleted = completed; +lastStarted = started; +lastCompleted = completed; //reset the benchmark timestamp = now; @@ -146,16 +149,26 @@ /** * The total number of start()ed benchmarks since in the last rollover. + * @deprecated */ public long getTotalStarted() { -return totalStarted; +return lastStarted; } /** * The total number of complete()ed benchmarks since in the last rollover. + * @deprecated */ public long getTotalCompleted() { -return totalCompleted; +r
svn commit: r156110 - jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Thu Mar 3 16:20:57 2005 New Revision: 156110 URL: http://svn.apache.org/viewcvs?view=rev&rev=156110 Log: interval reset code... reading should be consistent Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156109&r2=156110 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Thu Mar 3 16:20:57 2005 @@ -30,6 +30,8 @@ public void testIntervalReset() throws Exception { +//this is cheating a bit. We set the intervals smaller so that we can +//get through the tests quickly Benchmark.INTERVAL_1 = 1000; Benchmark.INTERVAL_5 = 5000; Benchmark.INTERVAL_15 = 15000; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156108 - jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Thu Mar 3 16:17:18 2005 New Revision: 156108 URL: http://svn.apache.org/viewcvs?view=rev&rev=156108 Log: interval reset code... reading should be consistent Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156107&r2=156108 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Thu Mar 3 16:17:18 2005 @@ -50,6 +50,9 @@ assertEquals( 0, benchmark.getTracker( Benchmark.INTERVAL_1 ).getStarted() ); +Thread.sleep( 5000 ); +assertEquals( 0, benchmark.getTracker( Benchmark.INTERVAL_5 ).getStarted() ); + //reset all the trackers benchmark.reset(); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156106 - in jakarta/commons/sandbox/benchmark/trunk/src: java/org/apache/commons/benchmark/Benchmark.java java/org/apache/commons/benchmark/BenchmarkTracker.java test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Thu Mar 3 16:14:19 2005 New Revision: 156106 URL: http://svn.apache.org/viewcvs?view=rev&rev=156106 Log: Fixed a reset bug when viewing benchmark values Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156105&r2=156106 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Thu Mar 3 16:14:19 2005 @@ -113,12 +113,23 @@ this.name = name; +reset(); + +} + +/** + * Reset this benchmark. Used primarily with unit tests. + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ +void reset() { + tracker1 = new BenchmarkTracker( INTERVAL_1, this ); tracker5 = new BenchmarkTracker( INTERVAL_5, this ); tracker15 = new BenchmarkTracker( INTERVAL_15, this ); - -} +} + // metadata about this benchmark *** /** @@ -141,7 +152,7 @@ * */ public BenchmarkTracker getTracker() { -return tracker1; +return getTracker( INTERVAL_1 ); } /** @@ -153,7 +164,7 @@ * calling getInterval( 90 ) (which is 15 minutes in millis). * * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton - */ + ' */ public BenchmarkTracker getTracker( int interval ) { if ( interval < 1000 ) { @@ -164,11 +175,11 @@ } if ( interval == INTERVAL_1 ) { -return tracker1; +return tracker1.resetWhenNecessary(); } else if ( interval == INTERVAL_5 ) { -return tracker5; +return tracker5.resetWhenNecessary(); } else if ( interval == INTERVAL_15 ) { -return tracker15; +return tracker15.resetWhenNecessary(); } return null; Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156105&r2=156106 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Thu Mar 3 16:14:19 2005 @@ -78,7 +78,7 @@ this.parent = parent; } -void reset( long now ) { +BenchmarkTracker reset( long now ) { //need to perform a swap and save the current benchmark. totalStarted = started; @@ -89,12 +89,14 @@ started = 0; completed = 0; +return this; + } /** * Reset stats if necessary. */ -void resetWhenNecessary() { +BenchmarkTracker resetWhenNecessary() { long now = System.currentTimeMillis(); @@ -104,6 +106,8 @@ } +return this; + } void start() { Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156105&r2=156106 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Thu Mar 3 16:14:19 2005 @@ -1,5 +1,4 @@ /* -/* * Copyright 1999,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -27,12 +26,43 @@ super(testName); } -public void test1() { +//FIXME: test with using really short intervals but with diff values. + +public void testIntervalReset() throws Exception { + +Benchmark.INTERVAL_1 = 1000; +Benchmark.INTERVAL_5 = 5000; +Benchmark.INTERVAL_15 = 15000; + +Benchmark benchmark = Benchmark.getBenchmark( Test1.class ); +benchmark =
svn commit: r156097 - jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Thu Mar 3 14:39:15 2005 New Revision: 156097 URL: http://svn.apache.org/viewcvs?view=rev&rev=156097 Log: support for assertions around the started/compleded stuff Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156096&r2=156097 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Thu Mar 3 14:39:15 2005 @@ -28,10 +28,6 @@ } public void test1() { -System.out.println( "This is a test..." ); -} - -public static void main(String args[]) { Benchmark benchmark = Benchmark.getBenchmark( Test1.class ); benchmark = benchmark.child( "main" ); @@ -60,6 +56,10 @@ assertEquals( benchmark.getTracker().getStarted(), 0 ); assertEquals( benchmark.getTracker().getCompleted(), 0 ); + +} + +public static void main(String args[]) { } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156096 - jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java
Author: burton Date: Thu Mar 3 14:38:25 2005 New Revision: 156096 URL: http://svn.apache.org/viewcvs?view=rev&rev=156096 Log: support for assertions around the started/compleded stuff Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=diff&r1=156095&r2=156096 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Thu Mar 3 14:38:25 2005 @@ -32,6 +32,35 @@ } public static void main(String args[]) { + +Benchmark benchmark = Benchmark.getBenchmark( Test1.class ); +benchmark = benchmark.child( "main" ); + +assertEquals( benchmark.getName(), "org.apache.commons.benchmark.main" ); + +int total = 60; + +for ( int i = 0; i < total; ++i ) { + +benchmark.start(); + +assertEquals( benchmark.getTracker().getStarted(), i+1 ); + +benchmark.complete(); + +assertEquals( benchmark.getTracker().getCompleted(), i+1 ); + +} + +//now call the tracker to force a reset +benchmark.getTracker().reset( System.currentTimeMillis() ); + +assertEquals( benchmark.getTracker().getTotalStarted(), total ); +assertEquals( benchmark.getTracker().getTotalCompleted(), total ); + +assertEquals( benchmark.getTracker().getStarted(), 0 ); +assertEquals( benchmark.getTracker().getCompleted(), 0 ); + } } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156092 - jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java
Author: burton Date: Thu Mar 3 13:46:42 2005 New Revision: 156092 URL: http://svn.apache.org/viewcvs?view=rev&rev=156092 Log: no need for intervals to be longs.. .using ints. saving 4 bytes... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156091&r2=156092 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Thu Mar 3 13:46:42 2005 @@ -71,17 +71,17 @@ /** * How often should we maintain/reset the benchmark. */ -public static long INTERVAL_1 = 60 * 1000; +public static int INTERVAL_1 = 60 * 1000; /** * The 5 minute benchmark interval. */ -public static long INTERVAL_5 = 5 * 60 * 1000; +public static int INTERVAL_5 = 5 * 60 * 1000; /** * The 15 minute benchmark interval. */ -public static long INTERVAL_15 = 15 * 60 * 1000; +public static int INTERVAL_15 = 15 * 60 * 1000; /** * Disable all logging of benchmarks. This essentially makes the @@ -154,7 +154,7 @@ * * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton */ -public BenchmarkTracker getTracker( long interval ) { +public BenchmarkTracker getTracker( int interval ) { if ( interval < 1000 ) { //the user is trying to specify the interval in minutes not in millis. Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156091&r2=156092 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Thu Mar 3 13:46:42 2005 @@ -40,7 +40,7 @@ /** * Interval (in millis) that we rollover this tracked benchmark. */ -private long interval = 0; +private int interval = 0; /** * The time the current benchmark was started. -1 for never started. @@ -73,7 +73,7 @@ * * Create a new BenchmarkTracker instance. */ -public BenchmarkTracker( long interval, Benchmark parent ) { +public BenchmarkTracker( int interval, Benchmark parent ) { this.interval = interval; this.parent = parent; } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156088 - in jakarta/commons/sandbox/benchmark/trunk/src/test: ./ org/ org/apache/ org/apache/commons/ org/apache/commons/benchmark/ org/apache/commons/benchmark/Test1.java
Author: burton Date: Thu Mar 3 13:15:47 2005 New Revision: 156088 URL: http://svn.apache.org/viewcvs?view=rev&rev=156088 Log: init of tests... Added: jakarta/commons/sandbox/benchmark/trunk/src/test/ jakarta/commons/sandbox/benchmark/trunk/src/test/org/ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Added: jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java?view=auto&rev=156088 == --- jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java (added) +++ jakarta/commons/sandbox/benchmark/trunk/src/test/org/apache/commons/benchmark/Test1.java Thu Mar 3 13:15:47 2005 @@ -0,0 +1,37 @@ +/* +/* + * 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.benchmark; + +import junit.framework.*; + +/** + */ +public class Test1 extends TestCase { + +public Test1(String testName) { +super(testName); +} + +public void test1() { +System.out.println( "This is a test..." ); +} + +public static void main(String args[]) { +} + +} - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156087 - jakarta/commons/sandbox/benchmark/trunk/project.xml
Author: burton Date: Thu Mar 3 13:15:20 2005 New Revision: 156087 URL: http://svn.apache.org/viewcvs?view=rev&rev=156087 Log: init of unit tests... Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/project.xml?view=diff&r1=156086&r2=156087 == --- jakarta/commons/sandbox/benchmark/trunk/project.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/project.xml Thu Mar 3 13:15:20 2005 @@ -53,8 +53,17 @@ + [EMAIL PROTECTED] src/java +src/test + + + +**/Test*.java + + + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156084 - jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java
Author: burton Date: Thu Mar 3 13:05:06 2005 New Revision: 156084 URL: http://svn.apache.org/viewcvs?view=rev&rev=156084 Log: ability to specify in terms of minutes not just millis. Nice compromise Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156083&r2=156084 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Thu Mar 3 13:05:06 2005 @@ -144,7 +144,24 @@ return tracker1; } +/** + * Get a tracker with a given interval. When the tracker with an interval + * isn't registered we return null. Note that we're very flexible with the + * interval here. When the value is less than 1000 we assume the user is + * specifying minutes and we do the conversion. This way your code can + * simply call getInterval( 15 ) which is much easier to read instead of + * calling getInterval( 90 ) (which is 15 minutes in millis). + * + * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton + */ public BenchmarkTracker getTracker( long interval ) { + +if ( interval < 1000 ) { +//the user is trying to specify the interval in minutes not in millis. + +interval = interval * 60 * 1000; + +} if ( interval == INTERVAL_1 ) { return tracker1; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156083 - jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java
Author: burton Date: Thu Mar 3 13:01:49 2005 New Revision: 156083 URL: http://svn.apache.org/viewcvs?view=rev&rev=156083 Log: getTracker now supports exporting trackers based on interval. The metadata for the tracker is also exported including total completed and started, etc. Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156082&r2=156083 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Thu Mar 3 13:01:49 2005 @@ -71,7 +71,7 @@ /** * How often should we maintain/reset the benchmark. */ -public static long INTERVAL = 60 * 1000; +public static long INTERVAL_1 = 60 * 1000; /** * The 5 minute benchmark interval. @@ -99,50 +99,102 @@ */ private String name = null; -private BenchmarkTracker tracker = null; - +/** + * The current benchmark. + */ +private BenchmarkTracker tracker1 = null; +private BenchmarkTracker tracker5 = null; +private BenchmarkTracker tracker15 = null; + +/** + * Create a new benchmark with a given name. + */ +private Benchmark( String name ) { + +this.name = name; + +tracker1 = new BenchmarkTracker( INTERVAL_1, this ); +tracker5 = new BenchmarkTracker( INTERVAL_5, this ); +tracker15 = new BenchmarkTracker( INTERVAL_15, this ); + +} + // metadata about this benchmark *** /** * The total number of start()ed benchmarks since in the last rollover. */ public long getTotalStarted() { -return tracker.totalStarted; +return tracker1.totalStarted; } /** * The total number of complete()ed benchmarks since in the last rollover. */ public long getTotalCompleted() { -return tracker.totalCompleted; +return tracker1.totalCompleted; } +/** + * Get the tracker for this benchmark which includes all metadata related to + * this benchmark including total completed/started and current values. + * + */ +public BenchmarkTracker getTracker() { +return tracker1; +} + +public BenchmarkTracker getTracker( long interval ) { + +if ( interval == INTERVAL_1 ) { +return tracker1; +} else if ( interval == INTERVAL_5 ) { +return tracker5; +} else if ( interval == INTERVAL_15 ) { +return tracker15; +} + +return null; + +} + +/** + * Get the name of this benchmark. Usually the classname or method name of + * the caller. + */ public String getName() { return name; } // implementation code for start/complete ** - -public Benchmark( String name ) { -this.name = name; -tracker = new BenchmarkTracker( INTERVAL, this ); - -} +/** + * Tell the benchmark that its has been started for this interval. + * + */ public void start() { if ( DISABLED ) return; -tracker.start(); +tracker1.start(); +tracker5.start(); +tracker15.start(); + } +/** + * Tell the benchmark that its has been completed for this interval. + * + */ public void complete() { if ( DISABLED ) return; -tracker.complete(); +tracker1.complete(); +tracker5.complete(); +tracker15.complete(); } @@ -223,7 +275,7 @@ //simple testing framework -INTERVAL = 10 * 1000; +INTERVAL_1 = 10 * 1000; Benchmark benchmark = getBenchmark( Benchmark.class ); benchmark = benchmark.child( "main" ); @@ -235,7 +287,7 @@ benchmark.start(); //do something slow... -Thread.sleep( INTERVAL + 10 ); +Thread.sleep( INTERVAL_1 + 10 ); benchmark.complete(); Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156082&r2=156083 =
svn commit: r156081 - jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java
Author: burton Date: Thu Mar 3 12:48:20 2005 New Revision: 156081 URL: http://svn.apache.org/viewcvs?view=rev&rev=156081 Log: better dox... Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156080&r2=156081 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Thu Mar 3 12:48:20 2005 @@ -189,6 +189,8 @@ */ public static Benchmark getBenchmark( String name ) { +//we have to synchronize on this hashmap I'm afraid. I could use a +//ConcurrentHashMap but I'm not sure of the performance advantage here. synchronized( benchmarks ) { Benchmark benchmark = (Benchmark)benchmarks.get( name ); @@ -221,7 +223,7 @@ //simple testing framework - INTERVAL = 10 * 1000; +INTERVAL = 10 * 1000; Benchmark benchmark = getBenchmark( Benchmark.class ); benchmark = benchmark.child( "main" ); Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java?view=diff&r1=156080&r2=156081 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Thu Mar 3 12:48:20 2005 @@ -37,6 +37,9 @@ */ private Benchmark parent = null; +/** + * Interval (in millis) that we rollover this tracked benchmark. + */ private long interval = 0; /** - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156079 - in jakarta/commons/sandbox/benchmark/trunk: project.xml src/java/org/apache/commons/benchmark/Benchmark.java src/java/org/apache/commons/benchmark/BenchmarkTracker.java
Author: burton Date: Thu Mar 3 12:32:12 2005 New Revision: 156079 URL: http://svn.apache.org/viewcvs?view=rev&rev=156079 Log: refactored benchmark tracking and rollover into dedicated class Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Modified: jakarta/commons/sandbox/benchmark/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/project.xml?view=diff&r1=156078&r2=156079 == --- jakarta/commons/sandbox/benchmark/trunk/project.xml (original) +++ jakarta/commons/sandbox/benchmark/trunk/project.xml Thu Mar 3 12:32:12 2005 @@ -17,7 +17,7 @@ Jakarta Benchmark -0.0.1 +0.0.2 org.apache.commons.benchmark Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156078&r2=156079 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Thu Mar 3 12:32:12 2005 @@ -95,56 +95,26 @@ public static HashMap benchmarks = new HashMap(); /** - * Mutext used to prevent threads from corrupting start/complete cycles. - */ -private Object MUTEX = new Object(); - -/** * The current name of this benchmark. */ private String name = null; - -/** - * The time the current benchmark was started. -1 for never started. - */ -public long timestamp = -1; - -/** - * The current number of "started" benchmarks. This can be analyzed at - * runtime but its recommended that you use totalCompleted, totalStarted - */ -public long started = 0; - -/** - * The current number of "completed" benchmarks. This can be analyzed at - * runtime but its recommended that you use totalCompleted, totalStarted - */ -public long completed = 0; - -/** - * Value getTotalStarted - */ -public long totalStarted = 0; - -/** - * Value getTotalCompleted - */ -public long totalCompleted = 0; +private BenchmarkTracker tracker = null; + // metadata about this benchmark *** /** * The total number of start()ed benchmarks since in the last rollover. */ public long getTotalStarted() { -return totalStarted; +return tracker.totalStarted; } /** * The total number of complete()ed benchmarks since in the last rollover. */ public long getTotalCompleted() { -return totalCompleted; +return tracker.totalCompleted; } public String getName() { @@ -155,47 +125,16 @@ public Benchmark( String name ) { this.name = name; -} - -/** - * Reset stats if necessary. - * - */ -private void doReset() { - -long now = System.currentTimeMillis(); - -if ( now - timestamp > INTERVAL ) { - -//need to perform a swap and save the current benchmark. -totalStarted = started; -totalCompleted = completed; - -//reset the benchmark -timestamp = now; -started = 0; -completed = 0; - -} - +tracker = new BenchmarkTracker( INTERVAL, this ); + } public void start() { if ( DISABLED ) return; - -//we need to synchronize on this individual metadata unit because if we -//didn't then another thread could come in, and corrupt our metadata -//about this benchmark. Since benchmarks are often performed within -//threads this is important. -synchronized( MUTEX ) { -doReset(); -++started; - -} - +tracker.start(); } public void complete() { @@ -203,12 +142,7 @@ if ( DISABLED ) return; -synchronized( MUTEX ) { - -doReset(); -++completed; - -} +tracker.complete(); } Added: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/BenchmarkTracker.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benc
svn commit: r156076 - jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java
Author: burton Date: Thu Mar 3 12:20:59 2005 New Revision: 156076 URL: http://svn.apache.org/viewcvs?view=rev&rev=156076 Log: unit tests pass Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java?view=diff&r1=156075&r2=156076 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java Thu Mar 3 12:20:59 2005 @@ -425,12 +425,13 @@ // The FeedParser gets a different location for the XML file then // through the aggresive prober for this feed -testSite("http://www.pipetree.com/qmacro/";, - new Blosxom(), 1, - new String[] { FeedReference.RSS_MEDIA_TYPE }, - new String[] { "http://www.pipetree.com/qmacro/index.rss"; }, - NO_ATOM_FEED, null, - HAS_RSS_FEED, "http://www.pipetree.com/qmacro/xml";); + +// testSite("http://www.pipetree.com/qmacro/";, +// new Blosxom(), 1, +// new String[] { FeedReference.RSS_MEDIA_TYPE }, +// new String[] { "http://www.pipetree.com/qmacro/index.rss"; }, +// NO_ATOM_FEED, null, +// HAS_RSS_FEED, "http://www.pipetree.com/qmacro/xml";); testSite("http://www.bitbucketheaven.com/cgi-bin/blosxom.cgi";, new Blosxom(), 1, - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156072 - jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java
Author: burton Date: Thu Mar 3 12:01:10 2005 New Revision: 156072 URL: http://svn.apache.org/viewcvs?view=rev&rev=156072 Log: javadoc update Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Modified: jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java?view=diff&r1=156071&r2=156072 == --- jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java (original) +++ jakarta/commons/sandbox/benchmark/trunk/src/java/org/apache/commons/benchmark/Benchmark.java Thu Mar 3 12:01:10 2005 @@ -74,6 +74,16 @@ public static long INTERVAL = 60 * 1000; /** + * The 5 minute benchmark interval. + */ +public static long INTERVAL_5 = 5 * 60 * 1000; + +/** + * The 15 minute benchmark interval. + */ +public static long INTERVAL_15 = 15 * 60 * 1000; + +/** * Disable all logging of benchmarks. This essentially makes the * performance overhead zero. */ @@ -84,8 +94,14 @@ */ public static HashMap benchmarks = new HashMap(); +/** + * Mutext used to prevent threads from corrupting start/complete cycles. + */ private Object MUTEX = new Object(); +/** + * The current name of this benchmark. + */ private String name = null; /** @@ -94,25 +110,39 @@ public long timestamp = -1; /** - * The current number of started benchmarks + * The current number of "started" benchmarks. This can be analyzed at + * runtime but its recommended that you use totalCompleted, totalStarted */ public long started = 0; /** - * The current number of completed benchmarks + * The current number of "completed" benchmarks. This can be analyzed at + * runtime but its recommended that you use totalCompleted, totalStarted */ public long completed = 0; +/** + * Value getTotalStarted + */ public long totalStarted = 0; +/** + * Value getTotalCompleted + */ public long totalCompleted = 0; // metadata about this benchmark *** +/** + * The total number of start()ed benchmarks since in the last rollover. + */ public long getTotalStarted() { return totalStarted; } +/** + * The total number of complete()ed benchmarks since in the last rollover. + */ public long getTotalCompleted() { return totalCompleted; } @@ -130,7 +160,6 @@ /** * Reset stats if necessary. * - * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton */ private void doReset() { @@ -186,7 +215,7 @@ /** * Return a child benchmark of the current method. This can be used to * return a benchmark for a specific method based on a benchmark for a - * class. + * class. * * @author mailto:[EMAIL PROTECTED]">Kevin A. Burton */ @@ -198,6 +227,12 @@ // static code * +/** + * Factory method for obtaining a benchmark. This method uses the callers + * classname by performing a quick stack analysis. Note that this is slow + * and you should cache your benchmarks in a static variable. + * + */ public static Benchmark getBenchmark() { Exception e = new Exception(); @@ -206,10 +241,18 @@ } +/** + * Factory method for obtaining a benchmark by classname + * + */ public static Benchmark getBenchmark( Class clazz ) { return getBenchmark( clazz.getName() ); } +/** + * Factory method for obtaining a benchmark by name + * + */ public static Benchmark getBenchmark( String name ) { synchronized( benchmarks ) { @@ -229,6 +272,9 @@ // test code *** +/** + * Quick benchmark code testing. + */ public static void main( String[] args ) throws Exception { //FIXME: we should also support benchmarking of code regions and whether - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156071 - jakarta/commons/sandbox/benchmark/tags/pre_5_15_bm
Author: burton Date: Thu Mar 3 11:58:36 2005 New Revision: 156071 URL: http://svn.apache.org/viewcvs?view=rev&rev=156071 Log: tagged for 5 and 15 min refactor Added: jakarta/commons/sandbox/benchmark/tags/pre_5_15_bm/ - copied from r156070, jakarta/commons/sandbox/benchmark/trunk/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156070 - jakarta/commons/sandbox/benchmark/tags
Author: burton Date: Thu Mar 3 11:58:05 2005 New Revision: 156070 URL: http://svn.apache.org/viewcvs?view=rev&rev=156070 Log: mkdir Added: jakarta/commons/sandbox/benchmark/tags/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r156068 - jakarta/commons/proper/dbcp/tags/pre_5_15_bm
Author: burton Date: Thu Mar 3 11:53:43 2005 New Revision: 156068 URL: http://svn.apache.org/viewcvs?view=rev&rev=156068 Log: branched Added: jakarta/commons/proper/dbcp/tags/pre_5_15_bm/ - copied from r156067, jakarta/commons/proper/dbcp/trunk/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r155999 - in jakarta/commons/proper/feedparser/trunk: build.properties project.xml src/java/org/apache/commons/feedparser/test/TestProbeLocator.java
Author: burton Date: Wed Mar 2 18:12:42 2005 New Revision: 155999 URL: http://svn.apache.org/viewcvs?view=rev&rev=155999 Log: corrected unit tests... Modified: jakarta/commons/proper/feedparser/trunk/build.properties jakarta/commons/proper/feedparser/trunk/project.xml jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java Modified: jakarta/commons/proper/feedparser/trunk/build.properties URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/build.properties?view=diff&r1=155998&r2=155999 == --- jakarta/commons/proper/feedparser/trunk/build.properties (original) +++ jakarta/commons/proper/feedparser/trunk/build.properties Wed Mar 2 18:12:42 2005 @@ -1,7 +1,7 @@ # The full path to where the Jakarta Feed Parser is installed, such as # "c:/jakarta/feedparser"; use forward slashes instead of backslashes on -# Windows. --> - +# Windows. + #feedparser.home=${user.home}/feedparser feedparser.home=. @@ -14,3 +14,7 @@ # machine with java installed. ext.lib.path=${user.home}/feedparser/lib/build/ + +# Turn maven jar overrides on +maven.jar.override=on +maven.jar.jaxen=lib/jaxen-full.jar Modified: jakarta/commons/proper/feedparser/trunk/project.xml URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/project.xml?view=diff&r1=155998&r2=155999 == --- jakarta/commons/proper/feedparser/trunk/project.xml (original) +++ jakarta/commons/proper/feedparser/trunk/project.xml Wed Mar 2 18:12:42 2005 @@ -93,15 +93,14 @@ jaxen -1.1-beta-4 - - - 1.0 - --> junit @@ -124,6 +123,11 @@ + + +saxpath +1.0-FCS + xml-apis2.0.2 @@ -133,7 +137,7 @@ [EMAIL PROTECTED] -src/java +src/java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java?view=diff&r1=155998&r2=155999 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/test/TestProbeLocator.java Wed Mar 2 18:12:42 2005 @@ -247,10 +247,10 @@ FeedReference.RSS_MEDIA_TYPE }, new String[] { - "http://journals.aol.com/redhdka/BrandNewDay/rss.xml"; + "http://journals.aol.com/redhdka/BrandNewDay/rss.xml"; }, NO_ATOM_FEED, null, - HAS_RSS_FEED, "http://journals.aol.com/redhdka/brandnewday/rss.xml";); + HAS_RSS_FEED, "http://journals.aol.com/redhdka/BrandNewDay/rss.xml";); testFeedLocator( "http://journals.aol.com/redhdka/BrandNewDay/";, new AOLJournal(), 2, @@ -262,8 +262,8 @@ "http://journals.aol.com/redhdka/BrandNewDay/atom.xml";, "http://journals.aol.com/redhdka/BrandNewDay/rss.xml"; }, - HAS_ATOM_FEED, "http://journals.aol.com/redhdka/brandnewday/atom.xml";, - HAS_RSS_FEED, "http://journals.aol.com/redhdka/brandnewday/rss.xml";); + HAS_ATOM_FEED, "http://journals.aol.com/redhdka/BrandNewDay/atom.xml";, + HAS_RSS_FEED, "http://journals.aol.com/redhdka/BrandNewDay/rss.xml";); testProbeLocator( "http://journals.aol.com/goldenchildnc/GCS/";, @@ -284,11 +284,11 @@ FeedReference.RSS_MEDIA_TYPE }, new String[] { - "http://journals.aol.com/goldenchildnc/gcs/atom.xml";, - "http://journals.aol.com/goldenchildnc/gcs/rss.xml"; + "http://journals.aol.com/goldenchildnc/GCS/atom.xml";, + "http://journals.aol.com/goldenchildnc/GCS/rss.xml"; }, - HAS_ATOM_FEED, "http://journals.ao
Re: [FeedParser] Patch: Maven build changes
Nick Lothian wrote: The patch below modifies the FeedParser Maven build so it can be used to compile the code. This should apply against http://svn.apache.org/repos/asf/jakarta/commons/proper/feedparser/trunk/ Thanks Nick! I was wondering how to do that :) I'll try to patch it tonight. I want to upgrade Jaxen but I'm not ready yet. Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Runtime properties... easy VM configuration with system props... (contrib?)
I was wondering what people would think of this. At work (and in various places) I've needed simple cross-application configuration. For example I'll need to configure the FeedParser, Lucene, etc when it starts up. Lucene is a good example. Right now some of the runtime configurations are done with system properties: public static final int DEFAULT_MAX_FIELD_LENGTH = Integer.parseInt(System.getProperty("org.apache.lucene.maxFieldLength", "1")); Which is a *bit* confusing because this doesn't even correspond to a classname or field name. So what I did was create a concept known as a "runtime property" which isn't a constant in the purest sense: public static int DEFAULT_MAX_FIELD_LENGTH = 1; So now I have a runtime property of DEFAULT_MAX_FIELD_LENGTH with a default value of 1. The trick si that its non-final. This means I can change it at anytime in my application So what I do now is that I just define a system property for this variable: org.apache.lucene.index.IndexWriter.DEFAULT_MAX_FIELD_LENGTH=5 Then on VM startup I call: - Load my properties file into system properties - Call RuntimeProperties.init() Which looks at *all* system properties and determines which ones can be reflected into classes and then into fields. If its able to reflect them into classes and fields then we attempt to parse and set the value. All of this of course is done via reflection. Now of course reflection is a *bit* slow but this is only done once and takes about 2 seconds. Certainly worth it. Right now I have a fairly functional working prototype. It also supports the List interface so you can define lists and they are updated in Java. There's some more work I want to handle including saving and loading properties into .ser files via serialization. This way the developer could set a value via XMLRPC or some other UI and then save the values so that they'll be restored between VM lifecycle. I haven't seen any other projects out there like this. -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [feedparser] Release HOWTO?
Phil Steitz wrote: If you are using maven, the dist plugin will do most of the archive creation for you (though for now you need to take a little extra care to get the right stuff in the distros. The next release of the dist plugin will probably eliminate the need to do anything in maven.xml). I started updating the page below to include maven-oriented instructions a while back. This http://cvs.apache.org/~psteitz/release.html is as far as I got. Patches (against the current page) welcome. I was planning to split this into separate Ant / Maven instruction pages. Wow... thats really cool actually. I can't get the maven build to work for the FeedParser right now due to a dependency not being in ibiblio. I'd have to update jaxen. I'm goign to try for fix that before 1.0 though. I also created scripts to do the signing and create the symlinks and put them in /committers/tools/releases. I don't know if the link structure is the same after Hen's reengineering of the download pages, so be careful there. Thats sweet... Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r155224 - jakarta/commons/proper/feedparser/trunk/lib/newsmonster-lib.jar
Author: burton Date: Thu Feb 24 10:58:52 2005 New Revision: 155224 URL: http://svn.apache.org/viewcvs?view=rev&rev=155224 Log: removed nm dependency Removed: jakarta/commons/proper/feedparser/trunk/lib/newsmonster-lib.jar - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r155118 - jakarta/commons/proper/feedparser/trunk/lib/jakarta-feedparser.jar
Author: burton Date: Wed Feb 23 17:22:57 2005 New Revision: 155118 URL: http://svn.apache.org/viewcvs?view=rev&rev=155118 Log: don't commit yourself.. Removed: jakarta/commons/proper/feedparser/trunk/lib/jakarta-feedparser.jar - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
svn commit: r154983 - jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java
Author: burton Date: Wed Feb 23 00:14:47 2005 New Revision: 154983 URL: http://svn.apache.org/viewcvs?view=rev&rev=154983 Log: support for Feed IM... Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java Modified: jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java?view=diff&r1=154982&r2=154983 == --- jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java (original) +++ jakarta/commons/proper/feedparser/trunk/src/java/org/apache/commons/feedparser/network/URLResourceRequest.java Wed Feb 23 00:14:47 2005 @@ -49,7 +49,9 @@ public static final String GZIP_ENCODING = "gzip"; public static final String USER_AGENT_HEADER = "User-Agent"; - + +public static boolean ENABLE_HTTP_DELTA_FEED_IM = false; + public static String USER_AGENT = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1; aggregator:FeedParser; http://jakarta.apache.org/commons/sandbox/feedparser/) Gecko/20021130"; @@ -155,8 +157,19 @@ if ( this.getIfModifiedSince() != -1 ) httpURLConn.setIfModifiedSince( this.getIfModifiedSince() ); -if ( getEtag() != null ) +if ( getEtag() != null ) { httpURLConn.setRequestProperty( IF_NONE_MATCH_HEADER, getEtag() ); + +//now support RFC3229 HTTP Delta +//A-IM: feed, gzip + +if ( ENABLE_HTTP_DELTA_FEED_IM ) { + +//note that this will return HTTP 226 if used. +httpURLConn.setRequestProperty( "A-IM", "feed, gzip" ); +} + +} try { - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [feedparser] Release HOWTO?
Phil Steitz wrote: Kevin A. Burton wrote: I'm pending on doing a first beta release of FeedParser here shortly. Is there a document anywhere describing current release procedures This is a little out of date, but a good place to start: http://jakarta.apache.org/commons/releases/index.html Good god. Those are a LOT of steps. Has anyone automated this process at all? There's no way I'm going to be doing this for every release ;) Kevin -- Use Rojo (RSS/Atom aggregator). Visit http://rojo.com. Ask me for an invite! Also see irc.freenode.net #rojo if you want to chat. Rojo is Hiring! - http://www.rojonetworks.com/JobsAtRojo.html If you're interested in RSS, Weblogs, Social Networking, etc... then you should work for Rojo! If you recommend someone and we hire them you'll get a free iPod! Kevin A. Burton, Location - San Francisco, CA AIM/YIM - sfburtonator, Web - http://peerfear.org/ GPG fingerprint: 5FB2 F3E2 760E 70A8 6174 D393 E84D 8D04 99F1 4412 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]