Это решение будет работать для конфигураций, которыми вы поделились, 5 одновременных пользователей загрузка 10 файлов каждая.
Прежде всего, создайте отдельные файлы для каждого потока (у вас есть 10 файлов, скопируйте их в 50) и переименуйте их, как показано ниже
Thread1_file1_0
Thread1_file2_0
Thread1_file3_0
.
.
Thread1_file10_0
Thread2_file1_0
Thread2_file2_0
.
.
Thread5_file10_0
Затем создайте файл CSV и добавьте расширения файлов в столбце A. Убедитесь, что row 1
отражает расширение Threadx_file1_0
, а row 2
отражает расширение Threadx_file2_0
, как показано ниже, и сохраните файл csv в той же папке, что и скрипт jmx
Теперь к настройкам скрипта добавьте 2 counters перед вашим запросом POST (который загружает файлы) со следующими настройками
Первый счетчик
Старт 0
Увеличение 1
Ссылочное имя originalName
Счетчик треков независимо для каждого пользователя Yes
Сброс счетчика на каждой итерации группы потоков No
Второй счетчик
Старт 1
Увеличение 1
Ссылочное имя Iteration
Счетчик треков независимо для каждого пользователя Yes
Сброс счетчика на каждой итерации группы потоков No
Теперь добавьте контроллер цикла с счетчиком циклов, установленным в 10
, затем добавьте еще counter , OS Process Sampler и CSV Data Set Config как дочерний элемент контроллера цикла с указанными ниже конфигурациями
Конфигурации счетчика
Старт 1
Увеличение 1
Ссылочное имя fileNumber
Счетчик треков независимо для каждого пользователя Yes
Сброс счетчика на каждой итерации группы потоков Yes
Конфигурация набора данных CSV
Имя файла extensionsCSVFile.csv
Имена переменных extension
Конфигурации OS Process Sampler
Команда cmd
Параметры команды
/C
ren {path to your folder}\Thread${__threadNum}_file${fileNumber}_${originalName}.${extension} Thread${__threadNum}_file${fileNumber}_${Iteration}.${extension}
Каждая строка в качестве отдельного параметра. Теперь используйте имя файла в вашем почтовом запросе, как показано ниже
{path}\Thread${__threadNum}_file1_${Iteration}.pdf
{path}\Thread${__threadNum}_file2_${Iteration}.pdf
.
.
{path}\Thread${__threadNum}_file10_${Iteration}.docx
Это сделает работу, но я предлагаю вам также добавить способ вернуть имена обратно в Thread1_file1_0
. Вы можете сделать это, выполнив следующие шаги
Добавьте BeanShell PostProcessor как дочерний элемент OS Process Sampler с кодом ниже в области кода
props.put("lastIteration", vars.get("Iteration"));
Теперь добавьте группу потоков tearDown , затем скопируйте контроллер цикла со всеми его элементами из предыдущих шагов и вставьте в группу потоков tearDown (кроме BeanShell PostProcessor , удалите его после вставки).
Теперь перейдите к OS Process Sampler в пределах tearDown Thread Group и настройте второй параметр, как показано ниже
ren {}\Thread${__threadNum}_file${fileNumber}_${__P(lastIteration)}.${extension} Thread${__threadNum}_file${fileNumber}_0.${extension}
Наконец, просто убедитесь, что количество потоков в обеих основной группе потоков и tearDown Группа потоков одинаково, что в данном случае 5
. Структура будет как показано ниже