tag.append(userTag); StringBuilder field = new StringBuilder(80); field.append(METRIC_MIN_ACTIVE_THREADS).append(userMetrics.getMinActiveThreads()).append(','); field.append(METRIC_MAX_ACTIVE_THREADS).append(userMetrics.getMaxActiveThreads()).append(','); field.append(METRIC_MEAN_ACTIVE_THREADS).append(userMetrics.getMeanActiveThreads()).append(','); field.append(METRIC_STARTED_THREADS).append(userMetrics.getStartedThreads()).append(','); field.append(METRIC_ENDED_THREADS).append(userMetrics.getFinishedThreads());
@Override public void teardownTest(BackendListenerContext context) throws Exception { if(log.isDebugEnabled()) { log.debug("{}: teardownTest", getClass().getName()); } metricsPerSampler.clear(); userMetrics.clear(); }
/** * Periodically writes virtual users metrics to influxDB. */ public void run() { try { ThreadCounts tc = JMeterContextService.getThreadCounts(); addVirtualUsersMetrics(getUserMetrics().getMinActiveThreads(), getUserMetrics().getMeanActiveThreads(), getUserMetrics().getMaxActiveThreads(), tc.startedThreads, tc.finishedThreads); } catch (Exception e) { LOGGER.error("Failed writing to influx", e); } }
@Override public void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context) { synchronized (LOCK) { UserMetric userMetrics = getUserMetrics(); for (SampleResult sampleResult : sampleResults) { userMetrics.add(sampleResult); Matcher matcher = samplersToFilter.matcher(sampleResult.getSampleLabel()); if (!summaryOnly && (matcher.find())) { SamplerMetric samplerMetric = getSamplerMetricInfluxdb(sampleResult.getSampleLabel()); samplerMetric.add(sampleResult); } SamplerMetric cumulatedMetrics = getSamplerMetricInfluxdb(CUMULATED_METRICS); cumulatedMetrics.add(sampleResult); } } }
/** * Periodically writes virtual users metrics to influxDB. */ public void run() { try { ThreadCounts tc = JMeterContextService.getThreadCounts(); addVirtualUsersMetrics(getUserMetrics().getMinActiveThreads(), getUserMetrics().getMeanActiveThreads(), getUserMetrics().getMaxActiveThreads(), tc.startedThreads, tc.finishedThreads); } catch (Exception e) { LOGGER.error("Failed writing to influx", e); } }
/** * Processes sampler results. */ public void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context) { for (SampleResult sampleResult : sampleResults) { getUserMetrics().add(sampleResult); if ((null != regexForSamplerList && sampleResult.getSampleLabel().matches(regexForSamplerList)) || samplersToFilter.contains(sampleResult.getSampleLabel())) { Point point = Point.measurement(RequestMeasurement.MEASUREMENT_NAME).time(System.currentTimeMillis(), TimeUnit.MILLISECONDS) .tag(RequestMeasurement.Tags.REQUEST_NAME, sampleResult.getSampleLabel()).addField(RequestMeasurement.Fields.ERROR_COUNT, sampleResult.getErrorCount()) .addField(RequestMeasurement.Fields.RESPONSE_TIME, sampleResult.getTime()).build(); try { exportFileWriter.append(point.lineProtocol()); exportFileWriter.newLine(); } catch (IOException e) { throw new RuntimeException(e); } } } }
graphiteMetricsManager.addMetric(timestampInSeconds, TEST_CONTEXT_NAME, METRIC_MIN_ACTIVE_THREADS, Integer.toString(userMetric.getMinActiveThreads())); graphiteMetricsManager.addMetric(timestampInSeconds, TEST_CONTEXT_NAME, METRIC_MAX_ACTIVE_THREADS, Integer.toString(userMetric.getMaxActiveThreads())); graphiteMetricsManager.addMetric(timestampInSeconds, TEST_CONTEXT_NAME, METRIC_MEAN_ACTIVE_THREADS, Integer.toString(userMetric.getMeanActiveThreads())); graphiteMetricsManager.addMetric(timestampInSeconds, TEST_CONTEXT_NAME, METRIC_STARTED_THREADS, Integer.toString(userMetric.getStartedThreads())); graphiteMetricsManager.addMetric(timestampInSeconds, TEST_CONTEXT_NAME, METRIC_FINISHED_THREADS, Integer.toString(userMetric.getFinishedThreads()));
@Override public void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context) { boolean samplersToFilterMatch; synchronized (LOCK) { UserMetric userMetrics = getUserMetrics(); for (SampleResult sampleResult : sampleResults) { userMetrics.add(sampleResult); if(!summaryOnly) { if (useRegexpForSamplersList) { Matcher matcher = pattern.matcher(sampleResult.getSampleLabel()); samplersToFilterMatch = matcher.matches(); } else { samplersToFilterMatch = samplersToFilter.contains(sampleResult.getSampleLabel()); } if (samplersToFilterMatch) { SamplerMetric samplerMetric = getSamplerMetric(sampleResult.getSampleLabel()); samplerMetric.add(sampleResult); } } SamplerMetric cumulatedMetrics = getSamplerMetric(CUMULATED_METRICS); cumulatedMetrics.add(sampleResult); } } }
@Override public void setupTest(BackendListenerContext context) throws Exception { if(log.isDebugEnabled()) { log.debug("{}: setupTest", getClass().getName()); } metricsPerSampler.clear(); userMetrics.clear(); }
/** * Processes sampler results. */ public void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context) { // Gather all the listeners List<SampleResult> allSampleResults = new ArrayList<SampleResult>(); for (SampleResult sampleResult : sampleResults) { allSampleResults.add(sampleResult); if(recordSubSamples) { for (SampleResult subResult : sampleResult.getSubResults()) { allSampleResults.add(subResult); } } } for(SampleResult sampleResult: allSampleResults) { getUserMetrics().add(sampleResult); if ((null != regexForSamplerList && sampleResult.getSampleLabel().matches(regexForSamplerList)) || samplersToFilter.contains(sampleResult.getSampleLabel())) { Point point = Point.measurement(RequestMeasurement.MEASUREMENT_NAME).time( System.currentTimeMillis() * ONE_MS_IN_NANOSECONDS + getUniqueNumberForTheSamplerThread(), TimeUnit.NANOSECONDS) .tag(RequestMeasurement.Tags.REQUEST_NAME, sampleResult.getSampleLabel()) .addField(RequestMeasurement.Fields.ERROR_COUNT, sampleResult.getErrorCount()) .addField(RequestMeasurement.Fields.THREAD_NAME, sampleResult.getThreadName()) .tag(RequestMeasurement.Tags.RUN_ID, runId) .tag(RequestMeasurement.Tags.TEST_NAME, testName) .addField(RequestMeasurement.Fields.NODE_NAME, nodeName) .addField(RequestMeasurement.Fields.RESPONSE_TIME, sampleResult.getTime()).build(); influxDB.write(influxDBConfig.getInfluxDatabase(), influxDBConfig.getInfluxRetentionPolicy(), point); } } }