001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.commons.monitoring.reporting; 019 020 import org.apache.commons.monitoring.Role; 021 import org.apache.commons.monitoring.counters.Counter; 022 import org.apache.commons.monitoring.reporting.web.handler.api.Template; 023 import org.apache.commons.monitoring.reporting.web.handler.api.TemplateHelper; 024 import org.apache.commons.monitoring.reporting.web.plugin.report.format.CSVFormat; 025 import org.apache.commons.monitoring.reporting.web.plugin.report.format.Format; 026 import org.apache.commons.monitoring.reporting.web.template.Templates; 027 import org.apache.commons.monitoring.repositories.Repository; 028 import org.junit.AfterClass; 029 import org.junit.BeforeClass; 030 import org.junit.Test; 031 032 import java.io.PrintWriter; 033 import java.io.StringWriter; 034 import java.util.Collections; 035 036 import static org.junit.Assert.assertEquals; 037 038 public class FormatsTest { 039 @BeforeClass 040 public static void setup() { 041 Repository.INSTANCE.clear(); 042 Templates.init("", ""); 043 044 final Counter counter = Repository.INSTANCE.getCounter(new Counter.Key(Role.FAILURES, "RendererTest")); 045 counter.updateConcurrency(1); 046 counter.add(1.); 047 } 048 049 @AfterClass 050 public static void clear() { 051 Repository.INSTANCE.clear(); 052 } 053 054 @Test 055 public void renderToXML() throws Exception { 056 final StringWriter out = new StringWriter(); 057 final TemplateHelper helper = new TemplateHelper(new PrintWriter(out), Collections.<String, Object>emptyMap()); 058 final Template template = Format.Defaults.XML.render(Collections.<String, Object>emptyMap()); 059 helper.renderPlain(template.getTemplate(), template.getUserParams()); 060 061 assertEquals("<?xml version=\"1.0\"?> <repository> " + 062 "<counter name=\"RendererTest\" role=\"failures\" unit=\"u\" Hits=\"1.0\" Max=\"1.0\" Mean=\"1.0\" Min=\"1.0\" StandardDeviation=\"0.0\" Sum=\"1.0\" " + 063 "SumOfLogs=\"0.0\" SumOfSquares=\"0.0\" Variance=\"0.0\" GeometricMean=\"1.0\" Value=\"1.0\" Concurrency=\"0.0\" MaxConcurrency=\"1.0\" />" + 064 " </repository>", inline(out)); 065 } 066 067 @Test 068 public void renderToJSON() throws Exception { 069 final StringWriter out = new StringWriter(); 070 final TemplateHelper helper = new TemplateHelper(new PrintWriter(out), Collections.<String, Object>emptyMap()); 071 final Template template = Format.Defaults.JSON.render(Collections.<String, Object>emptyMap()); 072 helper.renderPlain(template.getTemplate(), template.getUserParams()); 073 074 assertEquals("{\"counters\":[" + 075 " {\"name\":\"RendererTest\", \"role\":\"failures\",\"unit\":\"u\",\"Hits\":\"1.0\",\"Max\":\"1.0\",\"Mean\":\"1.0\",\"Min\":\"1.0\"," + 076 "\"StandardDeviation\":\"0.0\",\"Sum\":\"1.0\",\"SumOfLogs\":\"0.0\",\"SumOfSquares\":\"0.0\",\"Variance\":\"0.0\"," + 077 "\"GeometricMean\":\"1.0\",\"Value\":\"1.0\",\"Concurrency\":\"0.0\",\"MaxConcurrency\":\"1.0\"} ]}", inline(out)); 078 } 079 080 @Test 081 public void renderToCSV() throws Exception { 082 final StringWriter out = new StringWriter(); 083 final TemplateHelper helper = new TemplateHelper(new PrintWriter(out), Collections.<String, Object>emptyMap()); 084 final Template template = Format.Defaults.CSV.render(Collections.<String, Object>emptyMap()); 085 helper.renderPlain(template.getTemplate(), template.getUserParams()); 086 087 assertEquals(CSVFormat.HEADER + 088 "RendererTest;failures (u);1.0;1.0;1.0;1.0;0.0;1.0;0.0;0.0;0.0;1.0;1.0;0.0;1.0\n", 089 out.toString()); 090 } 091 092 private static String inline(StringWriter out) { 093 return out.toString().replace("\r\n", " ").replace("\n", " ").replaceAll(" +", " ").replace("\t", "").trim(); 094 } 095 }