#multithreading #csv #jmeter
#многопоточность #csv #jmeter
Вопрос:
У меня есть план тестирования с несколькими группами потоков, которые записывают результаты сводного отчета в один и тот же csv-файл, размещенный на сервере, это отлично работает с использованием networkdrive (z:) и изменением jmeter.properties -> resultcollector.action_if_file_exists=APPEND.
Наконец, у меня есть группа потоков прерывания, которая вставляет данные csv на сервер sql (предыдущий используемый сетевой диск размещен на этом сервере в c:jmeterresults.csv ), а затем он удаляет CSV-файл. Дело в том, что когда я запускаю полный план тестирования, у меня всегда возникает эта ошибка: «Невозможно выполнить массовую загрузку, потому что файл «c:jmeterresults.csv » не удалось открыть. Код ошибки операционной системы 32″
Странно то, что если я запускаю только группу потоков удаления, она работает нормально, она выполняет массовую вставку в sql server, а затем удаляет de csv.
Я начал 2 дня назад с Jmeter, поэтому я уверен, что я что-то недопонимаю: S
Ответ №1:
Это происходит потому, что сводный отчет (а также другие прослушиватели) сохраняют файлы открытыми до окончания теста, поэтому вам нужно каким-то образом вызвать это событие «закрыть».
Начиная с JMeter 3.1, предполагается, что вы используете тестовые элементы JSR223 и Groovy language для написания сценариев, поэтому замените этот постпроцессор Beanshell на постпроцессор JSR223 и используйте следующий код:
import org.apache.jmeter.reporters.ResultCollector
import org.apache.jorphan.collections.SearchByClass
def engine = engine = ctx.getEngine()
def test = engine.getClass().getDeclaredField('test')
test.setAccessible(true)
def testPlanTree = test.get(engine)
SearchByClass<ResultCollector> listenerSearch = new SearchByClass<>(ResultCollector.class)
testPlanTree.traverse(listenerSearch)
Collection<ResultCollector> listeners = listenerSearch.getSearchResults()
listeners.each { listener ->
def files = listener.files
files.each { file ->
file.value.pw.close()
}
}
new File('z:/result.csv').delete()
Дополнительная информация о Groovy scripting в JMeter: Apache Groovy — почему и как вы должны его использовать