Программирование динамического оператора
Описываемая техника применялась в работе с Web (http/html) протоколом в HP Load Runner.
Иногда может быть полезным не добавлять параметры в датапулы, увеличивая их количество и усложняя структуру, а генерировать данные внутри скрипта, меняя их от итерации к итерации. При этом необходимая часть оператора строится динамически в виде строки, в которую каждый раз вставляются обновленные данные. В примере, динамически меняющимися на каждой итерации данными, являются даты начала и конца периода (переменные day_start и day_stop меняются каждую итерацию), используемые для построения отчета. Пример приведен в качестве иллюстрации динамического конструирования операторов и перебирает дни в диапазоне только от 1 до 30.
Сконструированными частями оператора будут строковые переменные url и referer. Обе они включаются в состав оператора web_url.
Action()
{
static int dstart = 1, dstop = 1;
int i,j;
char tr_name[50],
url[512],
referer[512],
param[512],
host_name[128],
day_start[4],day_stop[4];
...
strcpy(host_name,lr_eval_string("{host}"));
itoa(dstart,day_start,10);
itoa(dstop,day_stop,10);
lr_message(host_name);
lr_message(" %s %s", day_start, day_stop);
....
strcpy(url,"URL=");
strcpy(referer,"Referer=");
strcpy(param,"https://");
strcat(param,host_name);
strcat(param,"/site/transactions/TransactionsReport?sortBy=0&sortName=fine&sortOrder=A");
lr_output_message(param);
strcat(param,"&dayFrom=");
strcat(param,day_start);
strcat(param,"&monthFrom=8&yearFrom=2005&dayTo=");
strcat(param,day_stop);
strcat(param,"&monthTo=1&yearTo=2006&dateType=delta&Status=S");
lr_output_message(param);
strcat(url,param);
strcat(referer,param);
lr_message(url);
lr_message(referer);
lr_start_transaction("Search transactions");
web_url("TransactionsReport",
url,
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t3.inf",
"Mode=HTML",
EXTRARES,
"Url=/site/images/big_s.gif", referer, ENDITEM,
"Url=/site/images/link_list_head.gif", referer, ENDITEM,
LAST);
lr_end_transaction("Search transactions", LR_AUTO);
dstart++;
dstop++;
if (dstart == 31)
{
dstart = 1;
dstop = 1;
}
....
return 0;
}
Иногда может быть полезным не добавлять параметры в датапулы, увеличивая их количество и усложняя структуру, а генерировать данные внутри скрипта, меняя их от итерации к итерации. При этом необходимая часть оператора строится динамически в виде строки, в которую каждый раз вставляются обновленные данные. В примере, динамически меняющимися на каждой итерации данными, являются даты начала и конца периода (переменные day_start и day_stop меняются каждую итерацию), используемые для построения отчета. Пример приведен в качестве иллюстрации динамического конструирования операторов и перебирает дни в диапазоне только от 1 до 30.
Сконструированными частями оператора будут строковые переменные url и referer. Обе они включаются в состав оператора web_url.
Action()
{
static int dstart = 1, dstop = 1;
int i,j;
char tr_name[50],
url[512],
referer[512],
param[512],
host_name[128],
day_start[4],day_stop[4];
...
strcpy(host_name,lr_eval_string("{host}"));
itoa(dstart,day_start,10);
itoa(dstop,day_stop,10);
lr_message(host_name);
lr_message(" %s %s", day_start, day_stop);
....
strcpy(url,"URL=");
strcpy(referer,"Referer=");
strcpy(param,"https://");
strcat(param,host_name);
strcat(param,"/site/transactions/TransactionsReport?sortBy=0&sortName=fine&sortOrder=A");
lr_output_message(param);
strcat(param,"&dayFrom=");
strcat(param,day_start);
strcat(param,"&monthFrom=8&yearFrom=2005&dayTo=");
strcat(param,day_stop);
strcat(param,"&monthTo=1&yearTo=2006&dateType=delta&Status=S");
lr_output_message(param);
strcat(url,param);
strcat(referer,param);
lr_message(url);
lr_message(referer);
lr_start_transaction("Search transactions");
web_url("TransactionsReport",
url,
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t3.inf",
"Mode=HTML",
EXTRARES,
"Url=/site/images/big_s.gif", referer, ENDITEM,
"Url=/site/images/link_list_head.gif", referer, ENDITEM,
LAST);
lr_end_transaction("Search transactions", LR_AUTO);
dstart++;
dstop++;
if (dstart == 31)
{
dstart = 1;
dstop = 1;
}
....
return 0;
}
Комментарии: 3:
Андрей, а что будем делать, если в месяце не 30 и не 31 день, а допустим 28 или 29? :)
Спрашиваю просто так, дабы показать активность в блоге...
Автор:
А.Б., В
17 декабря 2008 г. в 08:59
Алексей, это решается разработкой дополнительной функции, определяющей количество дней в месяце в зависимости от даты.
Автор:
Андрей, В
27 декабря 2008 г. в 06:27
ищу хостинг http://hosting.miheeff.ru хостинг ищу хостинг
Автор:
hosting.web.hosti, В
25 декабря 2009 г. в 08:57
Отправить комментарий
Подпишитесь на каналы Комментарии к сообщению [Atom]
<< Главная страница