您好,登錄后才能下訂單哦!
這篇文章主要介紹“Linux測試資源代理的方法有哪些”,在日常操作中,相信很多人在Linux測試資源代理的方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux測試資源代理的方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
10 測試資源代理
這一章討論資源代理的自動測試。測試是開發的非常關鍵的問題,對開發新的資源代理和修改已經有的資源代理都很重要。
10.1 用ocf_tester測試
資源代理倉庫(包括所有的資源代理包)都有一個應用程序叫ocf_tester.這個腳本可以方便地用來測試你的資源代理。
ocf_tester 通常以root用戶調用,像這樣:
1 | ocf-tester -n <name> [-o <param>= <value> ... ] <resource agent> |
是任意的資源名字
你可以通過 -o 選項設置任何你想設置的參數 =
是你資源代理的完整路徑
調用時,ocf-tester執行所有強制的操作(見第五章資源代理行為)
也可以測試可選的操作。可選操作必須符合其聲明的行為,如果沒有實現,ocf-tester會標一個錯誤標記。
重要:
ocf-tester不支持操作的“干運行”,也不產生任何的資源仿制品。其運行都是和實際的資源代理一樣,不論其是否打開和關閉了數據庫,掛載了文件系統,啟動或停止了虛擬機等等。所以,一定要小心。
比如,你可以運行對foobar資源代理使用ocf-tester,如下:
1 2 3 4 5 6 7 8 | # ocf-tester -n foobartest \ -o superfrobnicate=true \ -o datadir=/tmp \ /home/johndoe/ra-dev/foobar Beginning tests for /home/johndoe/ra-dev/foobar... * Your agent does not support the notify action (optional) * Your agent does not support the reload action (optional) /home/johndoe/ra-dev/foobar passed all tests |
10.2 用ocft測試
ocft也是一種資源代理測試工具。和ocf-tester不一樣的是,ocft可以自動生成復雜的測試環境,包括包的安裝和任意的shell腳本。
10.2.1 ocft 組件
ocft包含如下組件:
一個測試用例產生器(/usr/sbin/ocf) --- 從測試用例配置文件產生shell腳本
配置文件(/usr/share/resource-agents/ocft/configs)--- 一個配置文件包含環境變量設置和一個資源代理的配置文件
測試腳本保存在/var/lib/resource-agents/ocft/cases/,但是通常不需要去管它們
10.2.2 定制測試環境
ocft修改資源代理的運行時環境,或則是通過改變環境變量(使用OCF定義的接口)或者運行ad-hoc shell腳本,這種腳本可以改變權限或者卸載一個文件系統。
10.2.3 如何測試
你必須了解你要測試的軟件,畫一個所有感興趣的運行場景的草圖,標出所有期望和不期望的條件和資源代理應該出現的運行結果。然后,你需要將這些條件和期望運行結果編碼成ocft的測試用列。這樣運行ocft就簡單了:
1 2 | # ocft make <RA> # ocft test <RA> |
頭一個命令產生測試用例腳本,第二個命令運行產生的腳本并檢查輸出。
10.2.4 ocf配置文件語法
有4個一級選型,每個一級選項下面有一個或多個子選項
CONFIG(一級選項)
這個選項是全局的,而且影響每一個測試用例;
AgentRoot (子選項)
1 | AgentRoot /usr/lib/ocf/resource.d/xxx |
正常情況下,我們假設資源代理腳本存在于heartbeat提供者的目錄。使用AgentRoot來測試代理是否分布于另外的目錄。
InstallPackage (子選項)
1 | InstallPackage package [package2 [...]] |
測試需要用到的包,如果包已經安裝了,則不再安裝。
HangTimeout(子選項)
1 | HangTimeout secs |
運行資源代理操作最大的執行時間,如果超過這個時間,操作視為失效。
SETUP-AGENT(一級選項)
1 2 | SETUP-AGENT bash commands |
如果資源代理在測試前需要初始化,可以在這里放置bash代碼。初始化只完成一次。如果需要再次執行初始化,可以刪除/tmp/.[AGENT_NAME]_set標記文件。
CASE (一級選項)
1 | CASE "description" |
這是測試套件的主要構建塊。每個測試用列都可以在一個CASE選項中描述。一個用例由跟著RunAgent子選項的若個子選項組成。
Var (子選項)
1 | Var VARIABLE=value |
這是為資源代理設置環境變量。通常顯示為OCF_RESKEY_xxx,注意賦值符號“=”左右都沒有空格。
Unvar (子選項)
1 | Unvar VARIABLE [VARIABLE2 [...]] |
移除一個環境變量
Include (子選項)
1 | Include macro_name |
包含宏 macro_name。參考下文CASE-BLOCK。
Bash (子選項)
1 | Bash bash_codes |
這個選項設置操作系統環境變量,你可以插入BASH代碼來定制系統環境。注意不要導致一些不可恢復的結果。
BashAtExit (子選項)
1 | BashAtExit bash_codes |
這個選項恢復操作系統環境,這樣可以正確運行新的測試用例。當然也可以直接使用Bash選項來恢復。然而,如果進程發生錯誤,腳本講不運行恢復的代碼直接退出,這種情況下,應該使用BashAtExit,可以在退出前恢復系統環境。
RunAgent (子選項)
1 | RunAgent cmd [ret_value] |
這個選項運行資源代理。“cmd” 是資源代理的參數,比如"start,status,stop..."。第二個參數是可選的。可用來比較腳本運行結果的返回值和期望值。如果不同,應該可以找到一些bug。
也可以不是本地執行而是遠程執行。使用的協議是ssh,程序在后臺運行。只需要增加在子選項后面加上@就可以了。如下:
1 | Bash@192.168.1.100 date |
上面的例子會運行date程序。遠程命令都是在后臺運行的。
NB:這些還需要有多謝說明(這個話是說給編寫者的:譯者注)
CASE-BLOCK (一級選項)
CASE-BLOCK選項定義可以被包含在CASE中的宏。所有CASE的子選項都可以使用。
到此,關于“Linux測試資源代理的方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。