#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-файл везде, где мне нужно, и заполняет его любыми данными, которые мне нужны.