返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

28.1. 运行测试

发布于 2019-09-30 03:07:46 字数 2181 浏览 907 评论 0 收藏 0

回归测试可以对一套已经安装好并且在运行中的服务器进行测试,也可以对编译树里面即将安装的服务器进行测试。详细些说,有"并行"和"串行"运行测试之分。串行模式顺序运行每个测试,而并行模式启动多个服务器进程,并发地运行一组测试。并发测试使我们对进程内部通讯和锁的正确工作有足够的信心。由于历史原因,串行测试通常对一个现存的安装进行测试,而并发测试是"独立"的,不过这么做没有什么技术原因。

编译之后和安装之前运行回归测试,你可以在顶级目录运行(或者进入 src/test/regress 子目录然后在那里运行):

gmake check

这样将先编译几个辅助文件,比如一些用户定义的触发器函数,然后再运行测试驱动脚本。最后你会看到类似下面的东西

======================
 All 100 tests passed.
======================

或者是一些关于某项测试失败的信息。先看看节28.2然后再想想一个"失败"是否代表严重的错误。

因为这个测试方法运行临时的服务器,所以如果你是 root 用户,那这个方法不能运行(服务器不能以 root 身份启动)。如果你已经以 root 身份编译了,你就什么也干不了。这时候你应该把测试目录的权限变成某个用户可写,然后以那个用户身份登陆,再开始测试。比如

root# chmod -R a+w src/test/regress
root# chmod -R a+w contrib/spi
root# su - joeuser
joeuser$ cd top-level build directory
joeuser$ gmake check

这里唯一可能的"安全隐患"就是那个用户可能会背着你修改回归测试的结果。用你的常识管理用户权限。

如果不是上面那样,安装后就可以运行测试。

如果你配置 PostgreSQL 安装到一个原来安装有老版本 PostgreSQL 的目录里,然后在安装新版本之前执行 gmake check ,那么你可能发现测试失败,因为新程序试图使用已经存在的共享库,典型的症状是抱怨未定义的符号。如果你想在覆盖老版本之前运行测试,那么你需要使用 configure --disable-rpath 进行编译。不过,我们不建议你使用这个选项编译作为最终安装的数据库。

并发的回归测试会在你的用户 ID 下启动相当多的进程。目前,最大的并发数是 20 个并发测试脚本,这意味着 40 个进程:一个服务器进程、每个脚本一个 psql 进程。因此,如果你的系统有针对每个用户的进程数限制,那么请确保这个限制至少是 50 ,否则你就可能在并发测试时看到随机出现的失败。如果你没有办法提升该限制,那么可以通过设置 MAX_CONNECTIONS 参数降低并发测试程度。比如

gmake MAX_CONNECTIONS=10 check

将运行最多不超过 10 个并发进程。

安装后(参见章14)运行测试,像章16描述的那样初始化一个数据区并启动服务器,然后键入

gmake installcheck

或者是运行一个并发测试

gmake installcheck-parallel

该测试将与在本地主机和缺省端口号上运行的服务器进行连接,除非你用 PGHOSTPGPORT 环境变量设置为其它值。

源代码发布还包含给可选的过程语言和 contrib 模块使用的回归测试。目前,这些测试只能用于已经安装的服务器。要给所有编译并安装的过程语言运行测试,我们可以进入源代码树的 src/pl 目录然后运行

gmake installcheck

你还可以在 src/pl 的任何子目录里只针对一种过程语言进行测试。要为所有 contrib 模块运行测试,必须首先编译并安装 contrib 模块,然后进入 contrib 目录运行

gmake installcheck

你也可以在 contrib 的子目录里只针对一个模块运行测试。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文