golang boom源码分析

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不一样)

总结:

  1. 学到了golang匿名实例化struct,并且执行struct的方法
  2. 对flag包、WaitGroup的用法有了深刻认识

ps:这个程序引用了一个pd的包,pd是在终端下的进度条。