VuGen Code Snippets

VuGen Code Snippets

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 -->

猜你喜欢

转载自seawavecau.iteye.com/blog/1459263
今日推荐