pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
目录
回归测试是针对PostgreSQL中 SQL 实现的一套全面测试。它们既测试标准 SQL 操作,也测试 PostgreSQL的扩展能力。
回归测试既可以针对已经安装并正在运行的服务器执行,也可以在构建树中使用临时安装来执行。此外,运行测试时还有“parallel”和“sequential”两种模式。顺序方式一次只运行一个测试脚本,而并行方式会启动多个服务器进程,以并行方式运行一组测试。并行测试能够确认进程间通信和锁定是否正常工作。由于历史原因,顺序测试通常针对已有安装运行,而并行方式通常针对临时安装运行,但这并没有技术上的必然性。
要在构建完成后、安装之前运行回归测试,请在顶层目录中输入:
gmake check
(也可以切换到src/test/regress并在那里运行此命令。)这会首先构建若干辅助文件(例如示例用户定义触发器函数),然后运行测试驱动脚本。结束时应该会看到类似下面的结果:
======================
All 100 tests passed.
======================
否则会显示哪些测试失败的说明。在假定“失败”代表严重问题之前,请先阅读下面的第 29.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
(这里唯一可能的“安全风险”是其他用户可能在你不知情时更改回归测试的结果。管理用户权限时请运用常识。)
或者,也可以在安装完成后再运行测试。
如果你把PostgreSQL配置为安装到某个已经存在旧版PostgreSQL安装的位置,并且在安装新版本之前执行gmake check,可能会发现测试失败,因为新程序会尝试使用已安装的共享库。(典型症状是报出未定义符号。) 如果你希望在覆盖旧安装之前运行测试,就需要使用configure --disable-rpath构建。不过,不建议在最终安装中使用此选项。
并行回归测试会在你的用户 ID 下启动相当多的进程。目前最大并发度为二十个并行测试脚本,也就是四十个进程:每个测试脚本都有一个服务器进程和一个psql进程。因此,如果你的系统对每个用户可创建的进程数施加限制,请确保该限制至少有五十个左右,否则并行测试中可能会出现看似随机的失败。如果无法提高该限制,可以通过设置MAX_CONNECTIONS参数来降低并行度。例如:
gmake MAX_CONNECTIONS=10 check
这样最多同时运行十个测试。
要在安装后运行测试 (见 第 15 章),请初始化一个数据区域并启动服务器如 第 17 章所述,然后输入:
gmake installcheck
或者进行并行测试:
gmake installcheck-parallel
除非由PGHOST和PGPORT环境变量另行指定,测试将期望在本地主机和默认端口上连接服务器。
源码发布包中还包含针对可选过程语言以及部分contrib模块的回归测试。目前这些测试只能针对已安装的服务器使用。 要为所有已构建并安装的过程语言运行测试,请切换到构建树的src/pl目录并输入:
gmake installcheck
也可以在src/pl的任一子目录中这样做,只为一种过程语言运行测试。要为所有带有测试的contrib模块运行测试,请切换到构建树的contrib目录并输入:
gmake installcheck
contrib模块必须先构建并安装。也可以在contrib的某个子目录中这样做,只为一个模块运行测试。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。