今日分享主題:
Jvm-Sandbox-Repeater 項目中當 sandbox 和 repeater 啟動時,是如何來從 console 服務端來拉取配置的。
今天的分享是基於之前發布的有關 Jvm-Sandbox-Repeater 2篇文章之上的,還沒來得及看的同學,可以先補補功課,有助於更好的理解今天分享的內容。
《Jvm-Sandbox-Repeater的部署》
《Jvm-Sandbox-Repeater 新增配置詳解》
Step1:掛載沙箱觸發 sandbox & repeater兩個模塊啟動(repeater 注入到被測的應用上)
sh ~/sandbox/bin/sandbox.sh -p `ps -ef | grep "console" | grep -v grep | awk '{print $2}'` -P 12250
掛載后,sandbox.log 如下圖所示:
Sandbox 主要作用:
- 在jvm里面啟動了 sandbox-mgr-module.jar 包
- 在jvm里面啟動了 sandbox-core.jar 包
- 在jvm里面啟動了 sandbox-agent.jar 包
- 在jvm里面啟動了 repeater-module.jar 包
- 在jvm里面啟動了 repeater-bootstrap.jar 包
- 攔截錄制到的路由,執行 event=BEFORE,RETURN,THROWS 事件處理
- 會監聽到 module_config 配置信息的推送
掛載后,repeater.log 如下圖所示:
Repeater 主要作用:
- 是用來拉取 repeater.properties 文件中的配置信息
- plugin 插件的加載,用於錄制及回放規則獲取
- broadcast 廣播消息,用於錄制或回放觸發
- 通知各個模塊的當前狀態,是否是激活或凍結
- 會監聽到 onConfigChange 配置信息的推送
備注:sandbox 啟動后是如何帶着 repeater 模塊啟動的?是因為sandbox 的配置文件中指向了 repeater 模塊目錄,如下圖所示:
./sandbox-module 目錄結構如下:
包含了 repeater-module 模塊,配置文件及 plugins 的jar 包。
Step2:repeater 啟動后拉取配置
首先判斷是單機還是非單機模式
查看 repeater.properties 配置如下
其次發起 http.get 請求拉配置
注意事項:
-
配置值都為“unknown”,上一篇文章特地說到此處:
this.appName=getSystemPropertyOrDefault("app.name", "unknown"); this.environment=getSystemPropertyOrDefault("app.env", "unknown");
2.請求的接口為:
public static final String DEFAULT_CONFIG_DATASOURCE = "repeat.config.url";
見 repeater.properties 配置截圖。
最后看Console 提供的接口處理
查詢數據庫:
上一篇文章講到了 JPA 的實現,這里就框架來完成自動查詢 module_config表中的數據。
最終的提取console 返回的配置對象數據:
Repeater.log日志文件中有如下記錄【如上圖日志輸出代碼】:
2021-10-21 13:05:29 INFO pull repeater config success,config={sampleRate=10000, plugin=[http, java-entrance, java-subInvoke]}
歡迎關注【無量測試之道】公眾號,回復【領取資源】
Python編程學習資源干貨、
Python+Appium框架APP的UI自動化、
Python+Selenium框架Web的UI自動化、
Python+Unittest框架API自動化、
資源和代碼 免費送啦~
文章下方有公眾號二維碼,可直接微信掃一掃關注即可。
備注:我的個人公眾號已正式開通,致力於測試技術的分享,包含:大數據測試、功能測試,測試開發,API接口自動化、測試運維、UI自動化測試等,微信搜索公眾號:“無量測試之道”,或掃描下方二維碼:
添加關注,讓我們一起共同成長!