Jmeter Загрузка файлов с использованием нескольких потоков - PullRequest
1 голос
/ 21 мая 2019

Я хочу проверить загрузку файлов с использованием Jmeter.

Я хочу загружать файлы, используя 5 потоков одновременно.

1 Поток успешно загружает все файлы, но после этого все потоки сообщают, что файл существует (что имеет смысл)

Есть ли способ, которым я могу успешно загрузить все файлы из всех 5 потоков, может каждый раз генерировать новое имя файла?

enter image description here

1 Ответ

1 голос
/ 23 мая 2019

Это решение будет работать для конфигураций, которыми вы поделились, 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

enter image description here

Теперь к настройкам скрипта добавьте 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. Структура будет как показано ниже

enter image description here

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