Author: nicolas Date: Thu Apr 10 02:02:07 2008 New Revision: 646698 URL: http://svn.apache.org/viewvc?rev=646698&view=rev Log: generate Flot graph output
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java (with props) commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java Thu Apr 10 02:02:07 2008 @@ -24,8 +24,10 @@ import java.util.Set; import org.apache.commons.monitoring.Monitor; +import org.apache.commons.monitoring.Monitoring; import org.apache.commons.monitoring.Repository; import org.apache.commons.monitoring.StopWatch; +import org.apache.commons.monitoring.Unit; import org.apache.commons.monitoring.reporting.AbstractPeriodicLogger; /** @@ -42,7 +44,6 @@ private int size; - @SuppressWarnings( "serial" ) public HistorizedRepositoryDecorator( long period, final int size, Observable repository ) { super( period, repository ); @@ -68,6 +69,8 @@ { history.remove( history.size() ); } + + Monitoring.getMonitor( "test" ).getCounter( Monitor.PERFORMANCES ).add( (long) (Math.random() * 10), Unit.MILLIS ); } public void addListener( Listener listener ) Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java Thu Apr 10 02:02:07 2008 @@ -42,9 +42,17 @@ public abstract class AbstractRenderer implements Renderer { - public final void render( Context ctx, Collection<Monitor> monitors ) + private String contentType; + + + protected static final String MONITORS = "monitors"; + + protected static final String ROLES = "roles"; + + public AbstractRenderer( String contentType ) { - render( ctx, monitors, new OptionsSupport() ); + super(); + this.contentType = contentType; } public void render( Context ctx, Collection<Monitor> monitors, Options options ) @@ -68,8 +76,8 @@ protected void prepareRendering( Context ctx, Collection<Monitor> monitors, Options options ) { List<String> roles = getRoles( monitors, options ); - ctx.put( "roles", roles ); - ctx.put( "monitors", monitors ); + ctx.put( ROLES, roles ); + ctx.put( MONITORS, monitors ); } protected void hasNext( Context ctx, Class<?> type ) @@ -102,7 +110,7 @@ @SuppressWarnings( "unchecked" ) protected void renderStatValues( Context ctx, Monitor monitor, Options options ) { - List<String> roles = (List<String>) ctx.get( "roles" ); + List<String> roles = (List<String>) ctx.get( ROLES ); renderStatValues( ctx, monitor, options, roles ); } @@ -161,35 +169,36 @@ protected void render( Context ctx, StatValue value, Options options ) { + String role = value.getRole(); if ( value instanceof Counter ) { Counter counter = (Counter) value; - if ( options.render( value, "hits" ) ) + if ( options.render( role, "hits" ) ) { render( ctx, value, "hits", counter.getHits(), options, 0 ); } - if ( options.render( value, "sum" ) ) + if ( options.render( role, "sum" ) ) { render( ctx, value, "sum", counter.getSum(), options ); } } - if ( options.render( value, "min" ) ) + if ( options.render( role, "min" ) ) { render( ctx, value, "min", value.getMin(), options ); } - if ( options.render( value, "max" ) ) + if ( options.render( role, "max" ) ) { render( ctx, value, "max", value.getMax(), options ); } - if ( options.render( value, "mean" ) ) + if ( options.render( role, "mean" ) ) { render( ctx, value, "mean", value.getMean(), options ); } - if ( options.render( value, "deviation" ) ) + if ( options.render( role, "deviation" ) ) { render( ctx, value, "deviation", value.getStandardDeviation(), options, 1 ); } - if ( options.render( value, "value" ) ) + if ( options.render( role, "value" ) ) { render( ctx, value, "value", value.get(), options, 1 ); } @@ -243,7 +252,7 @@ { if ( Double.isNaN( d ) ) { - ctx.print( "-" ); + renderNaN( ctx ); return; } Unit unit = options.unitFor( value ); @@ -258,6 +267,11 @@ ctx.print( options.getDecimalFormat().format( d ) ); } + protected void renderNaN( Context ctx ) + { + ctx.print( "-" ); + } + /** * @param monitors * @return @@ -281,5 +295,10 @@ List<String> sorted = new ArrayList<String>( roles ); Collections.sort( sorted ); return sorted; + } + + public String getContentType() + { + return contentType; } } Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java?rev=646698&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java (added) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java Thu Apr 10 02:02:07 2008 @@ -0,0 +1,172 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.commons.monitoring.reporting; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.monitoring.Monitor; +import org.apache.commons.monitoring.StatValue; +import org.apache.commons.monitoring.Monitor.Key; +import org.apache.commons.monitoring.listeners.Detachable; + +/** + * Render as a graph, based on jQuery Flot javascript library + * <p> + * This renderer produces JavaScript, and expect the HTML page to include + * <ul> + * <li> the required <script> tags : + * + * <pre> + * <script src="jquery.pack.js" ></script> + * <script src="jquery.flot.pack.js" ></script> + * <!--[if IE]><script src="excanvas.pack.js" ></script><![endif]--> + * </pre> + * + * </li> + * <li> + * a <div& id="placeholder"gt; to draw the graph into, having <tt>width</tt> and <tt>height</tt> + * style set. + * </li> + * </ul> + * + * @see http://code.google.com/p/flot/ + * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a> + */ +public class FlotRenderer + extends AbstractRenderer +{ + private static final String[] ATTRIBUTES = { "hits", "sum", "min", "max", "mean", "deviation", "value" }; + + public FlotRenderer() + { + super( "text/javascript" ); + } + + /** + * [EMAIL PROTECTED] + * + * @see org.apache.commons.monitoring.reporting.Renderer#render(org.apache.commons.monitoring.reporting.Context, + * java.util.Collection, + * org.apache.commons.monitoring.reporting.Renderer.Options) + */ + @Override + public void render( Context ctx, Collection<Monitor> monitors, Options options ) + { + prepareRendering( ctx, monitors, options ); + ctx.print( "$.plot($('#placeholder'), [" ); + + int color = 0; + for ( Iterator<String> it = ( (Collection) ctx.get( ROLES ) ).iterator(); it.hasNext(); ) + { + String role = it.next(); + List<String> attribues = new ArrayList<String>(); + for ( String attribute : ATTRIBUTES ) + { + if ( !options.render( role, attribute ) ) + { + continue; + } + attribues.add( attribute ); + } + + for ( Iterator<String> attr = attribues.iterator(); attr.hasNext(); ) + { + final String attribute = attr.next(); + ctx.print( "{ color: " + color ); + ctx.print( ", label: \"" ); + ctx.print( role + "." + attribute ); + ctx.print( "\", data: " ); + ctx.print( "[" ); + int x = 0; + for ( Iterator<Monitor> iterator = monitors.iterator(); iterator.hasNext(); ) + { + Monitor monitor = iterator.next(); + x++; + StatValue value = monitor.getValue( role ); + if ( value == null ) + { + continue; + } + ctx.put( "x", x ); + render( ctx, value, new OptionsSupport() + { + @Override + public boolean render( String role, String string ) + { + return string.equals( attribute ); + } + }); + if ( iterator.hasNext() ) + { + ctx.print( "," ); + } + } + ctx.print( "]" ); + ctx.print( "}" ); + if ( attr.hasNext() ) + { + ctx.print( "," ); + } + color++; + } + if ( it.hasNext() ) + { + ctx.print( "," ); + } + } + + ctx.print( "] );" ); + } + + protected void render( Context ctx, StatValue value, String attribute, Number number, Options options, int ratio ) + { + ctx.print( "[" + ctx.get( "x" ) + "," ); + super.render( ctx, value, attribute, number, options, ratio ); + ctx.print( "]" ); + } + + @Override + protected void renderNaN( Context ctx ) + { + ctx.print( "NaN" ); + } + + /** + * [EMAIL PROTECTED] + * @see org.apache.commons.monitoring.reporting.AbstractRenderer#render(org.apache.commons.monitoring.reporting.Context, org.apache.commons.monitoring.Monitor.Key) + */ + @Override + protected void render( Context ctx, Key key ) + { + // Not used here + } + + /** + * [EMAIL PROTECTED] + * @see org.apache.commons.monitoring.reporting.AbstractRenderer#renderDetached(org.apache.commons.monitoring.reporting.Context, org.apache.commons.monitoring.listeners.Detachable, org.apache.commons.monitoring.reporting.Renderer.Options) + */ + @Override + protected void renderDetached( Context ctx, Detachable detached, Options options ) + { + // Not used here + } + +} Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java Thu Apr 10 02:02:07 2008 @@ -28,7 +28,6 @@ import org.apache.commons.monitoring.Unit; import org.apache.commons.monitoring.Monitor.Key; import org.apache.commons.monitoring.listeners.Detachable; -import org.apache.commons.monitoring.listeners.SecondaryMonitor; /** * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a> @@ -37,6 +36,11 @@ extends AbstractRenderer { + public HtmlRenderer() + { + super( "text/html" ); + } + /** * [EMAIL PROTECTED] * @@ -114,14 +118,14 @@ int span = 0; if ( value instanceof Counter ) { - span += options.render( value, "hits" ) ? 1 : 0; - span += options.render( value, "sum" ) ? 1 : 0; + span += options.render( role, "hits" ) ? 1 : 0; + span += options.render( role, "sum" ) ? 1 : 0; } - span += options.render( value, "min" ) ? 1 : 0; - span += options.render( value, "max" ) ? 1 : 0; - span += options.render( value, "mean" ) ? 1 : 0; - span += options.render( value, "deviation" ) ? 1 : 0; - span += options.render( value, "value" ) ? 1 : 0; + span += options.render( role, "min" ) ? 1 : 0; + span += options.render( role, "max" ) ? 1 : 0; + span += options.render( role, "mean" ) ? 1 : 0; + span += options.render( role, "deviation" ) ? 1 : 0; + span += options.render( role, "value" ) ? 1 : 0; ctx.print( "<td colspan='" ); ctx.print( String.valueOf( span ) ); @@ -174,7 +178,7 @@ protected void writeColumnHead( Context ctx, Options options, StatValue value, String attribute ) { - if ( options.render( value, attribute ) ) + if ( options.render( value.getRole(), attribute ) ) { ctx.print( "<th>" ); ctx.print( attribute ); Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java Thu Apr 10 02:02:07 2008 @@ -29,6 +29,12 @@ public class JsonRenderer extends AbstractRenderer { + + public JsonRenderer( String contentType ) + { + super( contentType ); + } + @Override public void render( Context ctx, Collection<Monitor> monitors, Options options ) { Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java Thu Apr 10 02:02:07 2008 @@ -41,7 +41,7 @@ return true; } - public boolean render( StatValue value, String attribute ) + public boolean render( String role, String attribute ) { return true; } Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java Thu Apr 10 02:02:07 2008 @@ -35,7 +35,7 @@ { Collection<String> DEFAULT_ROLES = Arrays.asList( new String[] { Monitor.CONCURRENCY, Monitor.PERFORMANCES } ); - void render( Context ctx, Collection<Monitor> monitors ); + String getContentType(); void render( Context ctx, Collection<Monitor> monitors, Options options ); @@ -43,7 +43,7 @@ { boolean render( Monitor object ); - boolean render( StatValue value, String attribute ); + boolean render( String role, String attribute ); boolean renderRole( String role ); Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java Thu Apr 10 02:02:07 2008 @@ -33,6 +33,11 @@ { private static final String HR = "--------------------------------------------------------------------------------"; + public TxtRenderer() + { + super( "text/txt" ); + } + /** * [EMAIL PROTECTED] * @see org.apache.commons.monitoring.reporting.AbstractRenderer#renderDetached(org.apache.commons.monitoring.reporting.Context, org.apache.commons.monitoring.listeners.SecondaryMonitor, org.apache.commons.monitoring.reporting.Renderer.Options) Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java Thu Apr 10 02:02:07 2008 @@ -25,11 +25,15 @@ import org.apache.commons.monitoring.StatValue; import org.apache.commons.monitoring.Monitor.Key; import org.apache.commons.monitoring.listeners.Detachable; -import org.apache.commons.monitoring.reporting.Renderer.Options; public class XmlRenderer extends AbstractRenderer { + + public XmlRenderer() + { + super( "text/xml" ); + } /** * [EMAIL PROTECTED] Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java Thu Apr 10 02:02:07 2008 @@ -38,6 +38,7 @@ import org.apache.commons.monitoring.Unit; import org.apache.commons.monitoring.Monitor.Key; import org.apache.commons.monitoring.reporting.Context; +import org.apache.commons.monitoring.reporting.FlotRenderer; import org.apache.commons.monitoring.reporting.HtmlRenderer; import org.apache.commons.monitoring.reporting.JsonRenderer; import org.apache.commons.monitoring.reporting.OptionsSupport; @@ -78,8 +79,9 @@ public void init() throws ServletException { - renderers.put( "text/javascript", new JsonRenderer() ); - renderers.put( "application/json", new JsonRenderer() ); + renderers.put( "text/javascript", new JsonRenderer( "text/javascript" ) ); + renderers.put( "text/flot", new FlotRenderer() ); + renderers.put( "application/json", new JsonRenderer( "application/json" ) ); renderers.put( "text/xml", new XmlRenderer() ); renderers.put( "text/html", new HtmlRenderer() ); @@ -201,10 +203,10 @@ && ( subsystems.isEmpty() || subsystems.contains( key.getSubsystem() ) ); } - public boolean render( StatValue value, String attribute ) + public boolean render( String role, String attribute ) { - String columns = request.getParameter( value.getRole() + ".columns" ); - if ( columns != null ) + String columns = request.getParameter( role + ".columns" ); + if ( columns == null ) { return true; } Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java Thu Apr 10 02:02:07 2008 @@ -57,39 +57,39 @@ * @see org.apache.commons.monitoring.reporting.HtmlRenderer#documentHead(java.io.Context) */ @Override - protected void documentHead( Context writer ) + protected void documentHead( Context ctx ) { - writer.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " ); - writer.println( " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" ); - writer.println( "<html>" ); - writer.println( "<head>" ); + ctx.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " ); + ctx.println( " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" ); + ctx.println( "<html>" ); + ctx.println( "<head>" ); if ( title != null ) { - writer.print( "<title>" ); - writer.print( title ); - writer.println( "</title>" ); + ctx.print( "<title>" ); + ctx.print( title ); + ctx.println( "</title>" ); } if ( stylesheet != null ) { - writer.print( "<link rel='stylesheet' type='text/css' href='" ); - writer.print( contextPath ); - writer.print( "/resources/" ); - writer.print( stylesheet ); - writer.println( "' />" ); + ctx.print( "<link rel='stylesheet' type='text/css' href='" ); + ctx.print( contextPath ); + ctx.print( "/resources/" ); + ctx.print( stylesheet ); + ctx.println( "' />" ); } if ( scripts != null ) { for ( int i = 0; i < scripts.length; i++ ) { - writer.print( "<script src='" ); - writer.print( contextPath ); - writer.print( "/resources/" ); - writer.print( scripts[i] ); - writer.println( "' ></script>" ); + ctx.print( "<script src='" ); + ctx.print( contextPath ); + ctx.print( "/resources/" ); + ctx.print( scripts[i] ); + ctx.println( "' ></script>" ); } } - writer.println( "</head>" ); - writer.println( "<body>" ); + ctx.println( "</head>" ); + ctx.println( "<body>" ); } @SuppressWarnings("unchecked") Modified: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java?rev=646698&r1=646697&r2=646698&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java (original) +++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java Thu Apr 10 02:02:07 2008 @@ -58,7 +58,7 @@ public void testRenderToJson() throws Exception { - assertExpectedRendering( new JsonRenderer(), "js" ); + assertExpectedRendering( new JsonRenderer( "text/javascript" ), "js" ); } public void testRenderToXml() @@ -79,6 +79,12 @@ assertExpectedRendering( new HtmlRenderer(), "html" ); } + public void testRenderToFlot() + throws Exception + { + assertExpectedRendering( new FlotRenderer(), "flot" ); + } + public void testOptions() throws Exception { @@ -105,7 +111,7 @@ { StringWriter out = new StringWriter(); Context ctx = new Context( new PrintWriter( out ) ); - renderer.render( ctx, monitors ); + renderer.render( ctx, monitors, new OptionsSupport() ); String actual = out.toString(); actual = StringUtils.remove( StringUtils.remove( actual, "\n" ), "\r" ); Added: commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot?rev=646698&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot (added) +++ commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot Thu Apr 10 02:02:07 2008 @@ -0,0 +1,32 @@ +$.plot($('#placeholder'), [ + +{ color: 0, label: "concurrency.hits", + data: []}, +{ color: 1, label: "concurrency.sum", + data: []}, +{ color: 2, label: "concurrency.min", + data: [[1,0][2,1]]}, +{ color: 3, label: "concurrency.max", + data: [[1,0][2,1]]}, +{ color: 4, label: "concurrency.mean", + data: [[1,NaN][2,0.00]]}, +{ color: 5, label: "concurrency.deviation", + data: [[1,NaN][2,NaN]]}, +{ color: 6, label: "concurrency.value", + data: [[1,0][2,1]]}, +{ color: 7, label: "performances.hits", + data: [[1,1][2,0]]}, +{ color: 8, label: "performances.sum", + data: [[1,10][2,0]]}, +{ color: 9, label: "performances.min", + data: [[1,10][2,0]]}, +{ color: 10, label: "performances.max", + data: [[1,10][2,0]]}, +{ color: 11, label: "performances.mean", + data: [[1,10.00][2,NaN]]}, +{ color: 12, label: "performances.deviation", + data: [[1,NaN][2,NaN]]}, +{ color: 13, label: "performances.value", + data: [[1,10][2,0]]} + +] ); \ No newline at end of file