pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
目录
回归测试是针对PostgreSQL中 SQL 实现的一套全面测试。它们既测试标准 SQL 操作,也测试 PostgreSQL的扩展能力。从 PostgreSQL 6.1 起,回归测试对每个正式发行版都是最新的。
回归测试既可以针对一个已安装并正在运行的服务器运行,也可以使用构建树中的一个临时安装来运行。此外,还有“并行”和“顺序”两种运行测试的模式。顺序方法依次运行每个测试脚本,而并行方法会启动多个服务器进程来并行运行成组的测试。并行测试可以让人确信进程间通信和锁机制工作正常。由于历史原因,顺序测试通常针对现有安装运行,而并行方法针对临时安装运行,但这并没有技术上的原因。
要在构建之后、安装之前运行回归测试,在顶层目录中键入
gmake check
(或者你可以切换到 src/test/regress 并在那里运行该命令。)这会先构建若干辅助文件,例如一些示例用户定义触发器函数,然后运行测试驱动脚本。最后你应当看到类似
======================
All 93 tests passed.
======================
的输出,或者一条关于哪些测试失败的说明。更多信息见下文第 26.2 节。
由于这种测试方法运行的是一个临时服务器,当你以 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 父进程。因此,如果你的系统对每个用户的进程数有限制,请确保该限制至少在七十五左右,否则并行测试中可能出现看似随机的失败。如果你无法提高该限制,可以通过设置 MAX_CONNECTIONS 参数来降低并行度。例如
gmake MAX_CONNECTIONS=10 check
最多同时运行十个测试。
在某些系统上,默认的 Bourne 兼容 shell(/bin/sh)在要并行管理太多子进程时会出问题。这可能导致并行测试运行锁死或失败。在这种情况下,在命令行上指定一个不同的 Bourne 兼容 shell,例如:
gmake SHELL=/bin/ksh check
如果没有可用的无缺陷 shell,你也可以像上面那样通过限制连接数来规避该问题。
要在安装之后运行测试(见第 14 章),初始化一个数据区域并启动服务器,如第 16 章所述,然后键入
gmake installcheck
除非 PGHOST 和 PGPORT 环境变量另有指示,测试将期望在本地主机和默认端口号上连接服务器。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。