首页 > 技术文章 > LoadRunner参数和变量之间的转换

zengwf 2014-10-22 16:40 原文

这是用LoadRunner自定义监控Tomcat的脚本为基础而写的脚本.阐述了参数相互之间以及参数与变量之间复制传递原理.下面的代码注释是按照自己的理解写的,正确性不一定保证.

 

[cpp] view plaincopy
 
  1. Action()  
  2. {  
  3.     //定义三个字符数组用于条件判断  
  4.     char jFM[100];  
  5.     char jTM[100];  
  6.     char jMM[100];  
  7.   
  8.     //必须要预先声明数据转换函数,否则得到的监控结果不正确.  
  9.     double atof(const char *string);  
  10.   
  11.     //以下三个web_reg_save_param负责从Tomcat中抓取监控数据  
  12.     web_reg_save_param("JVM_Free_Memory",  
  13.                 "LB=Free memory:",  
  14.                 "RB=MB",  
  15.                 "ORD=1",  
  16.                 LAST);  
  17.     web_reg_save_param("JVM_Total_Memory",  
  18.                 "LB=Total memory:",  
  19.                 "RB=MB",  
  20.                 "ORD=1",  
  21.                 LAST);  
  22.     web_reg_save_param("JVM_Max_Memory",  
  23.                 "LB=Max memory:",  
  24.                 "RB=MB",  
  25.                 "ORD=1",  
  26.                 LAST);  
  27.   
  28.     //设定监控事务  
  29.         lr_start_transaction("Status");  
  30.     //登陆Tomcat  
  31.     web_set_user("admin", "admin", "localhost:8080");  
  32.     //Tomcat监控URL  
  33.     web_url("status",  
  34.             "URL=http://localhost:8080/manager/status",  
  35.             "Resource=0",  
  36.             "RecContentType=text/html",  
  37.             "Snapshot=t1.inf",  
  38.             "Mode=HTML",  
  39.             LAST);  
  40.   
  41.         lr_end_transaction("Status", LR_PASS);  
  42.     //通过用户自定义监控Tomcat_JVM的使用情况  
  43.     //lr_user_data_point("JVM Free Memory", atof(lr_eval_string("{JVM_Free_Memory}")));  
  44.     //lr_user_data_point("JVM Total Memory", atof(lr_eval_string("{JVM_Total_Memory}")));  
  45.     //lr_user_data_point("JVM Max Memory", atof(lr_eval_string("{JVM_Max_Memory}")));  
  46.   
  47.     lr_output_message("**********************************");  
  48.   
  49.     //打印监控值  
  50.         lr_output_message(lr_eval_string("{JVM_Free_Memory}"));  
  51.         lr_output_message(lr_eval_string("{JVM_Total_Memory}"));  
  52.         lr_output_message(lr_eval_string("{JVM_Max_Memory}"));  
  53.   
  54.     lr_output_message("**********************************");  
  55.   
  56.     //将参数的值保存在另外一个参数中(其实从运行原理上说,类似于C++中的引用)  
  57.     lr_save_string(lr_eval_string("{JVM_Free_Memory}"), "JFreeMem");  
  58.     lr_save_string(lr_eval_string("{JVM_Total_Memory}"), "JTotalMem");  
  59.     lr_save_string(lr_eval_string("{JVM_Max_Memory}"), "JMaxMem");  
  60.   
  61.     lr_output_message("**********************************");  
  62.   
  63.     //打印"引用"中的值  
  64.     lr_output_message(lr_eval_string("{JFreeMem}"));  
  65.     lr_output_message(lr_eval_string("{JTotalMem}"));  
  66.     lr_output_message(lr_eval_string("{JMaxMem}"));  
  67.   
  68.     lr_output_message("**********************************");  
  69.   
  70.     //将参数值赋给变量(字符串数组)  
  71.     strcpy(jFM, lr_eval_string("{JVM_Free_Memory}"));  
  72.     strcpy(jTM, lr_eval_string("{JVM_Total_Memory}"));  
  73.     strcpy(jMM, lr_eval_string("{JVM_Max_Memory}"));  
  74.   
  75.     //进行逻辑判断  
  76.     if (strcmp(jFM, "") == 0 && strcmp(jTM, "") == 0 && strcmp(jMM, "") == 0) {  
  77.         lr_output_message("%s", "无参数");  
  78.     } else {  
  79.         lr_output_message("%s", "有参数");  
  80.     }  
  81.       
  82.     //输出实际值  
  83.     lr_output_message("**********************************");  
  84.     lr_output_message("%s", jFM);  
  85.     lr_output_message("%s", jTM);  
  86.     lr_output_message("%s", jMM);  
  87.     lr_output_message("**********************************");  
  88.   
  89.     //将变量值保存在另外一个参数中(其实从运行原理上说,类似于C++中的引用)  
  90.     lr_save_string(jFM, "JFreeMem");  
  91.     lr_save_string(jTM, "JTotalMem");  
  92.     lr_save_string(jMM, "JMaxMem");  
  93.     lr_output_message("**********************************");  
  94.   
  95.     return 0;  
  96. }  

推荐阅读