boom是一个类似与ab的测试工具。boom起初是Tarek Ziade用python开发的。现在rakyll使用golang重写。
boom安装,使用很简单,详细的安装和使用可以去这个网址看。https://github.com/rakyll/boom
boom的程序很简单,总共代码不到1000行。程序文件有:
- 入口文件:boom.go,这个文件主要定义了boom接受的参数,main函数,请求网址解析
- boomer.go 定义了几个结构体
result struct 包含了每个网址请求后的结果
ReqOpts struct 包含了请求网址的一些信息,例如:url,method,header等
Boomer struct 包括了boom的主要信息,例如:请求的次数,并发数,Qps等 - run.go 总共三个方法:
Run 执行boom测试
worker 是每个请求的协程,这里发送请求,获取请求网址的状态,以及计算请求花费的时间
run 正式执行压力测试,开启规定的协程,启动worker(注意这个方法与上面的Run不一样)
总结:
- 学到了golang匿名实例化struct,并且执行struct的方法
- 对flag包、WaitGroup的用法有了深刻认识
ps:这个程序引用了一个pd的包,pd是在终端下的进度条。