zoukankan      html  css  js  c++  java
  • LoadRunner访问Mysql数据库(转)

    这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了。

    前期的准备工作:Mysql 数据库搭建,LoadRunner,libmysql.dll and 网上搜一份LoadRunner访问mysq的公共库。

    Step1:Mysql数据库搭建(这里就不详细讲述如何安装Mysq数据库和创建表了)

    IP:192.168.1.100

    访问名:root

    密码是:123456

    数据库名是:t3db

    访问端口是:3306

    数据库的相关信息就是这样了!

    Step2:LoadRunner如何连接mysql呢?

    以下全都是在网上找到原代码,非本人创作(忘记作者是谁了,抱歉!)

    int rc;
    int db_connection;
    char *server = "192.168.1.100";   // 数据库的ip地址
    char *user = "root";              // 数据库访问用户名
    char *password = "123456";        // 密码
    char *database = "t3db";          // 数据库名称
    int port = 3306;                  // 访问端口
    int unix_socket = NULL;
    int flags = 0;
    char** result_row; 
    int query_result;
    char szSql[256];
    
    int MySqlInit()
    {
        rc = lr_load_dll("libmysql.dll");
        db_connection = mysql_init(NULL);
    
        if (db_connection == NULL) 
        {
            lr_error_message("Insufficient memory");
            lr_abort();
        }
    
        if(rc!=0)
        {
            lr_error_message("Load MySql.dll Error!");
            lr_abort();
        }
    
        rc = mysql_real_connect(db_connection,server, user, password, database, port, unix_socket, flags);
        if(rc == NULL)
        {
            lr_error_message("connect mysql error! %s",mysql_error(db_connection));
             mysql_close(db_connection);
             lr_abort();
        }
        return rc;
    }
    
    int MySqlUnit()
    {
        // 释放MySQL资源
        mysql_close(db_connection);
        return 0;
    }
    
    int InsertValue(char* query)
    {
        rc = mysql_query(db_connection,query);
        if (rc != 0) 
        {
            lr_error_message("%s", mysql_error(db_connection));
    } query = NULL; return rc; } int MySqlQuery(char* szSql) { rc = mysql_query(db_connection,szSql); if(rc != 0) { lr_error_message("%s",lr_eval_string("?")); lr_error_message("%s", mysql_error(db_connection)); szSql = NULL; return -1; } query_result = mysql_use_result(db_connection); if (query_result == NULL) { lr_error_message("%s", mysql_error(db_connection)); mysql_free_result(query_result); szSql = NULL; return -2; } result_row = (char **)mysql_fetch_row(query_result); if (result_row == NULL) { lr_error_message("Did not expect the result set to be empty"); mysql_free_result(query_result); szSql = NULL; return -3; } mysql_free_result(query_result); szSql = NULL; return 0; }

    这里提供了几个公共函数,看名字大家都明白他们是干啥的。

    Step3:Loadrunner里需要怎么编写写呢?

    1、添加libmysql.dll到你的工程

    2、把公共库添加到你的公共

    3、vuser_init

    vuser_init()
    {
        index = 0;
        MySqlInit();  // 初始化数据库
        return 0;
    }

    4、vuser_end

    vuser_end()
    {
        MySqlUnit();  // 反初始化
        return 0;
    }

    5、Action

    Action()
    {
        int resultValue;
        char cIndex[10];
        char onceAccount[1024];    
        char insertQuery[22584];
    
        index = index +1;
    
        // 组合插入数据库的sql语句
        strcpy(insertQuery, "INSERT INTO `t3db`.`role`(GroupID, RoleName, Account, BaseInfo, ExtInfo, LastModify) VALUES('1', '"); 
        strcat(insertQuery, lr_eval_string("{Account}"));
        strcat(insertQuery, itoa(index, cIndex, 10 ));
        strcat(insertQuery, "', 'q1031', '111', '111','2013-02-28 20:42:33')");
        strcat(insertQuery, ";");
    
    
        lr_start_transaction("Insert");
        resultValue = InsertValue(insertQuery);  // 调用插入函数
    
        if(resultValue != 0)
        {
            lr_end_transaction("Insert",LR_FAIL);
        }
        else
        {
            lr_end_transaction("Insert",LR_PASS);
        }
    
        sleep(100);
        return 0;
    }

    整个过程就是如此了……

  • 相关阅读:
    tyvj 1031 热浪 最短路
    【bzoj2005】 [Noi2010]能量采集 数学结论(gcd)
    hdu 1394 Minimum Inversion Number 逆序数/树状数组
    HDU 1698 just a hook 线段树,区间定值,求和
    ZeptoLab Code Rush 2015 C. Om Nom and Candies 暴力
    ZeptoLab Code Rush 2015 B. Om Nom and Dark Park DFS
    ZeptoLab Code Rush 2015 A. King of Thieves 暴力
    hdoj 5199 Gunner map
    hdoj 5198 Strange Class 水题
    vijos 1659 河蟹王国 线段树区间加、区间查询最大值
  • 原文地址:https://www.cnblogs.com/zhengah/p/4952411.html
Copyright © 2011-2022 走看看