开源测试工具 [jvm-sandbox-repeater 学习笔记][入门使用篇] 3 现有接口说明

ELes for PPmoney · 2019年10月18日 · 最后由 心意已决 回复于 2020年11月25日 · 8178 次阅读

系列文章导航:
[jvm-sandbox-repeater 学习笔记][入门使用篇] 1 安装与启动
[jvm-sandbox-repeater 学习笔记][入门使用篇] 2 配置说明
[jvm-sandbox-repeater 学习笔记][入门使用篇] 3 现有接口说明(本文)
[jvm-sandbox-repeater 学习笔记][入门使用篇] 4 录制、回放与调试

这里梳理了 repeater、repeater-console 的现有的接口,是记录在 yapi 中导出为 markdown 的。

repeater

推送回放任务

基本信息

Path: /sandbox/default/module/http/repeater/repeat

Method: POST

接口描述:

repeater 供 repeater-console 调用的推送回放任务接口

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/x-www-form-urlencoded

Body

参数名称 参数类型 是否必须 示例 备注
_data text RepeatMeta 对象序列化后的字符串

返回数据

submit success

更新配置接口

基本信息

Path: /sandbox/default/module/http/repeater/pushConfig

Method: POST

接口描述:

repeater 供 repeater-console 调用的更新配置接口
由于 repeater 的更新配置功能未完善,所以该接口状态为未完成

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/x-www-form-urlencoded

Body

参数名称 参数类型 是否必须 示例 备注
_data text RepeaterConfig 对象序列化后的字符串

返回数据

名称 类型 是否必须 默认值 备注 其他信息
code number 非必须 成功则 200
body string 非必须 成功则 config push success
message null 非必须 成功则 null
success boolean 非必须 成功则 true

repeater-console——供 repeater 调用的接口

保存回放结果

基本信息

Path: /facade/api/repeat/save

Method: POST

接口描述:

该接口为供 repeater 保存回放结果调用,

传入 RepeatModel 序列化后的字符串

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Body

直接在 body 写入序列化后的字符串即可

返回数据

名称 类型 是否必须 默认值 备注 其他信息
success boolean 非必须 true
data string 非必须 -/-
message string 非必须 operate success

保存录制记录

基本信息

Path: /facade/api/record/save

Method: POST

接口描述:

该接口为供 repeater 保存录制记录调用,

传入 RecordWrapper 序列化后的字符串

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Body

直接在 body 写入序列化后的字符串即可

返回数据

名称 类型 是否必须 默认值 备注 其他信息
success boolean 非必须 true
data string 非必须 -/-
message string 非必须 operate success

获取录制回放配置

基本信息

Path: /facade/api/config/{appName}/{env}

Method: GET

接口描述:

供 repeater 调用的接口,repeater 以非 standalone 模式启动时会调用该接口获取录制回放配置,获取失败可能导致 repeater 启动失败。
虽然接口有传入参数,但是由于接口没有实现根据 appName 以及 env 来区分不同的配置,传任何参数都会指向一个配置

请求参数

路径参数

参数名称 示例 备注
appName 应用名称
env 环境名称

返回数据

名称 类型 是否必须 默认值 备注 其他信息
success boolean 必须 请求是否成功
message string 必须 请求返回信息
data object 必须 配置数据,以下字段为 data 中返回的信息
pluginsPath string 必须 插件路径,默认填 null 即可
exceptionThreshold number 必须 异常发生阈值;默认 1000 当 ExceptionAware 感知到异常次数超过阈值后,会降级模块。默认填写 1000 即可
pluginIdentities string [] 必须 录制所使用的插件列表,配置了相应的插件名称,才能启用对应类别插件类别的录制 item 类型: string
repeatIdentities string [] 必须 回放所使用的插件列表,配置了对应的插件,才能进行对应类别的回放 item 类型: string
httpEntrancePatterns string [] 必须 需要录制和回放的 http 接口
需要同时在 pluginIdedentities 和 repeatIdentities 中都配置了 http 这个配置才生效
item 类型: string
sampleRate number 必须 采样率;最小粒度万分之一,默认为 10000
javaEntranceBehaviors object [] 必须 需要录制和回放的 java 方法的入口
需要同时在 pluginIdedentities 配置了 java-entrance 以及 repeatIdentities 配置了 java 这个配置才生效
item 类型: object
javaSubInvokeBehaviors object [] 必须 需要录制和 mock 的 java 方法的配置
需要 pluginIdedentities 配置了 java-subInvoke 这个配置才生效
item 类型: object
useTtl boolean 必须 是否开启线程跟踪,默认 true 即可
degrade boolean 必须 是否降级,开启降级之后,不进行录制,只处理回放请求。默认取 false 即可。

获取录制记录

基本信息

Path: /facade/api/record/{appName}/{traceId}

Method: GET

接口描述:

该接口主要是供 repeater 在执行回放结果的时候,获取需要回放的记录用的。
返回结果为序列化后的录制记录,并不可读。

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

路径参数

参数名称 示例 备注
appName 录制记录的 appName
traceId 录制记录的 traceId

返回数据

名称 类型 是否必须 默认值 备注 其他信息
success boolean 非必须 是否获取成功
data string 非必须 序列化的录制记录
message string 非必须 都会返回 operate success

repeater-console——供用户调用

获取回放结果

基本信息

Path: /facade/api/repeat/callback/{repeatId}
Method: GET

接口描述:

获取单个记录的回放结果,详情见返回结果说明

请求参数

路径参数

参数名称 示例 备注
repeatId 回放结果的 repeatId

返回数据

名称 类型 是否必须 默认值 备注 其他信息
success boolean 必须 请求是否成功
message string 必须 operate success
data object 必须 回放结果数据,后面的字段全为 data 中的数据
repeatId string 必须 回放结果的 repeatId
finish boolean 必须 是否已回放完成
response string 必须 本次回放返回的结果
originResponse string 必须 录制记录中这个入口调用返回的结果
diff null 必须 null 回放结果与录制记录中的结果差异(由于官方没有实现该功能,所以默认返回 null)
cost number 必须 回放耗时
traceId string 必须 回放记录的 traceId
starTime string 必须 回放开始时间
endTime string 必须 回放结束时间
mockInvocations object [] 必须 回放过程中被 mock 的步骤的执行结果,后面的字段全为 1 个 mockInvocation 对象的字段 item 类型: object
index number 必须 mock 步骤的序号
traceId string 必须 回放记录的 traceId
repeatId string 必须 回放结果的 repeatId
success boolean 必须 这个 mock 步骤是否执行成功
skip boolean 必须 这个 mock 步骤是否被跳过
cost number 必须 这个 mock 步骤的耗时
originUri string 必须 这个 mock 步骤的录制时的标识 url
currentUri string 必须 这个 mock 步骤回放时标识 url
originArgs object [] 必须 这个 mock 步骤的录制时的入参 item 类型: object
currentArgs object [] 必须 这个 mock 步骤回放时入参 item 类型: object

触发回放

基本信息

Path: /facade/api/repeat/{appName}/{traceId}

Method: GET

接口描述:

读取repeat.repeat.url 所配置的 url,触发相应的 repeater 执行回放的接口,供用户调用。
能够触发单个录制记录的回放,需要提供被回放记录的 traceId 以及 appName。
任务下发成功,则返回回放记录的 repeatId,用以查询回放结果。
如果任务下发失败则返回异常信息。

请求参数

路径参数

参数名称 示例 备注
appName 需要回放的记录的应用名
traceId 需要回放的记录的 traceId

返回数据

名称 类型 是否必须 默认值 备注 其他信息
success boolean 非必须 是否回放成功
data string 非必须 成功则返回 repeatId,失败则返回异常信息
message string 非必须 成功则返回 operate success,失败则返回异常信息

共收到 3 条回复 时间 点赞

Path: /facade/api/record/{appName}/{traceId}
Path: /facade/api/repeat/callback/{repeatId}
这两个接口获取到的数据是序列化之后的,在 repeater-console 也反序列化不了吧?看代码是反序列话的时候使用了 ClassloaderBridge.instance().decode(invocation.getSerializeToken(),这个在 repeater-console 应用里因为不需要加载模块所以没有初始化

如果不能发序列号,楼主是怎么对比回放结果的?

ELes #2 · 2020年02月17日 Author
loiyouve 回复

在进行回放之前会从 repeater-console 中获取录制记录,进行反序列化获取到录制信息才进行回放的。如果反序列化失败会直接回访失败,拿不到回放结果。

仅楼主可见
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册