May 8th, 2009 Posted by Stuart Moncrieff 2 Comments »
This is a repository of code snippets. Please send me any useful sections of code that you have written.
Note that this repository does not contain trivial examples (i.e. something you could learn by looking at the example code in the LoadRunner Online Function Reference – accessed by pressing F1 in VuGen).
Code snippets that have been written as separate Tech Tips:
Writing to a file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
/*
Writes a string to the end of a file.
Arguments:
- file_name: Include the full path in the file name, and escape any slashes. E.g. "C:\\TEMP\\output.txt". Note that file does not have to exist beforehand, but directory does.
- string: If attempting to write a single line, include a newline character at the end of the string.
Returns 0 on success. On failure, function will raise lr_error_message and return -1.
*/
int jds_append_to_file(char* file_name, char* string) {
int fp; // file pointer
int rc; // return code
int length = strlen(string);
// Check that file_name is not NULL.
if (file_name == NULL) {
lr_error_message("Error. File name is NULL");
return -1;
}
fp = fopen(file_name, "a"); // open file in "append" mode.
if (fp == NULL) {
lr_error_message("Error opening file: %s", file_name);
return -1;
}
rc = fprintf(fp, "%s", string);
if (rc != length) {
lr_error_message("Error writing to file: %s", file_name);
return -1;
}
rc = fclose(fp);
if (rc != 0) {
lr_error_message("Error closing file: %s", file_name);
return -1;
}
return 0;
}
|
Check if a file already exists
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// Checks if a file already exists on the filesystem.
// Arguments:
// - file_name: Include the full path in the file name.
// Returns TRUE (1) if file exists and user has read access to the file, otherwise function returns FALSE (0).
int jds_file_exists(char* file_name) {
int fp; // file pointer
fp = fopen(file_name, "r+"); // open file in read mode. File must already exist.
if (fp == NULL) {
return FALSE;
} else {
fclose(fp);
return TRUE;
}
}
|
Saving a file to the hard disk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
// Saves a file to the hard disk.
// Arguments:
// - file_name: Include the full path in the file name. Note that file must not exist before function is called.
// - file_content: The data to save to the file. Can be binary or string data.
// - file_size: The size/length of the data to save to the file. If it is string data, you can find this using strlen(). If you are saving binary data from a web page, use web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE).
// Returns 0 on success. On failure, function will raise lr_error_message and return -1.
int jds_save_file(char* file_name, void* file_content, unsigned int file_size) {
int rc; // function return code
int fp; // file pointer
// Check input values
if (file_name == NULL) {
lr_error_message("File name is NULL");
return -1;
} else if (file_content == NULL) {
lr_error_message("File content is NULL");
return -1;
} else if (file_size < 1) {
lr_error_message("Invalid file size: %d", file_size);
return -1;
}
// Does the file already exist?
if (jds_file_exists(file_name) == TRUE) {
lr_error_message("File %s already exists", file_name);
return -1;
}
fp = fopen(file_name, "wb"); // open file in "write, binary" mode.
if (fp == NULL) {
lr_error_message("Error opening file: %s", file_name);
return -1;
}
rc = fwrite(file_content, file_size, 1, fp);
if (rc != 1) {
lr_error_message("Error writing to file. Items written: %d", rc);
return -1;
}
rc = fclose(fp);
if (rc != 0) {
lr_error_message("Error closing file: %s", file_name);
return -1;
}
return 0;
}
|
Saving a binary file from a webpage (like a PDF or a GIF). Note that this is not a good way to veryify that your LoadRunner/BPM script is running successfully.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
Action()
{
int size;
char* file = "C:\\TEMP\\test.zip";
// Make this big enough to hold the downloaded file.
web_set_max_html_param_len("1048576"); // 1 MB
// Save entire HTTP response body
web_reg_save_param("FileContents",
"LB/BIN=",
"RB/BIN=",
"Search=Body",
LAST);
// Note that it is best to use web_custom_request, as this guarantees that only one file is being downloaded by this step.
web_custom_request("DownloadPlugin",
"URL=http://www.example.com/files/test.zip",
"Method=GET",
"Resource=1",
"RecContentType=text/css",
"Referer=http://www.jds.net.au",
"Snapshot=t1.inf",
LAST);
// returns the size of the previous HTTP response
size = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
jds_save_file(file, lr_eval_string("{FileContents}"), size);
return 0;
}
|
<!-- No related posts. -->
<!-- AddThis Bookmark Post Button BEGIN -->
分享到:
相关推荐
loadrunner Vugen中文手册
LoadRunner中VuGen录制原理
VuGen 用户指南 中文 loadrunner11
loadrunner打不开ie,找不到register_vugen.bat文件 ,register_vugen.bat 下载,把register_vugen.bat放到安装的Bin目录下
学习Loadrunner Vuser Generator很好的英文资料资料,Version: 11.00 Patch 02。
Mercury 虚拟用户生成器用户指南 虚拟用户生成器(也称为 VuGen)可用于针对各种应用程序类型和通信协议开发 Vuser 脚本。
解压 放到 LoadRunner\bin文件夹 执行register_vugen.bat批处理文件,重新注册,
当LR11和QTP安装在同一个XP系统时,往往LR11录制时不能打开IE,即时设置了IE仍不行,此时把register_vugen.bat放到安装的Bin目录下,双击执行,重新进行注册路径后,即可解决问题。
LR的系统文件
loadrunner11 vugen user guide,controller,analysis中文资料
文档讲解了 LoadRunner VuGen板块的使用方法,具体说明了脚本录入与编辑的方法,为负责测试做前提准备。
VuGen的概述 协议分析软件 脚本录制 回放和调试Vuser脚本 为负载测试准备脚本 测试结果 关联 参数 录制选项 运行时设置 AJAX协议 AMF协议 Citrix协议 Click and Script协议 COM协议 Flex协议 Jave协议 Java协议手动...
loadrunner11 vugen中文手册,最新版的,中文教程,很全,1千多页呢,好好学
放到 LoadRunner\bin文件夹 执行register_vugen.bat批处理文件,重新注册
高版本LR(LR9、LR10、LR11)安装运行时所需的注册表文件,直接将其拷贝到bin目录即可,欢迎使用!
loadrunner文件下载code.loadrunner
LoadRunner emulates an environment in which thousands of users work with a client/server system concurrently. To do this, LoadRunner replaces the human user with a virtual user (Vuser)....
百度上发现的一篇不错的 loadrunner使用文档, 个人感觉 比较详细涵盖了loadrunner 录制选项设置Recording Options General Option,以及关联、参数化、检查点、集合点的设置等。
新手在测试性能时遇见了flex协议的项目,平时测试的都是http的,突然遇见别的不会了,网上各种找资料,实际操作有一定的偏差,所以根据具体项目写了该文档。