代码地址: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这个测试文件,之后就会很方便的通过读取数据库的测试记录,来绘制测试报表.
我觉得我在写数据库这块代码的时候,这个设计思路比较让自己满意,
这块的设计是这样的:
当你引用RoadRunner这个gem时,如果你还在生成RoadRunner类的同时,给RoadRunner.new方法一个block,
并且这个block里面是一个ActiveRecord的数据库连接,
而且这个数据库中没有scenarios,transactions,records这三张表,
则RoadRunner会自动创建这三张表,以及默认的字段
并且将测试的数据写入这三张表中.
但要注意,如果已经有了这三张表,但字段和RR的要求不同,那就会导致写数据异常,需要分库或者改名.
如果能够将它和我的倩女幽魂项目(http://gemcutter.org/gems/lpm,http://gemcutter.org/gems/lpmp)合并起来用,那还可以监控被测主机的系统资源使用情况.
倩女幽魂介绍:
http://code.google.com/p/lpm/
http://docs.google.com/View?id=dcnwrnvv_871dvvc64dw
http://charlescui.iteye.com/blog/506623
我喜欢LR,我更喜欢RR -
该gem的test目录下有测试文件,安装好该gem后,可以先阅读测试代码,之后就可以很快的入手了。
测试例子一,计算PI:
# 莱布尼兹公式计算圆周率
#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目录,里面有很多测试用例.
分享到:
相关推荐
开源项目-spiral-roadrunner.zip,High-performance PHP load balancer and process manager library for Golang.
10. **社区支持**:作为开源项目,Go-RoadRunner拥有活跃的社区,用户可以在这里找到丰富的文档、示例和问题解决方案,同时也能得到其他开发者的技术支持。 通过将Go的高性能特性和PHP的灵活性结合,Go-RoadRunner...
**RoadRunner:SBML模拟环境 开源解决方案** 在生物系统建模领域,SBML(Systems Biology Markup Language)已经成为一种广泛使用的标准格式,用于存储、共享和分析生物学过程的数学模型。而RoadRunner作为一款强大...
"Road Runner Mobile - RRMobile-开源" 这个标题表明我们讨论的是一款名为"Road Runner Mobile"的软件,它有一个别名"RRMobile",并且这款软件是开源的。开源意味着它的源代码是公开的,允许用户查看、修改和分发...
6. 开源与拓展:"The-Reddit-Roadrunner"是一个开源项目,其代码可以在"The-Reddit-Roadrunner-master"压缩包中找到。开发者可以根据自己的需求对其进行二次开发,增加更多功能,如缓存机制、实时更新、多线程搜索等...
这个平台不仅提供了项目管理工具,如Redmine,还涵盖了代码质量检查(SonarQube),软件部署方案(如百度BAE、灵雀云、魔泊云MoPaaS),以及应用测试和性能监控工具,如APM和Roadrunner,为开发者提供了一站式的开发...
"SVG Animation library.zip" 是一个开源项目,主要目标是提供一个工具,让开发者能够在Android应用中创建和展示SVG格式的动态加载动画。这个库名为"Road Runner",暗示了其快速、流畅的特点,就像卡通人物一样动态...
1. RoadRunner:这个名字可能暗示了一个快速响应的模块,可能用于实时处理和分析警报,就像卡通人物Road Runner一样迅速反应并避开危险。 2. idxp:这可能是“IDMEF数据交换处理器”的缩写,负责解析和处理IDMEF格式...
本文将深入探讨一个名为“Interactive SBML Simulation Tool”的开源项目,这是一个专为生物系统建模语言(SBML)设计的交互式仿真工具。 SBML,全称Systems Biology Markup Language,是一种国际公认的标准格式,...
支持octane整站加速(利用swoole或roadrunner) 支持自适应APP或小程序端接口(使用Laravel官方的插件sanctum实现api接口开发) 前端首页支持丰富的模版自定义装修 丰富的营销工具助力商城的有效运营及客户转化 用户...
RoadRunner是开放源代码(由MIT许可)的高性能PHP应用程序服务器,负载平衡器和进程管理器。 它支持作为服务运行,并能够在每个项目的基础上扩展其功能。 RoroadRunner是开源(由MIT许可)的高性能PHP应用程序服务器...
作为开源项目,RideRunner提供了丰富的自定义功能和高度的可扩展性,允许用户根据个人需求定制自己的车载信息娱乐系统。这款软件的出现,为汽车爱好者和DIY爱好者提供了一个集导航、音乐播放、信息显示、车辆监控等...