qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          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, ";\0");
          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;
          }

          posted on 2014-05-14 10:11 順其自然EVO 閱讀(608) 評論(0)  編輯  收藏 所屬分類: loadrunner

          <2014年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 集安市| 忻州市| 万山特区| 阿尔山市| 盱眙县| 新干县| 安宁市| 武夷山市| 泸溪县| 太白县| 疏勒县| 顺平县| 农安县| 天门市| 平度市| 崇仁县| 调兵山市| 方正县| 收藏| 长宁县| 新龙县| 攀枝花市| 赣州市| 顺平县| 博湖县| 阳信县| 阳高县| 汕头市| 通州区| 怀化市| 玛沁县| 松溪县| 南溪县| 盘锦市| 滁州市| 临桂县| 门头沟区| 涟水县| 鞍山市| 牙克石市| 苏州市|