pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
回归测试既可以针对一个已安装并正在运行的服务器运行,也可以使用构建树中的一个临时安装来运行。此外,还有“并行”和“顺序”两种运行测试的模式。顺序方法依次运行每个测试脚本,而并行方法会启动多个服务器进程来并行运行成组的测试。并行测试可以让人确信进程间通信和锁机制工作正常。由于历史原因,顺序测试通常针对现有安装运行,而并行方法针对临时安装运行,但这并没有技术上的原因。
要在构建之后、安装之前运行回归测试,在顶层目录中键入
$gmake check
(或者你可以切换到 src/test/regress 并在那里运行该命令。)这会先构建若干辅助文件,例如平台相关的“expected”文件和一些示例用户定义触发器函数,然后运行测试驱动脚本。最后你应当看到类似
======================
All 77 tests passed.
======================
的输出,或者一条关于哪些测试失败的说明。更多信息见下文第 13.3 节。
由于这种测试方法运行的是一个临时服务器,当你以 root 用户操作时它将无法工作(服务器不会以 root 启动)。如果你已经以 root 完成了构建,不必从头再来。只需让回归测试目录可被其他用户写入,以该用户登录,然后重新启动测试。例如
root#chmod -R a+w src/test/regressroot#chmod -R a+w contrib/spiroot#su - joeuserjoeuser$cdtop-level build directoryjoeuser$gmake check
(这里唯一可能的“安全风险”是其他用户可能背着你篡改回归测试结果。管理用户权限时请运用常识。)
或者,在安装之后运行测试。
并行回归测试会以你的用户 ID 启动相当多的进程。目前最大并发度是二十个并行测试脚本,这意味着六十个进程:每个测试脚本有一个后端、一个 psql,并且通常还有一个 psql 的 shell 父进程。因此,如果你的系统对每个用户的进程数有限制,请确保该限制至少在七十五左右,否则并行测试中可能出现看似随机的失败。如果你无法提高该限制,可以编辑文件 src/test/regress/parallel_schedule 把较大的并发测试集拆分成更多可管理的组。
在某些系统上,默认的 Bourne 兼容 shell(/bin/sh)在要并行管理太多子进程时会出问题。这可能导致并行测试运行锁死或失败。在这种情况下,在命令行上指定一个不同的 Bourne 兼容 shell,例如:
$gmake SHELL=/bin/ksh check
如果没有可用的无缺陷 shell,你也可以像上面建议的那样修改并行测试调度。
要在安装之后运行测试(见第 1 章),初始化一个数据区域并启动服务器,如第 3 章所述,然后键入
$gmake installcheck
除非 PGHOST 和 PGPORT 环境变量另有指示,测试将期望在本地主机和默认端口号上连接服务器。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。