工作過程需要驗證微服務的基本功能是否正常,但是因為 SE 設計的比較爛,微服務耦合的比較嚴重,無法單獨構造測試場景,所以需要進行介面級別的 mock。以前是自己寫個微服務,模擬對端微服務返回,但是這樣比較麻煩,所以構思了下面的工具。
通過 iptables 進行 nat,然後使用 mitmproxy 對碼流進行攔截和篡改,達到 mock 服務的目的,目前支持 restful 介面的 mock
# 架構#
沒有 naughtymonkey 時候:
服務 A (1.1.1.1) --> 服務 B (2.2.2.2:8888) 接收請求
服務 A (1.1.1.1) <-- 服務 B (2.2.2.2:8888) 返回響應
使用 naughtymonkey 時候:
服務 A (1.1.1.1) --> 服務 B 網卡 (iptables) --> naughtymonkey (3.3.3.3:8080) --> 服務 B (2.2.2.2:8888)
服務 A (1.1.1.1) <-- 服務 B 網卡 (iptables) <-- naughtymonkey (3.3.3.3:8080) 此處可以篡改響應 <-- 服務 B (2.2.2.2:8888) 返回響應
1 在服務 B 上面執行 monkeyagent.sh 配置 iptables 規則,把服務 A 請求的碼流都透傳到 naughtymonkey
2 在 naughtymonkey 的界面配置攔截的 URL 地址,只有匹配到 URL 才會進行攔截操作
3 在 naughtymonkey 的界面配置攔截和篡改任務,當匹配到條件的請求過來後就按照任務中的碼流進行返回
# 依賴#
1 naughtymonkey 依賴 mongodb,所以需要部署 mongodb 2 python3,同時依賴的包很多,懶的梳理了,哪個沒有自己添加吧
github 地址: https://github.com/flyfire100/naughtymonkey