首页 > 其他分享 >Loadrunner上传文件解决办法(大文件)

Loadrunner上传文件解决办法(大文件)

时间:2022-09-21 18:34:23浏览次数:79  
标签:文件 stream web Loadrunner len lr file 上传

跟海量存储相关的项目测试,需要通过LR模拟用户大量上传和下载文件,请求是Rest或Soap,同时还要模拟多种大小尺寸不一的文件   通常情况下,都是使用简单的post协议即可:   方法一:
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);
  后续对上传的文件进行MD5值比较,发现不一致,仔细查看后,发现上传的文件内容被loadrunner添加了几行额外的值,content-type等,无奈下,重写读文件的方式,我通过如下程序实现了1到10M文本文件的上传,如果上传二进制文件,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; } } //关闭文件句柄 fclose(file_stream); //保存参数 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}",       //如果是二进制文件,可以改成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; }
   

标签:文件,stream,web,Loadrunner,len,lr,file,上传
From: https://www.cnblogs.com/dabao150114/p/16716700.html

相关文章

  • LoadRunner进行接口自动化测试
    我们以测试豆瓣api获取图书信息的接口为例接口的信息如下:接口ip:https://api.douban.com/v2/book/:id接口返回值:status=200返回数据:{…(图书信......
  • 学习lua-05,io.open 读取输出修改文件,以及io.read的参数运用,读所有,读一行多行
    --以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)file=io.open("D:\\ProgramFil......
  • go复制文件,文件夹
    在go中复制文件夹内容需要递归来一层层检查文件夹是否存在,不存在则创建文件。packageutilimport( "fmt" "io" "os" "path")typeDuplicationstruct{}func......
  • C语言进阶-文件操作
    C语言进阶之文件操作前言世界很美好,愿我爱我所爱,行我所行,听从我心,无问西东。一、为什么使用文件当一个程序运行起来的时候,可以给程序中增加、删除数据,此时数据是存放在......
  • Linux目录和文件管理
     目录:1、linux目录层次2、查看文件内容cat(tac)3、more和less4、head和tail5、统计文件内容wc6、检索和过滤文件内容grep命令7、压缩命令gzip、bzip2命令linux目录......
  • c#中的FileStream文件流
    staticvoidMain(string[]args){//FileStream(操作字节的)//1.创建FileStream对象FileStreamfs=newFileStream(@......
  • python文件切割
    把多个文件按照行数分割成几个文件fromdatetimeimportdatetimedefMain():source_dir='result.txt'target_dir='./'#计数器flag=0......
  • c#中的文件管理类File类
    File类下面有好多用来操作文件的方法   从File类的从元数据来看,其属于IO的命名空间底下,其是一个静态类,故其下面的都是一些静态成员,我们不能实例化File类的对象,当我......
  • Net5 控制台程序引入Nlog 、Nlog配置文件解读
    十年河东,十年河西,莫欺少年穷学无止境,精益求精nlog是继log4Net后C#编程界又一颗闪亮的星,俗称superstar1、先学会使用1.1、新建控制台应用程序,引入如下nuget1、Micros......
  • Linux查看文件内容和压缩文件命令
    查看文件内容一些重要的目录:/usr/share/    帮助文档、说明文档/var/log/      日志/var/run/      运行中程序/var/tmp      临时文件根(/......