pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
目录
回归测试是针对PostgreSQL中 SQL 实现的一套全面测试。它们既测试标准 SQL 操作,也测试 PostgreSQL的扩展能力。
回归测试既可以针对已经安装并正在运行的服务器执行,也可以在构建树中使用临时安装来执行。此外,运行测试时还有“parallel”和“sequential”两种模式。顺序方式一次只运行一个测试脚本,而并行方式会启动多个服务器进程,以并行方式运行一组测试。并行测试能够确认进程间通信和锁定是否正常工作。
要在构建完成后、安装之前运行并行回归测试,请在顶层目录中输入:
gmake check
(也可以切换到src/test/regress并在那里运行此命令。)这会首先构建若干辅助文件(例如示例用户定义触发器函数),然后运行测试驱动脚本。结束时应该会看到类似下面的结果:
=======================
All 115 tests passed.
=======================
否则会显示哪些测试失败的说明。在假定“失败”代表严重问题之前,请先阅读下面的第 30.2 节。
由于这种测试方法会运行一个临时服务器,如果你以 root 用户身份进行构建, 它将无法工作,因为服务器不会以 root 身份启动。推荐做法是不要以 root 身份构建;否则应在安装完成后再执行测试。
如果你把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的某个子目录中这样做,只为一个模块运行测试。
源码发布包中还包含针对 Hot Standby 静态行为的回归测试。这些测试需要一个正在运行的主服务器和一个正在运行的备服务器,备服务器通过基于文件的日志传送或流复制接收来自主服务器的新 WAL 更改。这些服务器不会为你自动创建,其设置方法也不在本文档中介绍。请查阅文档中已有的各节,了解所需命令及相关问题。
首先在主服务器上创建一个名为"regression"的数据库:
psql -h primary -c "CREATE DATABASE regression"
接着,在主服务器的 regression 数据库中运行准备脚本src/test/regress/sql/hs_primary_setup.sql,并等待更改传播到备服务器,例如
psql -h primary -f src/test/regress/sql/hs_primary_setup.sql regression
现在确认测试者的默认连接是被测的备服务器,然后在回归目录中运行standbycheck目标:
cd src/test/regress gmake standbycheck
还可以在主服务器上使用脚本src/test/regress/sql/hs_primary_extremes.sql生成一些极端行为,以便测试备服务器的行为。
后续版本可能会提供更多的自动化测试。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。