CharlesCui 发表于 2009-11-19 12:11:08

我的开源项目:RoadRunner

另见:http://charlescui.javaeye.com/admin/blogs/520197

代码地址:http://code.google.com/p/roadrunner/

序:不知不觉版本号已经到3.3.1了,

以前一直没有对外宣传这个项目,只是自己在用,惟一一次对外声明过是在一篇发表在程序员杂志的那片文章中略带了一下,

那是由于正好用到它做一个简单的解决方案.

起初没有对外宣传是因为想自己多发现些bug,修正好后再公布出去.

后来bug也没了,但由于时间关系忘记宣传了,它也就一直默默的呆在google.code和gemcutter上.

现在拿出来给大家看看,大家有什么更好的设计或者点子,都可以告诉我,如果想法很不错,我们就把你的代码片段加进去:)

===========================分割线============================

最新Gem的请到Source中通过Google Code的SVN下载

也可以通过Gem直接安装:gem install RoadRunner --source http://gemcutter.org

LoadRunner?这个工具很多做过性能测试的朋友肯定都知道,里面有很多方便易用的方法,不过这些方法的实现不是重点,毕竟ruby的第三方库的各种实现非常的多,ruby开发者的热情都很高。

RoadRunner?实现的是LoadRunner?的框架,

既: init(){ } action(){ } end(){ }

init存放初始化、登陆等操作,action可以不断的迭代执行,从而产生持续不断的压力,end存放释放资源、退出等操作。

外加一个虽然简单但直观的报表,之后的版本除了不断的完善RR的报告,提高和LR的相似度之外,还会增加更多ruby特有的方法,丰富Rrhelper模块代码。

RoadRunner更方便的地方在于,它不仅仅可以通过日志来展示结果,还可以将结果存储到数据库中,大家可以看test目录中的pi_db.rb这个测试文件,之后就会很方便的通过读取数据库的测试记录,来绘制测试报表.

如果能够将它和我的倩女幽魂项目(http://gemcutter.org/gems/lpm,http://gemcutter.org/gems/lpmp)合并起来用,那还可以监控被测主机的系统资源使用情况.

倩女幽魂介绍:

http://code.google.com/p/lpm/

http://docs.google.com/View?id=dcnwrnvv_871dvvc64dw

我喜欢LR,我更喜欢RR -

该gem的test目录下有测试文件,安装好该gem后,可以先阅读测试代码,之后就可以很快的入手了。

测试例子一,计算PI:
Ruby代码
# 莱布尼兹公式计算圆周率
#rrpi.global[:deep]代表计算的深度
#深度越深,计算越精确,当然也越耗时

$:.unshift File.join(File.dirname(__FILE__),'..','lib')

require 'roadrunner'

rrpi=RoadRunner.new

rrpi.init do
rrpi.global[:pi],rrpi.global[:deep]=0,100

# users决定同时有多少并发用户一起执行action
# iterations决定每个用户执行多少次
rrpi.users,rrpi.iterations=10,1000
end

rrpi.action do

# 新增加了iterationId和userId两个接口方法,
# 可以通过iterationId获得当前action执行到第一次
# 可以通过userId获得当前action执行用户的id
# puts rrpi.iterationId
# puts rrpi.userId
1.upto(rrpi.global[:deep]){|x|rrpi.global[:pi]+=((-1)**(x+1)*1.0/(x*2-1))}
end

rrpi.ended do
rrpi.global[:pi]*=4
#rrpi.global={}
end

rrpi.run
rrpi.report


执行完毕后,控制台会输出报告,类似如下信息:

Performance Reports

user system total real

4.750000 0.016000 4.766000 ( 4.796000)

The Virtual User is 10.

Total Execute 1000 Action(s).

Total Cost 4.7960000038147 Second(s).

This Scenario's TPS : 208.507089075189.

The longest action cost 0.0160000324249268 seconds.

User defined params as below:

{:deep=>1000, :pi=>3140.59265383977}

End of Reports

代码的黏贴复制会导致代码变形,大家可以去看roadrunner源码的test目录,里面有很多测试用例.

shanxi 发表于 2009-11-19 12:15:44

你这个完全可以用Ruby做一套http协议的录制 回放 压力测试工具了

全Ruby代码量少 效果也无弱化。

whplcyz 发表于 2009-11-19 15:39:12

向强人学习中,我女朋友是做软件测试的,帮她关注一下~谢谢楼主。

断寒 发表于 2009-11-19 16:25:58

借LZ帖子问个问题,LR是用什么语言写的呢?
页: [1]
查看完整版本: 我的开源项目:RoadRunner