从一个脚本谈loadrunner的脚本初始化
昨天一个同事问我,如何实现下列代码中 InputStream类is对象的实例化?
* LoadRunner Java script. (Build: _build_number_)
*
* Script Description:
*
*/
import lrapi.lr;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.google.common.io.ByteStreams;
import com.demo.DemoFileSystem;
public class Actions
{
File file = new File("C:/8K.file");
InputStream is =null;
// 返回一个byte数组
byte[] fileBytes = new byte[(int) file.length()];
// 创建一个数据来保存文件数据
DemoFileSystem dfs =new DemoFileSystem(); public int init() throws Throwable {
is = new FileInputStream(file);
ByteStreams.readFully(is, fileBytes);
is.close();
return 0;
} //end of init public int action() throws Throwable {
try {
lr.start_transaction("dfs-w");
String key = dfs.writeBytes(fileBytes);
//上传
System.out.println(key);
} catch (Exception e) {
e.printStackTrace();
}
lr.end_transaction("dfs-w", lr.AUTO);
return 0;
}//end of action public int end() throws Throwable {
return 0;
}//end of end }
尝试一:我们知道,在loadrunner的java_vuser协议的脚本中,init方法在每个vuer初始化的时候都会被执行一次,换句话说N个用户就会被执行N次,所以上面的脚本中inputStream对象会被初始化N次。我随即做了如下修改
File file = new File("C:/8K.file");
static InputStream is =null;
// 返回一个byte数组
byte[] fileBytes = new byte[(int) file.length()];
public int init() throws Throwable {
if(is==null){
is = new FileInputStream(file);
}
ByteStreams.readFully(is, fileBytes);
is.close();
//初始化
return 0;
}//end of init
理论上来说,上述代码实现了单例模式。但是这个脚本并发下无效。。。 经过和开发探讨最终换了以下的代码来处理:
尝试二:
static {
File file = new File("C:/8K.file");
fileBytes = new byte[(int) file.length()];
// 创建一个数据来保存文件数据
try {
InputStream is = new FileInputStream(file);
ByteStreams.readFully(is, fileBytes);
is.close();
} catch (Exception e) {
e.printStackTrace();
} }
思考:
第一种解决方法采取的是“饱汉单例模式”、非线程安全的,第二种则是使用了静态初始化块所以没有线程安全问题,如果使用“饿汉单例模式”是不是也可以实现呢?
从一个脚本谈loadrunner的脚本初始化的更多相关文章
- Loadrunner学习---脚本编写(1)
Loadrunner学习---脚本编写(1) 中午看了两集<奋斗>发现越看越想看,但是想到好不容易没上班,在家还是赶紧学习下LR的知识吧.下面这个网页的文章原来也是看过的,但发现没几天就忘 ...
- Loadrunner加密算法脚本与token作为get请求url上的参数处理
1.当字符串被封装好加密时(下例将算法封装在md5中),使用Loadrunner编写脚本,需要进行如下操作: 1)将md5.h文件添加到Extra Files 下,如图(Loadrunne ...
- loadrunner 运行脚本-命令行运行脚本
Loadrunner 运行脚本-命令行运行脚本 by:授客 QQ:1033553122 脚本所在目录 Run-time Settings->Additional Attributes设置 ...
- LoadRunner学习---脚本编写(4)(比较重要)
今天接着来翻译http://www.wilsonmar.com/中关于LoadRunner脚本编写部分,下面该翻译脚本编写中一些比较重要的部分了. Web用户Action 在VuGen中,脚本产生的默 ...
- Loadrunner录制脚本之浏览器
Loadrunner录制脚本之浏览器 用Loadrunner录制脚本,尤其现在的IE浏览器版本升级较快,脚本的录制有时候还是需要集RP.Luck的,当然,Loadrunner对于IE的支持算最好的了, ...
- Loadrunner录制脚本与编写脚本的区别
异同点: 1.录制的和编写的脚本质量上没有区别 2.性能脚本关心的是用户和服务器的数据交互,从这点上来看,录制和编写也没有区别,手动编写脚本也可以写出很真实的脚本 3.能录制的情况下,就录制吧,谁每天 ...
- 分享一个php的启动关闭脚本(原)
自己简单写的一个php服务的启动脚本和大家分享 思路(实现的原理): 1:function模块+case语句多分支判断 2:通过添加# chkconfig: 2345 43 89注释实现开机自启动(前 ...
- 使用Notepad++开发C#,一个复杂点的csscript脚本
使用Notepad++开发C#,一个复杂点的csscript脚本: //css_dir ..\..\lib; //css_ref Geb.Image.dll; //css_ref Geb.Image. ...
- 一个很不错的bash脚本编写教程
转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...
随机推荐
- 【linux错误解决】MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'的问题
问题描述: 从一台linux远程连接另一台linux上的MySQL, 出现ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.x ...
- Div+Css的初步运用
采用DIV+CSS模式的网站具有以下优势:1.表现和内容相分离 2.代码简洁,提高页面浏览速度 3.易于维护和改版 4.提高搜索引擎对网页的索引效率. 然后呢html文件中放置CSS有三种类型:内联. ...
- ASP连接MYSQL数据库
<% strconnection="driver={mysql odbc 3.51 driver};database=weste_net;server=localhost;uid=ro ...
- viewpager双层嵌套,子viewpager无限循环无法手动滑动
项目中首页是用viewpager+fragment集成的,第一个fragment有广告轮播图使用viewpager实现的,开始就遇到是广告图无法手动滑动,事件被外层的viewpager拦截响应切换到下 ...
- C# string.Format格式化时间或货币
1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...
- jquery slideDown slideUp 对于table无效
jquery slideDown slideUp 对于table无效,需要在table外面套一层div才可以使用
- asp.net中的App_GlobalResources和App_LocalResources使用
学而不思则罔,思而不学则殆,每天坚持一小步,则成功一大步 asp.net中的App_GlobalResources和App_LocalResources使用 App_GlobalResources是全 ...
- (转)unity开发相关环境(vs、MonoDevelop)windows平台编码问题
转自: http://www.cnblogs.com/sevenyuan/archive/2012/12/06/2805114.html 1.unity会爆出错误: There are inconsi ...
- iso和Android的验证码输入框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- bzoj3208:花神的秒题计划I
思路:因为Q.S.B操作总和不超过100,因此怎么暴力怎么写....当然记忆化搜索还是要的 #include<cstdio> #include<iostream> #inclu ...