1. 程式人生 > 其它 >SandBox-repeater安裝使用記錄

SandBox-repeater安裝使用記錄

技術標籤:JAVA開發基礎積累

SandBox簡介

JVM沙箱容器,一種JVM的非侵入式執行期AOP解決方案。
底層執行原理是結合了ASM框架中JVM的agent、attach機制注入目標程式
更詳細的介紹說明請參考:https://github.com/alibaba/jvm-sandbox

SandBox-Repeater簡介

基於SandBox基礎上開發出的錄製回放Module,目前該Module已經支援的外掛型別有:http、dubbo、ibatis、mybatis、java、redis、hibernate、spring-data-jpa

獲取sandBox

1. 全量包下載址

http://sandbox-ecological.oss-cn-hangzhou.aliyuncs.com/sandbox-1.2.1-bin.tar

2. 原始碼下載地址

https://github.com/alibaba/jvm-sandbox

sandBox的完整專案的檔案目錄如下
在這裡插入圖片描述

獲取repeater

1.全量包下載址

http://sandbox-ecological.oss-cn-hangzhou.aliyuncs.com/repeater-stable-bin.tar

2.原始碼下載地址

https://github.com/alibaba/jvm-sandbox-repeater

repeater的檔案目錄如下
在這裡插入圖片描述

安裝repeater

repeater目錄下所有檔案及資料夾拷貝到SandBox\sandBox-module目錄下即可

啟動sandbox-repeater

1. 啟動目標程式 repeater-bootstrap

(作者提供的springboot demo程式,該專案也包含了遠端錄製回放及配置相關的功能)
repeater目錄下執行

java  -jar repeater-bootstrap.jar

2. 獲取目標程式程序id

由於目標程式啟動預設埠號為8001,所以使用以下命令獲取pid

   netstat -ano |findstr 8001

3. 啟動sandbox

執行以下命令(這裡標紅的需要手動更改為當前執行環境的資訊)

java -Xms128M -Xmx128M -Xnoclassgc -ea -Xbootclasspath/a:javaHome\lib\tools.
jar -jar sandboxHome\lib\sandbox-core.jar targetpid sandboxHome\lib\sandbox-agent.jar home=sandboxHome;token=timestamp;server.ip=0.0.0.0;server.port=1111;namespace=default;

修改資訊對照表

javaHome當前機器jdk安裝目錄
sandboxHomesandBox 的根檔案目錄
targetpid被注入的目標程序id,當前是12508
token任意時間戳字串 如:303515824929
server.portsandBox-mgr服務繫結的埠號
server.ipsandBox-mgr伺服器繫結IP(預設為本地ip)

檢測啟動狀態

瀏覽器中輸入,檢視module列表是否存在repeater
http://127.0.0.1:1111/sandbox/default/module/http/sandbox-module-mgr/list
啟動成功則會議顯示如下資訊
在這裡插入圖片描述

錄製回放

1、請求如下介面

http://127.0.0.1:8001/regress/slogan
返回如下資訊

2、檢視請求的traceId

在repeater.log日誌中(log的路徑:C:\Users\userName\logs\sandbox\repeater)找到對應的traceId
在這裡插入圖片描述

3、開始請求回放

方式一:
通過透傳traceId(在header或者引數中帶上traceId請求目標介面)

http://127.0.0.1:8001/regress/slogan?Repeat-TraceId-X=192168056001157528042944310001ed

方式二:

通過facadeApi提供的介面進行回放

http://127.0.0.1:8001/facade/api/repeat/unknown/192168056001157528042944310001ed

不管何種回放,最終都會進行請求到具體的目標程式,並且請求引數都會與第一次保持一致。