pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
目录
回归测试是针对PostgreSQL中 SQL 实现的一套全面测试。它们既测试标准 SQL 操作,也测试 PostgreSQL的扩展能力。
回归测试既可以针对已经安装并正在运行的服务器执行,也可以在构建树中使用临时安装来执行。此外,运行测试时还有“parallel”和“sequential”两种模式。顺序方式一次只运行一个测试脚本,而并行方式会启动多个服务器进程,以并行方式运行一组测试。并行测试能够确认进程间通信和锁定是否正常工作。由于历史原因,顺序测试通常针对已有安装运行,而并行方式通常针对临时安装运行,但这并没有技术上的必然性。
要在构建完成后、安装之前运行回归测试,请在顶层目录中输入:
gmake check
(也可以切换到src/test/regress并在那里运行此命令。)这会首先构建若干辅助文件(例如示例用户定义触发器函数),然后运行测试驱动脚本。结束时应该会看到类似下面的结果:
======================
All 96 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
(这里唯一可能的“安全风险”是其他用户可能在你不知情的情况 下篡改回归测试的结果。在管理用户权限时请运用常识。)
或者,在安装完成后再运行测试。
如果你把PostgreSQL配置为安装到某个已经存在旧版PostgreSQL安装的位置,并且在安装新版本之前执行gmake check,可能会发现测试失败,因为新程序会尝试使用已安装的共享库。(典型症状是报出未定义符号。) 如果你希望在覆盖旧安装之前运行测试,就需要使用configure --disable-rpath构建。不过,不建议在最终安装中使用此选项。
并行回归测试会在你的用户 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
或者进行并行测试:
gmake installcheck-parallel
除非由PGHOST和PGPORT环境变量另行指定,测试将期望在本地主机和默认端口上连接服务器。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。