Modified: commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/NOTICE.txt URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/NOTICE.txt?rev=1508066&r1=1508065&r2=1508066&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/NOTICE.txt (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/NOTICE.txt Mon Jul 29 13:47:39 2013 @@ -1,4 +1,11 @@ Table sorter website: https://github.com/Mottie/tablesorter -licence: MIT \ No newline at end of file +licence: MIT + +------------------------ + +Bootswatch + +website: http://bootswatch.com/ +licence: Apache v2 \ No newline at end of file
Added: commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm?rev=1508066&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm (added) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm Mon Jul 29 13:47:39 2013 @@ -0,0 +1,28 @@ +#* + 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. +*# +<div class=""container> + <h1>Home</h1> + + <div> + Welcome to the Commons Monitoring Webapp. here is the list of available pages: + </div> + <div> + <ul> + <li><a href="$mapping/report">Report</a></li> + </ul> + </div> +</div> \ No newline at end of file Added: commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm?rev=1508066&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm (added) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm Mon Jul 29 13:47:39 2013 @@ -0,0 +1,64 @@ +#* + 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. +*# +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>Monitoring HTML Report</title> + + <link rel="stylesheet" href="$base/resources/css/bootstrap.min.css"> + <link rel="stylesheet" href="$base/resources/css/monitoring.css"> + + <script type="text/javascript" src="$base/resources/js/jquery.min.js"></script> + <script type="text/javascript" src="$base/resources/js/jquery.tablesorter.js"></script> + <script type="text/javascript" src="$base/resources/js/jquery.tablesorter.widgets.js"></script> + </head> + <body> + <div class="navbar navbar-inverse"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="http://commons.apache.org/sandbox/commons-monitoring/">Commons Monitoring</a> + <div class="nav-collapse"> + <ul class="nav"> + #if ( $currentTemplate == "home.vm") + <li class="active"> + #else + <li> + #end + <a href="$mapping/">Home</a> + </li> + #if ( $currentTemplate == "report.vm") + <li class="active"> + #else + <li> + #end + <a href="$mapping/report">Report</a> + </li> + </ul> + <ul class="nav pull-right"> + <li><a href="http://www.apache.org/">ASF</a></li> + </ul> + </div> + </div> + </div> + </div> + + #parse( "/templates/$currentTemplate" ) + </body> +</html> Added: commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm?rev=1508066&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm (added) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm Mon Jul 29 13:47:39 2013 @@ -0,0 +1,78 @@ +#* + 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. +*# +<h1>Report</h1> + +<table id="report-table" class="table table-bordered table-striped table-hover"> + <thead> + <tr> + #foreach( $header in $headers ) + #if ( $header == "Monitor") + <th> + <div class="row-fluid"> + $header + <div class="btn-group"> + <button type="button" class="btn btn-default"><a href="$mapping/clear">Clear</a></button> + <button type="button" class="btn btn-default"><a href="$mapping/reset">Reset</a></button> + </div> + </div> + </th> + #else + <th>$header</th> + #end + #end + </tr> + </thead> + <tbody> + #foreach( $line in $data ) + <tr> + #foreach( $item in $line ) + <td>$item</td> + #end + </tr> + #end + </tbody> +</table> + +<script type="text/javascript"> + $(function() { + $("table#report-table").tablesorter({ + widthFixed : false, + widgets: [ "filter" ], + widgetOptions : { + filter_childRows : false, + filter_columnFilters : true, + filter_cssFilter : 'tablesorter-filter', + filter_filteredRow : 'filtered', + filter_formatter : null, + filter_functions : null, + filter_hideFilters : false, + filter_ignoreCase : true, + filter_liveSearch : true, + filter_reset : 'button.reset', + filter_searchDelay : 300, + filter_serversideFiltering: false, + filter_startsWith : false, + filter_useParsedData : false, + cssAsc: 'headerSortUp', + cssDesc: 'headerSortDown', + sortList: [[4, 1]] // sort by mean in descending order + } + }); + + $("table#report-table tr th div").addClass("blue"); + }); +</script> Modified: commons/sandbox/monitoring/trunk/reporting/src/main/webapp/WEB-INF/web.xml URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/webapp/WEB-INF/web.xml?rev=1508066&r1=1508065&r2=1508066&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/webapp/WEB-INF/web.xml (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/webapp/WEB-INF/web.xml Mon Jul 29 13:47:39 2013 @@ -20,25 +20,13 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> - <servlet> - <servlet-name>Monitoring</servlet-name> - <servlet-class>org.apache.commons.monitoring.reporting.web.MonitoringServlet</servlet-class> - </servlet> + <filter> + <filter-name>Monitoring</filter-name> + <filter-class>org.apache.commons.monitoring.reporting.web.MonitoringController</filter-class> + </filter> - <servlet-mapping> - <servlet-name>Monitoring</servlet-name> - <url-pattern>/report.csv</url-pattern> - </servlet-mapping> - <servlet-mapping> - <servlet-name>Monitoring</servlet-name> - <url-pattern>/report.html</url-pattern> - </servlet-mapping> - <servlet-mapping> - <servlet-name>Monitoring</servlet-name> - <url-pattern>/report.json</url-pattern> - </servlet-mapping> - <servlet-mapping> - <servlet-name>Monitoring</servlet-name> - <url-pattern>/report.xml</url-pattern> - </servlet-mapping> + <filter-mapping> + <filter-name>Monitoring</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> </web-app> Added: commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/bootstrap.min.css URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/bootstrap.min.css?rev=1508066&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/bootstrap.min.css (added) +++ commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/bootstrap.min.css Mon Jul 29 13:47:39 2013 @@ -0,0 +1,10 @@ +@import url(//fonts.googleapis.com/css?family=Telex);/*! + * Bootstrap v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ [... 3 lines stripped ...] Added: commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/monitoring.css URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/monitoring.css?rev=1508066&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/monitoring.css (added) +++ commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/monitoring.css Mon Jul 29 13:47:39 2013 @@ -0,0 +1,34 @@ +/* + * 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. + */ +table .blue { + color: #049cdb; + border-bottom-color: #049cdb; +} +th#report-table { + text-align: center; +} +.tablesorter-headerAsc { + background-image: url('$base/resources/images/asc.gif'); + background-repeat: no-repeat; + background-position: right; +} + +.tablesorter-headerDesc { + background-image: url('$base/resources/images/desc.gif'); + background-repeat: no-repeat; + background-position: right; +} Added: commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/images/asc.gif URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/images/asc.gif?rev=1508066&view=auto ============================================================================== Binary file - no diff available. Propchange: commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/images/asc.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/images/desc.gif URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/images/desc.gif?rev=1508066&view=auto ============================================================================== Binary file - no diff available. Propchange: commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/images/desc.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Copied: commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java (from r1507950, commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormattingVisitorTest.java) URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java?p2=commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java&p1=commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormattingVisitorTest.java&r1=1507950&r2=1508066&rev=1508066&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormattingVisitorTest.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java Mon Jul 29 13:47:39 2013 @@ -18,76 +18,67 @@ package org.apache.commons.monitoring.reporting; import org.apache.commons.monitoring.Role; -import org.apache.commons.monitoring.Visitor; import org.apache.commons.monitoring.monitors.Monitor; import org.apache.commons.monitoring.reporting.format.CSVFormat; import org.apache.commons.monitoring.reporting.format.Format; -import org.apache.commons.monitoring.reporting.format.FormattingVisitor; -import org.apache.commons.monitoring.reporting.format.RoleFilter; -import org.apache.commons.monitoring.repositories.DefaultRepository; import org.apache.commons.monitoring.repositories.Repository; -import org.custommonkey.xmlunit.XMLAssert; +import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -import java.io.InputStreamReader; import java.io.PrintWriter; -import java.io.Reader; -import java.io.StringReader; import java.io.StringWriter; +import java.util.Collections; import static org.junit.Assert.assertEquals; -/** - * @author <a href="mailto:nico...@apache.org">Nicolas De Loof</a> - */ -public class FormattingVisitorTest { - private static Repository repository; - +public class FormatsTest { @BeforeClass public static void setup() { - repository = new DefaultRepository(); + Repository.INSTANCE.clear(); - final Monitor monitor = repository.getMonitor(new Monitor.Key("RendererTest", "unit")); + final Monitor monitor = Repository.INSTANCE.getMonitor(new Monitor.Key("RendererTest", "unit")); monitor.updateConcurrency(1); monitor.getCounter(Role.FAILURES).add(1.); } + @AfterClass + public static void clear() { + Repository.INSTANCE.clear(); + } + @Test - public void renderToXML() - throws Exception { + public void renderToXML() throws Exception { final StringWriter out = new StringWriter(); - final Visitor v = new FormattingVisitor(Format.Defaults.XML_PRETTY, new PrintWriter(out), RoleFilter.Defaults.FAILURES); - repository.accept(v); + Format.Defaults.XML.render(new PrintWriter(out), Collections.<String, Object>emptyMap()); - final Reader expected = new InputStreamReader(getClass().getResourceAsStream("RendererTest.xml")); - XMLAssert.assertXMLEqual(expected, new StringReader(out.toString())); + assertEquals("<repository>" + + "<monitor name=\"RendererTest\" category=\"unit\">" + + "<counter role=\"failures\" unit=\"u\" Hits=\"1.0\" Max=\"1.0\" Mean=\"1.0\" Min=\"1.0\" StandardDeviation=\"0.0\" Sum=\"1.0\" " + + "SumOfLogs=\"0.0\" SumOfSquares=\"0.0\" Variance=\"0.0\" GeometricMean=\"1.0\" Value=\"1.0\" MaxConcurrency=\"1.0\" />" + + "</monitor>" + + "</repository>".trim(), out.toString()); } @Test - public void renderToJSON() - throws Exception { + public void renderToJSON() throws Exception { final StringWriter out = new StringWriter(); - final Visitor v = new FormattingVisitor(Format.Defaults.JSON_PRETTY, new PrintWriter(out), RoleFilter.Defaults.FAILURES); - repository.accept(v); + Format.Defaults.JSON.render(new PrintWriter(out), Collections.<String, Object>emptyMap()); - assertEquals("{\n" + - " \"RendererTest\":{\n" + - " \"category\": \"unit\",\n" + - " \"failures\":{\"type\":\"counter\",\"Hits\":\"1.0\",\"Max\":\"1.0\",\"Mean\":\"1.0\",\"Min\":\"1.0\",\"StandardDeviation\":\"0.0\",\"Sum\":\"1.0\",\"SumOfLogs\":\"0.0\",\"SumOfSquares\":\"0.0\",\"Variance\":\"0.0\",\"GeometricMean\":\"1.0\",\"Value\":\"1.0\",\"MaxConcurrency\":\"1.0\"}\n" + - " }\n" + - "}", out.toString()); + assertEquals("{\"monitors\":[" + + "{\"name\":\"RendererTest\",\"category\":\"unit\",\"counters\":[" + + "{\"role\":\"failures\",\"unit\":\"u\",\"Hits\":\"1.0\",\"Max\":\"1.0\",\"Mean\":\"1.0\",\"Min\":\"1.0\"," + + "\"StandardDeviation\":\"0.0\",\"Sum\":\"1.0\",\"SumOfLogs\":\"0.0\",\"SumOfSquares\":\"0.0\",\"Variance\":\"0.0\"," + + "\"GeometricMean\":\"1.0\",\"Value\":\"1.0\",\"MaxConcurrency\":\"1.0\"}]}]}", out.toString()); } @Test - public void renderToCSV() - throws Exception { + public void renderToCSV() throws Exception { final StringWriter out = new StringWriter(); - final Visitor v = new FormattingVisitor(Format.Defaults.CSV, new PrintWriter(out), RoleFilter.Defaults.FAILURES); - repository.accept(v); + Format.Defaults.CSV.render(new PrintWriter(out), Collections.<String, Object>emptyMap()); assertEquals(CSVFormat.HEADER + - "RendererTest;unit;failures;1.0;1.0;1.0;1.0;0.0;1.0;0.0;0.0;0.0;1.0;1.0;1.0\n", + "RendererTest;unit;failures (u);1.0;1.0;1.0;1.0;0.0;1.0;0.0;0.0;0.0;1.0;1.0;1.0\n", out.toString()); } }