先说一下对Tir的测试框架的研究成果:
- 使用telescope作为测试框架的基本工具;
- 在确保mongrel2作为web server这一块绝对没问题,因此,不再对从浏览器到mongrel2的连接这一过程进行测试,也即是这个测试框架不走socket, http协议这一块;甚至也不测试mongel2到handler这一过程,因为这一块由mongrel2-lua库完成,此库单独进行测试,在发布之前已经过充分测试。因此,本测试框架只测试tir本身,以及tir之上的工程的执行过程;
- 在确定上述测试范围之后,作者Zed Shaw做了一个聪明且牛逼的设计,充分利用lua的协程,借鉴消费者-生产者的逻辑模式,在同一个进程内实现了发请求、处理子处理、返回结果并与预期值检查核对的事务;
- 在测试框架中重新定义了start入口函数,覆盖了标准的start入口函数,将整个进程引入test框架的掌控范畴;
- 在测试框架中伪造了连接需用到的发送,接收,返回等函数,相当于是对web对象的伪造;
- 在测试框架中实现了Browser对象,能够像在浏览器中点击操作那样,实现对真实环境的模拟,而这一切,仅仅是写代码完成。并且,可以方便地对返回值进行比对检测,实现逼真的效果,而这一切都是程序自动化完成的,仅需敲一个tir test命令就启动这种自动化过程;
- 整个测试框架仅200多行代码。Zed Shaw真是个大神啊!
在保持上述特点的情况下,我们对其进行了适当改造(不是很容易),使其能适应于bamboo现有的运行机制,并成功跑了起来。
下面再补充几个技术细节点:
定义了一个RESPONSE变量,用于记录从服务端协程代码返回的结果,这是一个列表变量,可以存取不止一个返回结果,最新的放在最后。
makeFakeConnect()函数,伪造一个连接请求;
makeFakeRequest()函数,伪造一个请求对象;
routeRequest()函数,用来路由请求路径;
browser()函数,为一个对象工厂,在里面定义了Browser类,执行一个这个函数就返回一个Browser实例对象,这个对象中封装了各种方法;
start()函数,地位与bin/bamboo_handler中的start相同,用来启动服务端代码。但测试框架中的start与正常模式中的start的区别在于,正常模式中的start是一个main loop,里面有阻塞等待,等待zmq的消息过来;而测试框架中的start,将main loop建立了一个协程包装,并让它由测试代码控制一次次执行,从而实现程序化控制其请求执行过程。
总的来说,这个框架真是把lua的协程发挥得淋漓尽致,从心底崇拜shaw大神。
分享到:
相关推荐
自述文件 介绍 Bamboo 是一个强大的 web 框架,用 lua 编写。 它旨在成为 lua 社区中最流行的 Web 框架,就像 python 中的 Django,ruby 中的 ROR。 特征 Bamboo 是一个 MVC 框架;... 内置测试框架
from bamboo import App , Endpoint app = App () @ app . route ( "hello" ) class MockEndpoint ( Endpoint ): def do_GET ( self ) -> None : self . send_body ( b"Hello, World!" ) if __name__ == "__main__...
CocosCreator小游戏框架 此项目是我使用CCC开发小游戏的一些总结,主要是一些可以复用的模块,特别是处理一些跨平台的问题,让开发者尽量少关心游戏业务逻辑以外的事。脚本使用Typescript,欢迎各路大侠补充pr。 CCC...
bamboo数位板驱动
透过 Bamboo Paper,笔记本在 Windows 8,Android 与 iOS 平台上可以和朋友同事分享,或汇出到各式云端服务及社交媒体 5.触控笔 为求最佳效果及体验,使用 Bamboo Paper 时请搭配 Wacom 触控笔使用。请上 bambo
资源来自pypi官网。 资源全名:bamboo-pipeline-3.6.3.tar.gz
安装官方包,并申请到试用License之后,停止bamboo服务,将文件复制到atlassian/bamboo/atlassian-bamboo/WEB-INF/lib 覆盖同名文件,然后重启bamboo.仅供学习使用, 商业使用请购买授权
Bamboo 是一个 Web 守护进程可自动的配置 HAproxy 用于发布在 Apache Mesos 和 Marathon 的 Web 服务。界面:StatsD Monitoring 标签:Bamboo
Bamboo
bamboo 470 mac版驱动 适合mac的bamboo 470 mac版驱动,解决画笔卡顿的问题
Bamboo系列产品Windows驱动PenTablet_5.3.3-2 版本号:5.3.3-2 适应操作系统:Windows XP, Windows Vista, Windows 7, Windows 8 发布日期:2013/12/18 文件大小:37.1 MB 更多说明: 改进对Winodws 8.1的...
icons,bamboo-payment,icons 一些支付相关的icon,
bamboo,用于持续集成等方面技术,有很多较好的软件算法。
Bamboo打算成为一个完整的端到端游戏框架,用于使用Twisted进行数据交换,使用Panda3D进行渲染并使用Python编码的客户端/服务器应用程序。 稍后可能会考虑支持PyPy / CPython。 使用极端/敏捷开发模型来进行紧急设计...
实验室竹记者Hapi测试跑步者的竹筒记者受启发用法如果lab是全局安装的: lab -r ./node_modules/lab-bamboo-reporter [-o outputfilename.ext]上面指向node_modules相对路径是一个全局安装的lab知道可以在本地安装中...
bamboo2.7使用参考文档,pdf格式,英文未翻译
Asset Store中付费竹子模型,价值27刀,需要的各位可以下载 https://assetstore.unity.com/packages/3d/vegetation/speedtree/bamboo-package-32273
bamboo cth661的驱动 装上驱动后有压感
banboo 绘图仪 数位板 手绘板
某商场框架结构毕业设计(含计算书、施工组织设计、建筑结构设计图).zip