Как сгенерировать файл JSON с помощью генератора отчетов JMeter

#json #jmeter #exporter #reportgenerator

#json #jmeter #экспортер #reportgenerator

Вопрос:

Я пытаюсь создать файл statistics.json с помощью JMeter, используя ReportGenerator, заполненный результатами моих тестов .jmx. Возможно ли это сделать с помощью JMeter?

Я прошел этот урок: https://jmeter.apache.org/usermanual/generating-dashboard.html который фокусируется на создании панели мониторинга html с использованием генератора отчетов, но у меня также есть требование проекта по созданию / обновлению файла statstics.json. Я уже извлек необходимые данные с помощью постпроцессора JSON Extractor, и я могу получить пользовательские переменные из этого экстрактора, которые будут отображаться в моем отладочном ответе и в моем CSV-файле (после добавления некоторых sample_variables в user.properties). К сожалению, мне не удалось найти больше информации о том, как создать файл JSON с этими ответами.

В моем файле reportgenerator.properties я вижу только те части, которые относятся к json:

 jmeter.reportgenerator.exporter.json.classname=org.apache.jmeter.report.dashboard.JsonExporter
jmeter.reportgenerator.exporter.json.property.output_dir=report-output
 

Я ищу некоторые настройки, которые позволили бы мне редактировать то, что входит в этот файл JSON, но у меня возникли проблемы с поиском информации в документах. Нужно ли отправлять или устанавливать пользовательские переменные в другом файле настроек? Любая помощь, разъясняющая это, была бы очень признательна!

Комментарии:

1. Принятый ответ правильный. Тем не менее, я хотел бы добавить, что я смог выполнить свое требование, используя постпроцессор JSR223 для написания скрипта groovy, который создал csv-файл и заполнил его любыми данными, которые мне были нужны.

Ответ №1:

Глядя на исходный код JMeter, вы не можете эффективно контролировать то, что экспортируется в файл statistics.json извне, вам придется либо изменить код класса JsonExporter, либо придумать собственную реализацию AbstractDataExporter и выбрать, что, где и как хранить.

 private void createStatistic(Map<String, SamplingStatistic> statistics, MapResultData resultData) {
    LOGGER.debug("Creating statistics for result data:{}", resultData);
    SamplingStatistic statistic = new SamplingStatistic();
    ListResultData listResultData = (ListResultData) resultData.getResult("data");
    statistic.setTransaction((String) ((ValueResultData)listResultData.get(0)).getValue());
    statistic.setSampleCount((Long) ((ValueResultData)listResultData.get(1)).getValue());
    statistic.setErrorCount((Long) ((ValueResultData)listResultData.get(2)).getValue());
    statistic.setErrorPct(((Double) ((ValueResultData)listResultData.get(3)).getValue()).floatValue());
    statistic.setMeanResTime((Double) ((ValueResultData)listResultData.get(4)).getValue());
    statistic.setMinResTime((Long) ((ValueResultData)listResultData.get(5)).getValue());
    statistic.setMaxResTime((Long) ((ValueResultData)listResultData.get(6)).getValue());
    statistic.setMedianResTime((Double) ((ValueResultData)listResultData.get(7)).getValue());
    statistic.setPct1ResTime((Double) ((ValueResultData)listResultData.get(8)).getValue());
    statistic.setPct2ResTime((Double) ((ValueResultData)listResultData.get(9)).getValue());
    statistic.setPct3ResTime((Double) ((ValueResultData)listResultData.get(10)).getValue());
    statistic.setThroughput((Double) ((ValueResultData)listResultData.get(11)).getValue());
    statistic.setReceivedKBytesPerSec((Double) ((ValueResultData)listResultData.get(12)).getValue());
    statistic.setSentKBytesPerSec((Double) ((ValueResultData)listResultData.get(13)).getValue());
    statistics.put(statistic.getTransaction(), statistic);
}
 

Более простым вариантом было бы записать ваши примерные переменные в отдельный файл с помощью гибкого средства записи файлов

Комментарии:

1. Это очень полезно, спасибо! Теперь изучаем гибкую программу записи файлов.

Ответ №2:

Я оставляю принятый ответ, потому что он правильный. Однако я хотел бы добавить, что я смог выполнить свое требование, используя постпроцессор JSR223 для написания скрипта groovy, который создает csv-файл везде, где мне нужно, и заполняет его любыми данными, которые мне нужны.