cs-qyzhang / kvbench

键值数据库通用测试程序

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

kvbench

kvbench 是一个用于键值数据库性能测试的框架,其目的是为了简化测试流程以及测试报告撰写过程。kvbench 具有以下特性:

  • 扩展性强。对于一个新的键值数据库,可以通过将其 PUT、GET、UPDATE 等操作接口封装到 kvbench 的 DB 类中来添加对该键值数据库的支持,从而避免了对每一个键值数据库都编写复杂的测试程序。
  • 操作灵活。kvbench 使用 JSON 文件来控制测试流程,若要修改某一变量只需要修改 JSON 文件,从而避免了对源代码的修改和编译过程。
  • 支持对比测试。kvbench 不仅可以用于单一数据库的性能测试,还可以进行多个数据库的对比测试,或单一数据库在不同配置下的对比测试。
  • 自动生成报告。kvbench 在测试结束后会自动生成测试报告,报告中不仅包含了测试时间、测试平台环境、测试配置,并使用图表来可视化测试结果。

kvbench 目前使用的主要语言为 C++、Python 和 LaTeX。测试从 kvbench.py 脚本开始执行,首先读取 kvbench.json 配置文件,依次运行配置文件指定的 "kvbench 兼容" 的测试程序,在运行测试程序时以命令行参数的形式将测试的配置传入给测试程序。"kvbench 兼容" 的测试程序会使用传入的配置运行,并统计测试过程中的性能参数。在程序运行完成时通过 Google Protobuf 库将统计数据保存在本地文件中。

之后 kvbench.py 同样使用 Google Protobuf 库从本地文件中读取性能数据,并使用 matplotlib 生成柱状图或折线图。为了获得运行时的环境,kvbench.py 会使用 psutil,cpuinfo,distro 等包来获取对应信息。然后 kvbench.py 会使用环境信息和性能等数据通过 Jinja2 来实例化提前编写好的 LaTeX 模板,生成报告对应的 tex 文件。

考虑到测试往往是在服务器上进行,往往无法显示 PDF 文件,为了方便用户获取测试报告,kvbench.py 会将报告所需的 tex 源文件及 matplotlib 生成的图打包发送到服务器上,之后服务器会编译文件得到 PDF,并返回给用户该 PDF 对应的网址,用户就可以通过访问该网址来获取 PDF 文件。

目前 kvbench 仍有一些问题,且功能较少。由于使用的包比较多所以初始时的配置也稍微有点复杂(特别是低版本的操作系统上)。这些问题之后会逐渐完善。

About

键值数据库通用测试程序

License:GNU General Public License v3.0


Languages

Language:C++ 51.9%Language:Python 33.5%Language:TeX 14.0%Language:CMake 0.6%