| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
回歸測試是一套復雜完整的測試, 用來測試嵌入在 PostgreSQL 裡的的 SQL 實現。 它同時測試標準 SQL 操作和PostgreSQL的擴展SQL。 自 PostgreSQL 6.1 以上開始, 這個回歸測試包含在每個正式發布版本裡。
回歸測試可以就一套已經安裝好並且在運行的服務器進行測試, 也可以就制作樹裡面臨時安裝的服務器進行測試。 詳細些說,有"並行"和"串行"運行測試之分。 串行模式順序運行每個測試,而並行模式啟動多個服務器進程,並行地運行一組測試。 並行測試使我們對進程內部通訊和鎖的正確工作有足夠的信心。 由于歷史原因,串行測試通常對一個現存的安裝進行測試,而並行測試是"獨立"的,不過這麼做沒有什麼技術原因。
制作之後和安裝之前運行回歸測試,你可以在頂級目錄鍵入
gmake check
(或者你可以進入 src/test/regress 然後在那裡運行命令。) 這樣將先制作幾個輔助文件,比如一些用戶定義的觸發器函數,然後再運行測試驅動腳本。 最後你會看到類似下面的東西
====================== All 93 tests passed. ======================
或者是一些關于某項測試失敗的信息。參閱下面的 Section 26.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
(這裡唯一可能的"安全隱患"就是那個用戶可能會背著你修改回歸測試的結果。用你的常識管理用戶權限。)
如果不是上面那樣,安裝後就可以運行測試.
並行的回歸測試會在你的用戶 ID 下啟動相當多的進程。 目前,最大的並發數是 20 給並行測試腳本,這意味著 60 個進程: 一個服務器進程,一個psql以及通常還有一個 shell 父進程用于每個測試腳本的psql。 因此,如果你的系統有每用戶的進程數限制,那麼請確保這個限制至少是 75,否則你就可能在並行測試時看到隨機出現的失敗。 如果你沒有辦法提升該限制,那麼你可以通過設置 MAX_CONNECTIONS 參數,把大的並行測試程度降低。
在某些系統上,缺省的 Bourne 兼容的 shell(/bin/sh)在管理太多並行的子進程的時候會出亂子。 這可能導致並行測試鎖住或者失敗。 出現這種情況時,請在命令行上聲明另外一個 Bourne 兼容的 shell,比如:
gmake SHELL=/bin/ksh check
如果沒有可以替換的 shell,那麼你可以象上面那樣通過限制連接的個數來繞開。
安裝後((參閱 Chapter 14)運行測試, 初始化一個數據區然後啟動服務器,像我們在 Chapter 16 裡面描述的那樣,然後鍵入
gmake installcheck
該測試將與在本地主機和缺省端口號上運行的服務器進行聯接, 除非你用PGHOST和PGPORT環境變量設置為其它值。