MySQL Test Suite使用


MySQL Test Suite使用

MySQL自動測試套件(The MySQL Test Suite)用於對MySQL程序進行測試,包括各種功能與存儲引擎。包含於MySQL與MariaDB版本代碼中,位於mysql-test目錄下。總體測試腳本為mysql-test-run.pl。該perl腳本通過調用各種已有的測試腳本,將測試結果與預置的result文件做對比來判斷測試是否通過。(任何一點差異都會導致測試失敗,包括預期之外的warning)
 
 

一、主要目錄介紹

    • include
包含.inc文件,用於測試開始時判斷是否滿足測試條件,在測試用通過source命令引入
如hava_innodb.inc:

如不滿足,則會跳過需要該驗證的測試。

 

    • suite
包含所有測試suite,每一個suite為一個測試用例集,具體用例集在2節介紹
 
 
    • t
1、測試文件
例:1st.test

上面內容即為1st這個測試用例的測試腳本

 

 2、配置文件
例:innodb_bug53674-master.opt
–loose-innodb-locks-unsafe-for-binlog –binlog-format=mixed
為該測試需要的特殊配置項
 
3、腳本文件,在測試開始之前執行的腳本
例:rpl_misc_functions-slave.sh
rm -f $MYSQLTEST_VARDIR/master-data/test/rpl_misc_functions.outfile
 
 
    • r
結果文件,判斷是否通過的依據
使用上面的例子:1st.result

執行完1st用例會嚴格比對該文件。完全一致則測試通過。

 

    • std_date
有些測試需要用到一些標准數據。
 
    • var
測試默認使用該文件夾下的my.cnf文件
 
 

二、測試用例集

./mysql-test-run.pl不帶任何參數表示執行所有測試用例集。使用—suite=suitename來指定單獨執行suitename目錄下的所有測試用例。
測試用例集包括:

 

 

三、主要參數

force:默認情況下,只要遇到一個用例出錯,測試程序就會退出,在指定force的情況下,測試程序會繼續執行下面的測試(但是最多發現10個錯誤還是會退出)
suite:指定使用的測試suite
do-test:會以輸入的字符串進行匹配用例執行
skip-test:會以輸入的字符串進行匹配跳過用例執行
big-test:執行標記為big的測試用例。因為用例較大、耗時較長,標記為big的用例默認不會執行。輸入兩遍big-test則只執行標記為big的測試用例
recored:重新生成結果文件
mysqld:傳遞啟動參數給mysqld,每個參數需要分別指定一個mysqld
其他還有很多選項,可以使用./mtr –help查看
 
如果需要在服務啟動前執行一些腳本,可以寫在 t/testname.sh文件中,由mtr自動執行。
 
 

四、測試舉例

例1:
 
可以看出共完成12個測試用例,全部通過。1個用例必須在debug模式下測試,所以跳過。測試過程中服務重啟3次。測試默認使用16000-16019端口。
 
例2:

每個測試結束前,mtr會檢索error日志,如果發現warning或error,則測試失敗。

 

再來看兩個失敗用例:
(截取部分日志)

分析日志可以看出是在測試過程中在錯誤日志中發現了warnings/errors。原因是使用了廢棄的參數innodb_locks_unsafe_for_binlog導致warning。

 

找到並修改配置文件:innodb_bug53674-master.opt
將–loose-innodb-locks-unsafe-for-binlog –binlog-format=mixed
修改為:–transaction-isolation=READ-COMMITTED –binlog-format=mixed
 
重新測試:

不再有warning,測試通過。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM