You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Philippe Mouawad <ph...@gmail.com> on 2017/06/08 11:59:37 UTC
Re: svn commit: r1798048 - in /jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend:
ErrorMetric.java SamplerMetric.java influxdb/InfluxdbBackendListenerClient.java
Hello Maxime,
To simplify testing would it be possible to provide a sample grafana and
test plan ?
Thanks
On Thursday, June 8, 2017, <mc...@apache.org> 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.
Re: svn commit: r1798048 - in /jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend:
ErrorMetric.java SamplerMetric.java influxdb/InfluxdbBackendListenerClient.java
Posted by Philippe Mouawad <ph...@gmail.com>.
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 <ma...@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.mouawad@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, <mchassagneux@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.
Re: svn commit: r1798048 - in /jmeter/trunk/src/components/org/apache/jmeter/visualizers/backend:
ErrorMetric.java SamplerMetric.java influxdb/InfluxdbBackendListenerClient.java
Posted by Maxime Chassagneux <ma...@gmail.com>.
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 <ph...@gmail.com>:
> Hello Maxime,
> To simplify testing would it be possible to provide a sample grafana and
> test plan ?
>
> Thanks
>
> On Thursday, June 8, 2017, <mc...@apache.org> 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.
>