It was in case your json dashboard was related to test plan. I wanted a simple autonomous test plan using Java Request that could be used to test your code.
Thanks On Thursday, June 8, 2017, Maxime Chassagneux <maxime.chassagn...@gmail.com> wrote: > Hello Philippe, > > I commit a grafana template ( json format ) in the extra folder of JMeter. > But I don't understand what you want with a test plan, as the Backend > Listener work only with a Influxdb server. > > 2017-06-08 13:59 GMT+02:00 Philippe Mouawad <philippe.moua...@gmail.com > <javascript:;>>: > > > Hello Maxime, > > To simplify testing would it be possible to provide a sample grafana and > > test plan ? > > > > Thanks > > > > On Thursday, June 8, 2017, <mchassagn...@apache.org <javascript:;>> > wrote: > > > > > Author: mchassagneux > > > Date: Thu Jun 8 11:53:42 2017 > > > New Revision: 1798048 > > > > > > URL: http://svn.apache.org/viewvc?rev=1798048&view=rev > > > Log: > > > InfluxdbBackendListener : add number of errors by response code and > > > message for each transaction > > > Bugzilla Id: 61167 > > > > > > Added: > > > jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > > backend/ErrorMetric.java > > > Modified: > > > jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > > backend/SamplerMetric.java > > > jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > > backend/influxdb/InfluxdbBackendListenerClient.java > > > > > > Added: jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > > backend/ErrorMetric.java > > > URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/ > > > org/apache/jmeter/visualizers/backend/ErrorMetric.java?rev= > > > 1798048&view=auto > > > ============================================================ > > > ================== > > > --- jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > backend/ErrorMetric.java > > > (added) > > > +++ jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > backend/ErrorMetric.java > > > Thu Jun 8 11:53:42 2017 > > > @@ -0,0 +1,82 @@ > > > +/* > > > + * 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.jmeter.visualizers.backend; > > > + > > > +import org.apache.jmeter.samplers.SampleResult; > > > + > > > +/** > > > + * Object representing an error by a response code and response > message > > > + * @since 3.3 > > > + */ > > > +public class ErrorMetric { > > > + > > > + private String responseCode = ""; > > > + private String responseMessage = ""; > > > + > > > + public ErrorMetric() { > > > + } > > > + > > > + public ErrorMetric(SampleResult result) { > > > + responseCode = result.getResponseCode(); > > > + responseMessage = result.getResponseMessage(); > > > + } > > > + > > > + /** > > > + * @return the response code , '0' if he code is empty > > > + */ > > > + public String getResponseCode() { > > > + if (responseCode.isEmpty()) { > > > + return "0"; > > > + } else { > > > + return responseCode; > > > + } > > > + } > > > + > > > + /** > > > + * @return the response message , 'none' if he code is empty > > > + */ > > > + public String getResponseMessage() { > > > + if (responseMessage.isEmpty()) { > > > + return "None"; > > > + } else { > > > + return responseMessage; > > > + } > > > + } > > > + > > > + @Override > > > + public boolean equals(Object other) { > > > + if (!(other instanceof ErrorMetric)) { > > > + return false; > > > + } > > > + > > > + ErrorMetric otherError = (ErrorMetric) other; > > > + if (getResponseCode().equalsIgnoreCase(otherError. > > > getResponseCode()) > > > + && getResponseMessage().equalsIgnoreCase(otherError. > > getResponseMessage())) > > > { > > > + return true; > > > + } else { > > > + return false; > > > + } > > > + } > > > + > > > + @Override > > > + public int hashCode() { > > > + return getResponseCode().hashCode() + > > > getResponseMessage().hashCode(); > > > + } > > > + > > > +} > > > > > > Modified: jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > > backend/SamplerMetric.java > > > URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/ > > > org/apache/jmeter/visualizers/backend/SamplerMetric.java? > > > rev=1798048&r1=1798047&r2=1798048&view=diff > > > ============================================================ > > > ================== > > > --- jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > backend/SamplerMetric.java > > > (original) > > > +++ jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > backend/SamplerMetric.java > > > Thu Jun 8 11:53:42 2017 > > > @@ -21,6 +21,7 @@ package org.apache.jmeter.visualizers.ba > > > import java.util.ArrayList; > > > import java.util.Arrays; > > > import java.util.Collections; > > > +import java.util.HashMap; > > > import java.util.List; > > > > > > import org.apache.commons.math3.stat.descriptive. > DescriptiveStatistics; > > > @@ -61,6 +62,8 @@ public class SamplerMetric { > > > private int successes; > > > private int failures; > > > private int hits; > > > + private HashMap<ErrorMetric, Integer> errors = new > > > HashMap<ErrorMetric, Integer>(); > > > + > > > > > > /** > > > * > > > @@ -95,7 +98,9 @@ public class SamplerMetric { > > > successes+=result.getSampleCount()-result. > getErrorCount(); > > > } else { > > > failures+=result.getErrorCount(); > > > - } > > > + ErrorMetric error = new ErrorMetric(result); > > > + errors.put(error, errors.getOrDefault(error, 0) + > > > result.getErrorCount() ); > > > + } > > > long time = result.getTime(); > > > allResponsesStats.addValue(time); > > > pctResponseStats.addValue(time); > > > @@ -140,6 +145,7 @@ public class SamplerMetric { > > > default: > > > // This cannot happen > > > } > > > + errors.clear(); > > > successes = 0; > > > failures = 0; > > > hits = 0; > > > @@ -302,4 +308,12 @@ public class SamplerMetric { > > > public int getHits() { > > > return hits; > > > } > > > + > > > + /** > > > + * Returns details of errors occurs > > > + * @return errors > > > + */ > > > + public HashMap<ErrorMetric, Integer> getErrors() { > > > + return errors; > > > + } > > > } > > > > > > Modified: jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > > backend/influxdb/InfluxdbBackendListenerClient.java > > > URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/ > > > org/apache/jmeter/visualizers/backend/influxdb/ > > > InfluxdbBackendListenerClient.java?rev=1798048&r1=1798047& > > > r2=1798048&view=diff > > > ============================================================ > > > ================== > > > --- jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > > backend/influxdb/InfluxdbBackendListenerClient.java (original) > > > +++ jmeter/trunk/src/components/org/apache/jmeter/visualizers/ > > > backend/influxdb/InfluxdbBackendListenerClient.java Thu Jun 8 > 11:53:42 > > > 2017 > > > @@ -62,8 +62,11 @@ public class InfluxdbBackendListenerClie > > > > > > private static final String TAG_TRANSACTION = ",transaction="; > > > > > > - private static final String TAG_STATUS = ",status="; > > > + // As influxdb can't rename tag for now, keep the old name for > > > backward compatibility > > > + private static final String TAG_STATUS = ",statut="; > > > private static final String TAG_APPLICATION = ",application="; > > > + private static final String TAG_RESPONSE_CODE = ",responseCode="; > > > + private static final String TAG_RESPONSE_MESSAGE = > > > ",responseMessage="; > > > > > > private static final String METRIC_COUNT = "count="; > > > private static final String METRIC_COUNT_ERROR = "countError="; > > > @@ -172,8 +175,24 @@ public class InfluxdbBackendListenerClie > > > // FOR KO STATUS > > > addMetric(transaction, metric.getFailures(), true, TAG_KO, > > > metric.getKoMean(), metric.getKoMinTime(), > > > metric.getKoMaxTime(), koPercentiles.values(), > > > metric::getKoPercentile); > > > + > > > + metric.getErrors().forEach((error, count) -> > > > addErrorMetric(transaction, error.getResponseCode(), > > > + error.getResponseMessage(), count)); > > > } > > > > > > + private void addErrorMetric(String transaction, String > responseCode, > > > String responseMessage, long count) { > > > + if (count > 0) { > > > + StringBuilder tag = new StringBuilder(70); > > > + tag.append(TAG_APPLICATION).append(application); > > > + tag.append(TAG_TRANSACTION).append(transaction); > > > + tag.append(TAG_RESPONSE_CODE).append( > > > AbstractInfluxdbMetricsSender.tagToStringValue(responseCode)); > > > + tag.append(TAG_RESPONSE_MESSAGE).append( > > > AbstractInfluxdbMetricsSender.tagToStringValue(responseMessage)); > > > + > > > + StringBuilder field = new StringBuilder(30); > > > + field.append(METRIC_COUNT).append(count); > > > + influxdbMetricsManager.addMetric(measurement, > > > tag.toString(), field.toString()); > > > + } > > > + } > > > > > > private void addMetric(String transaction, int count, boolean > > > includeResponseCode, > > > String statut, double mean, double minTime, double > maxTime, > > > > > > > > > > > > > -- > > Cordialement. > > Philippe Mouawad. > > > -- Cordialement. Philippe Mouawad.