.veb 文件、运行回归测试以及调试测试失败。它是 使用 C++ 创建扩展 的补充,后者涵盖初始构建;也是 C++ 开发 的补充,后者深入介绍 VDF 编写。
如果您正在为 VillageSQL 服务器本身做贡献(而不是构建扩展),请参阅 从源代码构建,其中涵盖了完整的服务器开发人员工作流程,包括直接使用
mysql-test-run.pl 运行测试。设置您的环境
要开发和测试扩展,您需要一个已构建的 VillageSQL 服务器。请按照 从源代码克隆和构建 指南来编译服务器二进制文件。 构建完成后,使用villagesql CLI 管理本地开发服务器实例。从安装 VillageSQL 的目录运行所有命令。
启动本地开发服务器
初始化并启动服务器实例:-- 分隔符之后传递标志;其后的所有内容都会原封不动地转发给 mysqld:
-- 之前任何无法识别的参数都会被拒绝,因此请对每个打算传给 mysqld 的标志都使用 --。
在任何命令之前传递 --dir <path> 以管理多个独立的实例,或者使用 --here 在当前工作目录中创建一个服务器目录:
管理扩展文件
在通过 SQL 安装扩展之前,其.veb 文件必须存在于服务器上。CLI 管理服务器的 lib/veb/ 目录:
init 之前放置在 lib/veb/ 中的 .veb 文件会自动预置。添加文件后,通过 SQL 安装扩展:
运行回归测试
使用 VillageSQL 构建目录中的 MySQL 测试运行器来运行扩展回归测试。运行完整套件
要运行扩展的所有测试:运行单个测试
要运行单个测试用例,请指定套件路径和测试名称:创建新测试
在添加新功能或修复错误时,您应该添加相应的回归测试。测试位置
扩展测试位于扩展自己的存储库中的mysql-test/ 目录中——而不是在 VillageSQL 服务器的 mysql-test/suite/ 树中。
- 测试文件以
.test结尾,并位于mysql-test/t/中。 - 预期结果文件以
.result结尾,并位于mysql-test/r/中。
my_extension 的扩展:
mysql-test/t/my_new_test.testmysql-test/r/my_new_test.result
测试文件约定
典型的扩展测试安装扩展、运行 SQL 并卸载:.test 文件中添加以下指令以对其进行规范化——否则,记录的结果将包含在其他机器上会出错的绝对路径:
添加测试的步骤
- 在扩展的
mysql-test/t/目录中创建.test文件。 - 在扩展的
mysql-test/r/目录中创建空的.result文件。 - 使用
--record运行测试,以生成预期的输出: - 验证生成的
.result文件中的输出,以确保它与您的期望相符。
调试测试
如果测试失败,测试框架会提供详细的日志。- 测试输出: 检查
mysql-test/var/log/mysqltest.log(合并日志)或mysql-test/var/log/<test_name>/(每个测试的目录)。 - 服务器错误日志: 检查
mysql-test/var/log/mysqld.1.err。VillageSQL 特定的日志消息(通过LogVSQL()发出)仅在服务器使用--log-error-verbosity=3运行时才会出现。 - 差异: 框架会输出实际输出与预期的
.result文件之间的差异。
另请参阅
- 测试依赖网络的扩展 — 针对启动 HTTP 服务器或外部监听器的扩展的可靠 MTR 模式
- 使用 C++ 创建扩展 — 端到端构建步骤、CMake 设置和安装
- C++ 开发 — 深入介绍 VDF 编写、参数与结果类型、聚合、可变参数
- C++ API 参考 — VDF 契约、空值处理和缓冲区大小

