Перейти к содержимому

Фотография

Как избавиться от дублирования кода?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Buckstabue

Buckstabue

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Вячеслав

Отправлено 25 февраля 2014 - 12:03

Такая проблема. В конфиге хранится информация о кол-ве пользователей. В зависимости от кол-ва пользователей нужно создавать разное кол-во потоков, внутри потоков нужно реализовать разное кол-во итераций  разных циклов. Формулы в большинстве своем взаимозависимы(формулы в разных циклах и в thread группах). Как мне красиво избежать дублирование кода, чтобы кол-во потоков определялось динамически, а не до запуска программы, хранилось в переменной и другие циклы могли бы работать с этой переменной. Я пробовал инициализировать переменные(точнее проперти) в setup thread group во всяких там BSF sapmpler'ах, но почему-то эти проперти не подхватывались циклами и thread группами. Не знаю почему, еще интересно было бы услышать почему такая беда


  • 0

#2 APC

APC

    Опытный участник

  • Members
  • PipPipPipPip
  • 293 сообщений
  • ФИО:Похилько Андрей Федорович
  • Город:Москва


Отправлено 26 февраля 2014 - 10:03

Это не беда, а так устроен JMeter: есть порядок обращения к переменным. Например, тред-группы обрабатываются раньше чем User Defined Variables. Выход для вас - использовать функции. Например через __P передавать параметры, или StringFromFile считывать их из конфигов. Если нужны вычисления - есть функции для простейших операций.


  • 0

#3 Buckstabue

Buckstabue

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Вячеслав

Отправлено 26 февраля 2014 - 19:04

Пока временно решил проблему так: создал set up тред группу в ней создал BSF sampler, далее в скрипте провел практически все необходимые вычисления, далее самое главное: в настройках другой, основной тред группы в поле thread numbers ввел такой скрипт:

${__javaScript(props.get('NUM_OF_THREADS'))}

не стоит забывать, что этот JMeter сохраняет int переменные как число с плавающей точкой. И просто так инициализаровать проперти NUM_OF_THREADS вряд ли получится при помощи js. Пришлось писать конструкцию вида

props.put('NUM_OF_THREADS', new String(numOfThreads));


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных