为监控模块 Prometheus 的 exporter 添加单元测试用例和覆盖度报告

背景

OpenMLDB exporter 模块 (https://github.com/4paradigm/OpenMLDB/tree/main/monitoring) 是 OpenMLDB 连接监控平台 Prometheus 的 exporter,它的角色是作为一个 OpenMLDB 的 client 接入,通过 OpenMLDB Python SDK 做 SQL 语句查询,并将查询结果转化成 prometheus 指标。目前该模块并没有添加单元测试用例,也没有覆盖度报告,你需要为该模块添加上述两项内容。

编程语言

● Python ● GitHub workflow ● Poetry build tool & shell script

实现方案

  1. 需要添加测试用例的主要关注的代码在目录 monitoring/ a. 项目使用 poetry 作为构建工具,功能代码在 openmldb_exporter 子目录下
  2. 调研合适的 python 测试和 coverage 库并引入到项目中,例如 pytest 和 coverage a. 将测试库引入 https://github.com/4paradigm/OpenMLDB/blob/af7a30760f354adfa07ae3b20b88adf4e164ffa6/monitoring/pyproject.toml#L1, 并可以通过 poetry 命令直接测试
  3. 设计实现合理的测试用例 a. 为与 openmldb 解耦,需要调研 python 下能做 sql mock driver 的库,为查询用到的 sql 语句例如 show components, select 语句提供 mock 数据返回 b. 如有必要,可以修改 https://github.com/4paradigm/OpenMLDB/blob/af7a30760f354adfa07ae3b20b88adf4e164ffa6/monitoring/openmldb_exporter/collector/collectors.py#L29 的接口实现 c. UT 设计上可以参考 https://github.com/prometheus/mysqld_exporter
  4. 新增 monitoring 的 GitHub Workflow Job, 自动化完成监控测试和覆盖率报告上传 a. 需要了解 GitHub Workflow 用法,具体阅读 GitHub 相关文档:https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions b. 使用 https://github.com/codecov/codecov-action 上传覆盖度报告 c. 可以参考 .github/workflows 下其他 Jobs,例如 sdk.yml, coverage.yml

    GitHub Issue

    https://github.com/4paradigm/OpenMLDB/issues/1970