1.2.3-beta.69 • Published 8 months ago

@arextest/arex-node-agent v1.2.3-beta.69

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

背景

arex nodejs-agent 实现

环境

  1. js
  2. monkey patch
  3. rollup 打包
  4. ctrip npm 部署
  5. npm
  6. node v18
  7. 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
    1. 环境变量指定appid,host
    2. 平台配置更多中间件
    3. 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

实现

  • 代理流程
  1. 初始化配置
  2. 代理一个入口函数 生成上下文context,store
  3. 装载入口函数
  4. 装载函数调用的io,自定义装载等
    • 加载context
    • 录制/回放
    • 存储/加载
    • 结束
  5. 线程结束
    • 卸载patch

案例 - express 请求一个 updateUser 接口

录制操作

  1. Express 中间件
    • 创建recordId
    • 调用client.saveRecord
    • 保存updateUser请求的request, response信息
  2. service 被测代码逻辑
    • 调用client.saveRecord
    • 保存service.updateUserName 的request, response信息

回放操作

  1. Express 中间件
    • 适配回放标识 arex-record-id
    • 创建replayId
    • 调用client.queryRecord
    • 查询并提交updateUser请求的request,response信息
  2. service 被测代码逻辑
    • 调用client.queryRecord
    • 查询service.updateUserName 的request, response信息
    • 替换方法的返回结果

发布

v1.0.6 1. 提取静态字段 2. 修复option读取失败 v1.0.10 1. 支持mysql2

参考

  1. 演练场 /jagong/node-agent-payload/-/tree/main/node_arex_agent
  2. npm 发布流程
  • 申请权限
  • npm login --registry https://registry.npmjs.org
  • npm publish --registry https://registry.npmjs.org --access=public
  1. mock http :Nock 或 Sinon 等库来进行请求拦截和模拟响应
1.2.3-beta.69

8 months ago

1.2.4-beta.1

8 months ago

1.2.3-beta.68

8 months ago

1.2.3-beta.67

8 months ago

1.2.3-beta.66

9 months ago

1.2.3-beta.65

9 months ago

1.2.3-beta.60

10 months ago

1.2.3-beta.61

9 months ago

1.2.3-beta.62

9 months ago

1.2.3-beta.63

9 months ago

1.2.3-beta.64

9 months ago

1.2.3-beta.50

10 months ago

1.2.3-beta.51

10 months ago

1.2.3-beta.52

10 months ago

1.2.3-beta.53

10 months ago

1.2.3-beta.54

10 months ago

1.2.3-beta.55

10 months ago

1.2.3-beta.56

10 months ago

1.2.3-beta.57

10 months ago

1.2.3-beta.58

10 months ago

1.2.3-beta.59

10 months ago

1.2.3-beta.48

10 months ago

1.2.3-beta.49

10 months ago

1.2.3-beta.9

12 months ago

1.2.3-beta.7

12 months ago

1.2.3-beta.8

12 months ago

1.2.3-beta.5

12 months ago

1.0.10-beta.19

1 year ago

1.2.3-beta.3

12 months ago

1.2.3-beta.40

11 months ago

1.2.3-beta.4

12 months ago

1.2.3-beta.41

10 months ago

1.2.3-beta.1

12 months ago

1.2.3-beta.42

10 months ago

1.2.3-beta.2

12 months ago

1.2.3-beta.43

10 months ago

1.2.3-beta.44

10 months ago

1.2.3-beta.45

10 months ago

1.2.3-beta.46

10 months ago

1.2.3-beta.47

10 months ago

1.1.3

12 months ago

1.0.10-beta.15

1 year ago

1.2.3-beta.30

11 months ago

1.2.3-beta.31

11 months ago

1.2.3-beta.32

11 months ago

1.2.3-beta.33

11 months ago

1.2.3-beta.34

11 months ago

1.2.3-beta.35

11 months ago

1.2.3-beta.36

11 months ago

1.2.3-beta.37

11 months ago

1.2.3-beta.38

11 months ago

1.2.3-beta.39

11 months ago

1.0.10-beta.20

1 year ago

1.1.2-beta.11

12 months ago

1.1.2-beta.10

12 months ago

1.2.3-beta.21

11 months ago

1.2.3-beta.22

11 months ago

1.2.3-beta.23

11 months ago

1.2.3-beta.24

11 months ago

1.2.3-beta.25

11 months ago

1.2.3-beta.26

11 months ago

1.2.3-beta.27

11 months ago

1.2.3-beta.28

11 months ago

1.2.3-beta.29

11 months ago

1.1.2-beta.9

12 months ago

1.2.3-beta.10

12 months ago

1.2.3-beta.11

12 months ago

1.2.3-beta.12

12 months ago

1.1.10-beta.20

12 months ago

1.2.3-beta.13

12 months ago

1.2.3-beta.14

12 months ago

1.2.3-beta.15

11 months ago

1.2.3-beta.16

11 months ago

1.1.3-beta.1

12 months ago

1.1.2-beta.2

12 months ago

1.2.3-beta.17

11 months ago

1.1.2-beta.1

12 months ago

1.2.3-beta.18

11 months ago

1.1.2-beta.4

12 months ago

1.2.3-beta.19

11 months ago

1.1.2-beta.3

12 months ago

1.1.2-beta.6

12 months ago

1.1.2-beta.5

12 months ago

1.1.2-beta.8

12 months ago

1.1.3-beta.2

12 months ago

1.0.10-beta.14

1 year ago

1.0.10-beta.12

1 year ago

1.0.10-beta.13

1 year ago

1.0.10-beta.11

1 year ago

1.0.10-beta.10

1 year ago

1.0.10-beta.7

1 year ago

1.0.10-beta.9

1 year ago

1.0.10-beta.6

1 year ago

1.0.10-beta.2

1 year ago

1.0.10-beta.4

1 year ago

1.0.10-beta.3

1 year ago

1.0.10-beta.5

1 year ago

1.0.1-0.beta.1

1 year ago

1.0.1-0.beta.2

1 year ago

1.0.10-beta.1

1 year ago

1.0.10

1 year ago

1.0.8

1 year ago

1.0.8-bate.1

1 year ago

1.0.7-beta.8

1 year ago

1.0.9-beta.1

1 year ago

1.0.9-beta.5

1 year ago

1.0.9-beta.6

1 year ago

1.0.9-beta.3

1 year ago

1.0.9-beta.4

1 year ago

1.0.7-beta.5

1 year ago

1.0.7-beta.6

1 year ago

1.0.7-beta.7

1 year ago

1.0.7-beta.1

1 year ago

1.0.7-beta.2

1 year ago

1.0.7-beta.4

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4-beta.1

1 year ago

1.0.4

1 year ago

1.0.3-beta.3

1 year ago

1.0.3-beta.2

1 year ago

1.0.3-beta.1

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago