qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Loadrunner上傳文件解決辦法(大文件)

          最近再做一個跟海量存儲相關(guān)的項目測試,需要通過LR模擬用戶大量上傳和下載文件,請求是Rest或Soap,同時還要模擬多種大小尺寸不一的文件
            通常情況下,都是使用簡單的post協(xié)議即可:
            方法一:
          web_submit_data("importStudent.do",
          "Action=https://testserver/console/importStudent.do",
          "Method=POST",
          "EncType=multipart/form-data",
          "RecContentType=text/html",
          "Referer=https://testserver/console/displayStudentList.do",
          "Snapshot=t12.inf",
          "Mode=HTTP",
          ITEMDATA,
          "Name=uploadFile", "Value=D://Excel//data161955.zip", "File=yes", ENDITEM,
          LAST);
            后續(xù)對上傳的文件進(jìn)行MD5值比較,發(fā)現(xiàn)不一致,仔細(xì)查看后,發(fā)現(xiàn)上傳的文件內(nèi)容被loadrunner添加了幾行額外的值,content-type等,無奈下,重寫讀文件的方式,我通過如下程序?qū)崿F(xiàn)了1到10M文本文件的上傳,如果上傳二進(jìn)制文件,body的寫法有變化:
            方法二:
          vuser_init()
          {
          char fileName[] = "D:/Script/CreateObj_10M/tools.zip";
          int len = 0;
          int readLen=0;
          int tmpLen=1;
          int  runLen =104857;
          int  cLen = 0;
          if ( (file_stream = fopen(fileName, "rb")) == NULL)
          {
          lr_message("open file failed!\n");
          return -1;
          }
          fseek(file_stream, 0, 2);
          len = ftell(file_stream);
          lr_message("file length is: %d bytes",  len);
          readbuf = (char *) malloc(len+1);
          memset(readbuf, 0, len+1);
          if ( runLen > len) {
          runLen = len;
          }
          fseek(file_stream, 0, 0);
          while(feof(file_stream)== 0){
          tmpLen = fread(readbuf + readLen, 1,runLen , file_stream);
          readLen += tmpLen;
          cLen = readLen + runLen;
          if (cLen > len) {
          runLen = cLen - len;
          }
          if (tmpLen==0) {
          break;
          }
          }


          //關(guān)閉文件句柄
          fclose(file_stream);
          //保存參數(shù)
          lr_save_string(readbuf,"bodys");
          }
          Action()
          {
          lr_start_transaction("CreateObj_1M");
          web_add_header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8..");
          web_add_header("Content-Type", "text/plain; charset=UTF-8");
          web_add_header("Authorization", "YWS {userkey}:XXXXXXX");
          web_custom_request("CreateObj",
          "URL=http://smartstorage{id}.yoyoyws.com:38080/test00bucket00/{IterationNum}-10M",
          "Method=PUT",
          "TargetFrame=",
          "Resource=0",
          "RecContentType=application/xml",
          "Referer=",
          "Mode=HTML",
          "Body={bodys}",       //如果是二進(jìn)制文件,可以改成BodyBinary
          LAST );
          returnCode = web_get_int_property(HTTP_INFO_RETURN_CODE);
          if ( returnCode!=201 ) {
          lr_end_transaction("CreateObj_1M",LR_FAIL);
          }else{
          lr_end_transaction("CreateObj_1M",LR_PASS);
          }
          return 0;
          }
            但是這個程序依然有問題,當(dāng)打開是二進(jìn)制文件,或者文件內(nèi)容過大的時候,依然會出現(xiàn)文件內(nèi)容不一致的問題,我后續(xù)試驗后,會持續(xù)更新。

          posted on 2014-04-24 10:25 順其自然EVO 閱讀(1407) 評論(1)  編輯  收藏 所屬分類: loadrunner

          評論

          # re: Loadrunner上傳文件解決辦法(大文件) 2014-07-24 23:48 kakamissyou

          路過,不錯。  回復(fù)  更多評論   

          <2014年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宁城县| 潼南县| 都昌县| 武义县| 大宁县| 大足县| 马尔康县| 乐亭县| 沁源县| 湖口县| 鄢陵县| 永嘉县| 凯里市| 施甸县| 临潭县| 迁西县| 镇远县| 名山县| 璧山县| 白河县| 都昌县| 托克逊县| 沙洋县| 兴安盟| 吴川市| 巫溪县| 买车| 西昌市| 汉中市| 邓州市| 新乐市| 龙井市| 中宁县| 上杭县| 会东县| 锦屏县| 中山市| 宜川县| 昂仁县| 黄陵县| 福泉市|