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 }