JMeter: CSV Data Set Config «Строки читаются в начале каждой итерации теста». - как именно это должно работать? - PullRequest
1 голос
/ 08 ноября 2019

Меня интересует работа Конфигурация набора данных CSV по JMeter правилам, установленным с правилами определения области действия и порядком выполнения .

Для Конфигурация набора данных CSV сказано "Строки читаются в начале каждой итерации теста". Сначала я подумал, что это говорит о потоках, затем я прочитал Используйте jmeter для тестирования нескольких веб-сайтов , где config помещается в loop controller и строки читаются на каждой итерации цикла. Я проверил с сейчас 5.1.1, и это работает. Но если я положу config в корень плана тестирования, то новая строка будет читать только каждую итерацию thread. Могу ли я ожидать такого поведения, основанного только на документах без проб и ошибок? Я не могу видеть, как это вытекает из scoping + exec order + документов на csv config element. Я что-то упускаю?

Буду признателен за некоторые идеи, почему такое фактическое поведение удобно и почему функциональность реализована таким образом.

PS как я могу прочитать одну строку cvs в vars в начале теста, а затем прекратить запуск этой конфигурации, чтобы сэкономить время процессора? В версии 2.x была конфигурация VariablesFromCSV для этого ...

1 Ответ

2 голосов
/ 12 ноября 2019
  1. Группа потоков имеет внутри себя неявный контроллер контура внутри:

    enter image description here

    следующая строка из CSV будет прочитана, как только Событие LoopIterationListener.iterationStart () , независимо от происхождения

  2. Безопасно использовать CSVКонфигурация набора данных, поскольку она не сохраняет весь файл в памяти, а читает следующую строку только тогда, когда происходит вышеупомянутое событие iterationStart(). Однако он сохраняет открытый дескриптор файла . Если у вас действительно много оперативной памяти и недостаточно файловых дескрипторов, вы можете прочитать файл в память в начале теста, используя, например, setUp Thread Group и JSR223 Sampler со следующимкод

    SampleResult.setIgnore()
    
    new File('/path/to/csv/file').readLines().eachWithIndex { line, index ->
        props.put('line_' + (index + 1), line)
    }  
    

    enter image description here

    по завершении вы сможете ссылаться на первую строку, используя функцию __ P () как ${__P(line_1,)}, вторая строка как ${__P(line_2,)} и т. д.

    enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...