zoukankan      html  css  js  c++  java
  • LoadRunner如何调用外部函数

    LoadRunner如何调用外部函数

     

       使用 VuGen 时,可以调用在外部 DLL 中定义的函数。通过从脚本调用外部函
    数,可以降低脚本的内存使用量以及总体运行时间。
    要调用外部函数,需要加载定义了该函数的 DLL。
    可以用下列方法加载 DLL:
     本地— 用于一个脚本,使用 lr_load_dll 函数。
     全局— 用于所有脚本,方法是向 vugen.dat 文件中添加语句

    加载 DLL — 本地
      使用 lr_load_dll 函数可以在 Vuser 脚本中加载 DLL。DLL 加载成功之后,可以
    调用 DLL 中定义的任何函数,而无需在脚本中对其进行声明。
    要调用 DLL 中定义的函数,请执行下列操作:
    1 使用 lr_load_dll 函数在脚本的开头加载 DLL。将语句放在 vuser_init 部分的开
    头。lr_load_dll 将替换 ci_load_dll 函数。
    请使用以下语法:
    lr_load_dll(library_name);
    注意,在 UNIX 平台中, DLL 被称为共享库。该库的扩展名取决于平台。
    2 在脚本的适当位置调用 DLL 中定义的函数。
    在下例中,创建表 Test_1 之后,调用了在 orac1.dll 中定义的 insert_vals 函数。

    int LR_FUNC Actions(LR_PARAM p)
    {
    lr_load_dll("orac1.dll");
    lrd_stmt(Csr1, "create table Test_1 (name char(15), id integer) ", -1,
    1 /*Deferred*/, 1 /*Dflt Ora Ver*/, 0);
    lrd_exec(Csr1, 0, 0, 0, 0, 0);
    /* Call the insert_vals function to insert values into the table.*/
    insert_vals();
    lrd_stmt(Csr1, "select * from Test_1 ", -1, 1 /*Deferred*/, 1 /*Dflt Ora Ver*/,
    0);
    lrd_bind_col(Csr1, 1, &NAME_D11, 0, 0);
    lrd_bind_col(Csr1, 2, &ID_D12, 0, 0);
    lrd_exec(Csr1, 0, 0, 0, 0, 0);
    lrd_fetch(Csr1, -4, 15, 0, PrintRow14, 0);

    注意: 您可以为 DLL 指定完整路径。如果不指定路径, lr_load_library 将使用
    Windows 平台上的 C++ 函数 LoadLibrary 所使用的标准序列来搜索 DLL。在
    UNIX 平台上,可以设置 LD_LIBRARY_PATH 环境变量(或平台上与其等效的
    变量)。lr_load_dll 函数使用与 dlopen 相同的搜索规则。有关详细信息,请参
    阅 dlopen 或与其等效的主页。

    加载 DLL — 全局
    可以全局加载 DLL,使其函数能够用于所有 Vuser 脚本。DLL 加载成功之后,
    可以调用 DLL 中定义的任何函数,而无需在脚本中对其进行声明。
    要调用 DLL 中定义的函数,请执行下列操作:
    1 向 mdrv.dat 文件(位于应用程序的 dat 目录)的相应部分中添加要加载的 DLL
    列表。
    请使用以下语法:
    PLATFORM_DLLS=my_dll1.dll, my_dll2.dll, …
    用您的特定平台替换单词 PLATFORM。有关平台的列表,请参阅 mdrv.dat 文件
    的开始部分

    例如,要在 NT 平台上为 Winsocket Vuser 加载 DLL,请向 mdrv.dat 文件中添
    加下列语句:

    [WinSock]
    ExtPriorityType=protocol
    WINNT_EXT_LIBS=wsrun32.dll
    WIN95_EXT_LIBS=wsrun32.dll
    LINUX_EXT_LIBS=liblrs.so
    SOLARIS_EXT_LIBS=liblrs.so
    HPUX_EXT_LIBS=liblrs.sl
    AIX_EXT_LIBS=liblrs.so
    LibCfgFunc=winsock_exten_conf
    UtilityExt=lrun_api
    ExtMessageQueue=0
    ExtCmdLineOverwrite=-WinInet No
    ExtCmdLineConc=-UsingWinInet No
    WINNT_DLLS=user_dll1.dll, user_dll2.dll, …
    2 在脚本的适当位置调用 DLL 中定义的函数。

    转自:http://www.51testing.com/html/66/34866-101583.html

  • 相关阅读:
    记录。短信网关.
    TP 笔记~
    FUCK IE FLASH(inline hook)
    API HOOK(MessageBoxA)
    inline hook MessageBox(2)
    c#线程中使用 dataset
    匈牙利算法解决二分图最大匹配
    C#:Array类的排序
    C#:属性
    C#:结构
  • 原文地址:https://www.cnblogs.com/abcd19880817/p/7201301.html
Copyright © 2011-2022 走看看