1.0.10-beta.9 • Published 4 days ago
@arextest/arex-node-agent v1.0.10-beta.9
背景
arex nodejs-agent 实现
环境
- js
- monkey patch
- rollup 打包
- ctrip npm 部署
- npm
- node v18
- semver
v1 内容
- 支持入口为express的api
- 支持http wrap
- 支持knex db wrap
- 支持上下文录制回放交互
- 预留arex api mock
项目结构
- 模块agent: nodeagent实现逻辑
- 模块app: 目标应用
- 模块app/instrumentation.js: 启动中间件
启动node-agent
- 自定义中间件启动器,按需配置中间件
参考 app/instrumentation
node --require ./instrumentation.js index.js
- 通过arex-runner启动agent
- 环境变量指定appid,host
- 平台配置更多中间件
- app/Dockerfile
CMD ["node", "--require", "--require @arextest/arex-node-agent/dist/runner.js", "index.js"]
- 调试本地agent
debug:
DEBUG=@arextest:* node --require ./instrumentation_local.js index.js
实现
- 代理流程
- 初始化配置
- 代理一个入口函数 生成上下文context,store
- 装载入口函数
- 装载函数调用的io,自定义装载等
- 加载context
- 录制/回放
- 存储/加载
- 结束
- 线程结束
- 卸载patch
案例 - express 请求一个 updateUser 接口
录制操作
- Express 中间件
- 创建
recordId
- 调用
client.saveRecord
- 保存
updateUser
请求的request, response信息
- 创建
- service 被测代码逻辑
- 调用
client.saveRecord
- 保存
service.updateUserName
的request, response信息
- 调用
回放操作
- Express 中间件
- 适配回放标识
arex-record-id
- 创建
replayId
- 调用
client.queryRecord
- 查询并提交
updateUser
请求的request,response信息
- 适配回放标识
- service 被测代码逻辑
- 调用
client.queryRecord
- 查询
service.updateUserName
的request, response信息 - 替换方法的返回结果
- 调用
发布
v1.0.6 1. 提取静态字段 2. 修复option读取失败 v1.0.10 1. 支持mysql2
参考
- 演练场
/jagong/node-agent-payload/-/tree/main/node_arex_agent
- npm 发布流程
- 申请权限
npm login --registry https://registry.npmjs.org
npm publish --registry https://registry.npmjs.org --access=public
- mock http :Nock 或 Sinon 等库来进行请求拦截和模拟响应
1.0.10-beta.7
4 days ago
1.0.10-beta.9
4 days ago
1.0.10-beta.6
5 days ago
1.0.10-beta.2
12 days ago
1.0.10-beta.4
12 days ago
1.0.10-beta.3
12 days ago
1.0.10-beta.5
12 days ago
1.0.1-0.beta.1
15 days ago
1.0.1-0.beta.2
15 days ago
1.0.10-beta.1
15 days ago
1.0.10
16 days ago
1.0.8
18 days ago
1.0.8-bate.1
18 days ago
1.0.7-beta.8
18 days ago
1.0.9-beta.1
18 days ago
1.0.9-beta.5
17 days ago
1.0.9-beta.6
17 days ago
1.0.9-beta.3
18 days ago
1.0.9-beta.4
18 days ago
1.0.7-beta.5
19 days ago
1.0.7-beta.6
19 days ago
1.0.7-beta.7
19 days ago
1.0.7-beta.1
19 days ago
1.0.7-beta.2
19 days ago
1.0.7-beta.4
19 days ago
1.0.6
1 month ago
1.0.5
1 month ago
1.0.4-beta.1
2 months ago
1.0.4
2 months ago
1.0.3-beta.3
2 months ago
1.0.3-beta.2
2 months ago
1.0.3-beta.1
2 months ago
1.0.3
2 months ago
1.0.2
2 months ago