反向代理測試套件:Macaroon

jopen 10年前發布 | 14K 次閱讀 Macaroon 測試工具

Macaroon 是一個高效的反向代理測試套件,測試框架本身基于python2.7開發,方便跨平臺移植;測試例使用格式化描述,做到編程語言無關性。使用 Macaroon能夠簡便快捷的完成測試場景的構造、線上失效案例的重建及被測軟件(DUT)的功能、模塊、協議一致性測試等。

安裝及使用

社區公共測試平臺地址:

目前公共測試環境已經搭建配置完成,測試用戶名:Tester;
登錄qa1機器:ssh -l Tester -p 22292 qa1.zymlinux.net, /home/Macaroon安裝有Macaroon;
登錄qa2機器:ssh -l Tester -p 22293 qa2.zymlinux.net,安裝有ts、squid等方向代理軟件;
如有需要,請聯系宗儀(QQ:624740707)或懷財(QQ:262765996)添加長期用戶權限;

自行安裝及使用:

i. 硬件準備:

兩臺機器A和B,A機器執行測試并同時作為client端與server端,B機器安裝被測軟件DUT--例如TrafficServer(Proxy).

ii.軟件準備:

執行install.sh文件
Client&Server:
   Linux
   Python2.7
   PyYaml包
   Macaroon
   git

DUT( Device Under Testing) :
   被測軟件(proxy or cache, 如TrafficServer, Swift等)
   Bind

iii. 配置DUT:

使從A機器client端發出的http請求能夠通過DUT(proxy)后正確到達A機器server端 ----- *重要   
例如: 在proxy上安裝bind, 修改named的相關配置信息,使得named中存在一個域名可以指向A機器(Client的IP),使用dig <域名>確認是否成功.

iv. 修改config文件:

在macaroon目錄下, 找到config.py文件,將_server的內容修改為proxy的ip或者hostname.   
_port修改為proxy提供的對外服務的端口, 例如:默認為80.     
將DUT_Strart, DUT_Stop和DUT_Clean分別修改為proxy對應的啟動, 停止和清理緩存命令.

v.  將macaroon目錄下的agentsever.py 拷貝至proxy機器,并使用sudo權限執行:

sudo python agentserver.py

vi. 環境驗證:

在client端執行httpmockserver.py:python httpmockserver.py   
在proxy端執行curl命令,驗證proxy到client的request是否可達:
curl http://<proxyip>:<port>/ -H "Host:XXX:[port]"

更多問題參見:doc/Q&A

框架及case設計

參見doc/Case_Design

如何運行用例

i. 運行單個case

 在根目錄下執行如下命令: sh runcase.sh case文件

ii. 運行多個case

在根目錄下執行如下命令:python runner.py -p your-case-path -s your-email    
詳見:python runner.py -h

查看case輸出及日志

i. 執行和調試單個測試例

sh runcase.sh <case文件>, case執行日志屏幕輸出

ii. 執行多個case

執行日志輸出至日志文件,./log/record_XXXX.log,按時間排序

如何編寫你的用例

i.  case/下創建your case dir

ii. 拷貝case模板example/case_template_example.yaml至your case dir,并重命名

iii.編輯該文件

   a. 文件頭部添加case相關說明     
   b. 填寫case步驟并準備對應步驟的數據塊    
   c. 填充和完善每步的數據,如request header, response header, response body, 需要檢查的header等    
   d. 保存和調試用例

項目主頁:http://www.baiduhome.net/lib/view/home/1403344828403

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!