Tuesday, November 22, 2011

Перебираем циклом пользовательские переменные

Постановка задачи. Имеется N пользовательских переменных, значения которых вычисляются в BeanShall скрипте (в данном случае это - разные интервалы времени, но суть не важно). У этих пользовательских переменных user-friendly имена, так что сразу понятно, что передаётся этой переменной.
Необходимо выполнить некоторый однотипный набор действий, передавая параметрами все эти переменные.
То есть, нужно сделать цикл, который будет просто перебирать все эти переменные.

Первой мыслью было создать файл, куда запихиваются имена этих кастомных переменных с тем, чтобы потом их оттуда взять. Не сработало. Как бы ни мучались, имена передаются как текст.

Пришлось искать обходные пути.

Решение вышло несколько кривоватым, но, тем не менее, рабочим.

Итак в BeanShell скрипт и User Defined Variables добавляем T1..TN переменные, куда дублируем все нужные нам переменные с user-friendly именами.

Далее, создаем Loop, куда помещаем все нужные нам операции, которые должны быть выполнены в цикле. Ставим Loop Counter равным N (количество переменных).

Там, где нам нужно передавать значение переменной, в параметрах ставим
${__V(T${__counter(FALSE)})}
в нужном месте.

Всё работает :)

ПыСы. Отдельное спасибо Дэну Аркуше за подсказку решения "в лоб"

Дополнение. Нашлось лучшее решение.

Данный метод работает, если цикл у вас всего один. А что делать, если вложенных циклов несколько?

Параметр false у функции {__counter(FALSE)} означает, что этот счётчик будет увеличиваться только в пределах одного треда.
Но, если у вас будет сверху ещё 2 цикла с числом проходов X и Y, то счётчик ваш будет увеличиваться от 1 до X*Y*N, что приведёт к тому, что переменные у нас просто закончатся. нам-то нужно, чтобы этот счётчик работал от 1 до N.

В этом случае на помощь приходит конфигурационный элемент Counter


Задаём ему такие значения:
Start - 1
Increment - 1
Maximum - N (количество переменных)
Number format - 0 (в этом случает счёт начинается с 1, если Вы поставите 00, то счёт будет вестись с 01, если 000 - то с 001 соответственно).
Reference Name - Count (произвольное имя счётчика, на которое мы будем ссылаться).
Обязательно поставить галочку для "Track counter independently for each user".

После этого смело пишем этот счётчик везде, где он нам может понадобиться.

Т.е., ${__V(T${Count})}

Wednesday, November 9, 2011

Проверяйте системное время на виртуалках!!!

Два дня ковырялась, чего скрипт у меня генерит шопопало.
Время - 30е октября, хоть тресни.
Пока не дошло зайти и проверить системное время виртуалки (бубунта, штоп её).
И вы-таки не поверите...

Блондинко, блин...