zoukankan      html  css  js  c++  java
  • 【性能测试】:loadrunner直压MYSQL数据库的脚本开发

    有时性能测试,会涉及到直接压测数据库,测试数据库处理sql的水平,或者通过sql脚本向数据库写数据做铺地数据

    这里贴上一个自己用的对数据库操作的脚本

    一,首先要去下载一个LR压MYSQL的一个库文件,放到bin和include目录下

    二,在头文件中,添加对库的引用

    
    

    #include "Ptt_Mysql.h"
    #include "mysql.h"
    #include "mysql_com.h"
    #include "mysql_time.h"
    #include "mysql_version.h"
    #include "typelib.h"
    #include "my_list.h"
    #include "my_alloc.h"
    #define MYSQLSERVER "HOSTIP"
    #define MYSQLUSERNAME "USER"
    #define MYSQLPASSWORD "PASSWORD"
    #define MYSQLDB "DATABASE_NAME"
    #define MYSQLPORT "PORT"
    char chQuery[1024];
    int statu=1;
    int status=0;
    MYSQL *Mconn;
    char sql_query[256], sql_sub_query[50];
    int i=0, res=0, conn_fail=0, conn_iter=0;
    char response[50];// to go
    vuser_init()
    {
    lr_load_dll ("libmysql.dll");
    lr_start_transaction("mysql_conn"); //设置一个连接数据库的事务
    /*------------------------------------------------------------------------*/
    /* Initialise MySQL */
    if(!(Mconn = mysql_init(NULL)))
    {
    lr_message("Error -1: Cannot initialize MySQL - %s", mysql_error(Mconn));
    //return -1;
    statu = 0;
    lr_end_transaction("mysql_conn", LR_FAIL); //初始化数据库失败判定事务失败
    }
    /*------------------------------------------------------------------------*/
    do
    {
    /* Connect to database */
    if (!mysql_real_connect(Mconn, MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT), NULL, 0))
    {
    conn_fail = -2;
    conn_iter++;
    sleep(100);
    }
    else
    conn_fail = 0;
    }
    while(conn_fail < 0 && conn_iter < 10);
    if (conn_fail < 0)
    {
    lr_message("Error -2: %s", mysql_error(Mconn));
    //mysql_close(Mconn);
    //return -2;
    statu = 0;
    lr_end_transaction("mysql_conn", LR_FAIL); //连接数据库失败判定事务失败
    }
    else
    {
    //lr_message("MySql - Good Connection");
    //mysql_close(Mconn);
    statu = 1;
    lr_end_transaction("mysql_conn", LR_PASS); //连接数据库成功,事务通过。
    }
    return 0;
    }



    三,Action中的脚本

    
    

    Action()
    {
    if(statu){ //成功连接数据库后才进行执行sql的操作
    lr_start_transaction("mysql_select");
    sprintf(chQuery, "SELECT * from cms-member-dev.cms_member_basic where id = '1007449268564533248'");//查询论坛用户
    //sprintf(chQuery,"UPDATE lr_test SET password = "%s" WHERE username='tom'",lr_eval_string ("{pwd}"));
    /*
    sprintf(chQuery,"update pre_ucenter_members set username='dd' where username='qq' ");//更改用户名qq为dd
    sprintf(chQuery,"delete from pre_ucenter_members ORDER BY uid desc LIMIT 1");//删除最后添加的一条数据
    */
    status = lr_mysql_query(Mconn, chQuery);
    if(status!=0){ //判断sql是否执行成功
    lr_end_transaction("mysql_select",LR_FAIL);
    }else{
    lr_end_transaction("mysql_select",LR_PASS);
    }

    lr_start_transaction("mysql_insert");
    sprintf(chQuery,"SELECT * from cms_member_basic where id = '1007449268564533248'");//插入数据
    status = lr_mysql_query(Mconn, chQuery);
    if(status!=0){ //判断sql是否执行成功
    lr_end_transaction("mysql_insert",LR_FAIL);
    }else{
    lr_end_transaction("mysql_insert",LR_PASS);
    }
    }
    return 0;
    }

     

     三 VUSER_END()中的脚本

    vuser_end()  
    {  
        lr_mysql_disconnect(Mconn); //关闭数据库连接  
        return 0;  
    } 
    

      

  • 相关阅读:
    项目分析时找不到函数调用只有16进制数
    firebase消息推送配置
    布局错乱到原点的问题
    人脸识别部分文章地址笔记
    查看奔溃分析
    iOS App 后台任务的坑(奔溃原因分析)
    轨迹优化
    X SqlServer 事务日志传输 【将备份目录设置到辅助服务器】
    X sql server2014 发布与订阅的配置方法介绍包括【推送订阅】与【请求订阅】
    X SQL SERVER 使用订阅发布同步数据库 【推送订阅】
  • 原文地址:https://www.cnblogs.com/fy--/p/8888507.html
Copyright © 2011-2022 走看看