天天看點

jvm-sandbox-repeater詳解

一. 錄制

配置:

需要在repeater-config.json 中配置httpEntrancePatterns (接口位址) 配置增強的方法 以及子調用的方法(List)排列。

志文覆寫了新的回放和檢視回放結果的請求(在repeater-console\repeater-console-start\src\main\java\com\alibaba\repeater\console\start\controller\web\ReplayWebController.java)中

檢視回放結果詳情接口路徑為:http://hostname/repeater/replay/detail   post請求
{
"repeatId": "repeatId"
}
repeatId的value在回放的表中擷取
執行回放:[http://hostname/repeater/replay/execute]   post請求
{
"ip": "ip",
"appName": "repeater",
"traceId": "traceId",
"mock": true
}
進行錄制:[http://hostname/repeater/regress/slogan]    
實際配置的接口
修改配置: http://hostname/repeater/config/saveOrUpdate         //志文重寫的接口  也可以調用原始的請求
{
  "appName":"unknown",
  "environment":"unknown",
  "config":"{\"degrade\":false,\"exceptionThreshold\":1000,\"httpEntrancePatterns\":[\"^/api/.*$\"],\"javaSubInvokeBehaviors\": [{\"classPattern\":\"path", \"includeSubClasses\": false,\"methodPatterns\":[\"getByCompanyId\"]}],\"pluginIdentities\": [\"http\",\"java-entrance\",\"java-subInvoke\",\"mybatis\",\"ibatis\",\"dubbo-provider\",\"dubboconsumer\"],\"repeatIdentities\": [\"java\",\"http\",\"dubbo\"],\"sampleRate\": 10000,\"useTtl\": true}"}

原生的修改配置   http://hostname/repeater/config/add.htm
@RequestMapping("add.htm")
    public String add(Model model) {
        RepeaterConfig defaultConf = new RepeaterConfig();
        List<Behavior> behaviors = Lists.newArrayList();
        defaultConf.setPluginIdentities(Lists.newArrayList( "http", "java-entrance", "java-subInvoke"));
        defaultConf.setRepeatIdentities(Lists.newArrayList("java", "http"));
        defaultConf.setUseTtl(true);
        defaultConf.setHttpEntrancePatterns(Lists.newArrayList("^/regress/.*$"));
        behaviors.add(new Behavior("com.alibaba.repeater.console.service.impl.RegressServiceImpl", "getRegress"));
        defaultConf.setJavaEntranceBehaviors(behaviors);
        List<Behavior> subBehaviors = Lists.newArrayList();
        subBehaviors.add(new Behavior("com.alibaba.repeater.console.service.impl.RegressServiceImpl", "getRegressInner", "findPartner","slogan"));
        defaultConf.setJavaSubInvokeBehaviors(subBehaviors);
        try {
            model.addAttribute("config", JacksonUtil.serialize(defaultConf));
        } catch (SerializeException e) {
            model.addAttribute("errorMessage", e.getMessage());
            return "/error/404";
        }
        return "config/add";
    }          
自己修改配置。
如不重新開機服務則需要調用push生效                                        
http://hostname/repeater/config/push        //目錄:com.alibaba.repeater.console.start.controller.web;   
body{
和saveOrUpdate   的請求體一樣。
}
           

配置檔案詳解:

在這裡插入代碼片{
    "degrade":false,                               改為true後不在錄制    
    "exceptionThreshold":1000,                異常發生門檻值;預設1000當ExceptionAware感覺到異常次數超過門檻值後,會降級子產品
    "httpEntrancePatterns":[                 需要錄制和回放的http接口需要同時在pluginIdedentities和repeatIdentities中都配置了http這個配置才生效
        "^/regress/.*$"                                   
    ],
    "javaSubInvokeBehaviors":[          需要錄制和mock的java方法的配需要
        {
            "classPattern":"packpagePath",
            "includeSubClasses":false,
            "methodPatterns":[                           方法配置
                "getByCompanyId"
            ]
        }
    ],
    "pluginIdentities":[
        "http",
        "java-entrance",
        "java-subInvoke",
        "mybatis",
        "ibatis",
        "dubbo-provider",
        "dubboconsumer"
    ],
    "repeatIdentities":[
        "java",
        "http",
        "dubbo"
    ],
    "sampleRate":10000,
    "useTtl":true
}
更詳細的配置見:[https://testerhome.com/topics/20869]
           

在這裡推薦一個軟體測試交流群,qq:642830685, 群裡會不定期的分享軟體測試交流群,qq:642830685,群中會不定期的分享軟體測試資源,測試面試題以及測試行業資訊。大家可以在群裡積極甲流技術問題,還有大佬為你答疑解惑。