UNPKG

multi-lane-manager

Version:

Nacos 泳道管理与请求路由组件

207 lines (141 loc) 5.88 kB
# 多泳道管理器测试指南 本文档提供了一系列命令,用于测试多泳道管理器组件的功能。 ## 前提条件 1. 确保已安装 Nacos 服务器,并且可以通过 `localhost:8848` 访问 2. 确保已安装并配置好多泳道管理器组件 ## 1. 启动测试应用 首先,我们需要启动两个不同泳道的应用实例进行测试。 ### 启动 dev-lane 实例(端口 3001) ```bash # 启动 dev-lane 实例 NITRO_PORT=3001 LANE_ENABLE=true LANE_ID=dev-lane SERVICE_NAME=my-test-app LANE_SERVER=localhost:8848 npm run dev ``` ### 启动 test-lane 实例(端口 3002) 在另一个终端窗口中运行: ```bash # 启动 test-lane 实例 NITRO_PORT=3002 LANE_ENABLE=true LANE_ID=test-lane SERVICE_NAME=my-test-app LANE_SERVER=localhost:8848 npm run dev ``` ## 2. 测试命令 ### 基本健康检查 首先,检查两个实例的健康状态: ```bash # 检查 dev-lane 实例的健康状态 curl http://localhost:3001/api/lane-manager/health | jq # 检查 test-lane 实例的健康状态 curl http://localhost:3002/api/lane-manager/health | jq ``` ### 测试普通请求 测试向每个实例发送普通请求: ```bash # 向 dev-lane 实例发送请求 curl -v http://localhost:3001/api/hello # 向 test-lane 实例发送请求 curl -v http://localhost:3002/api/hello ``` ### 测试跨泳道请求 测试跨泳道请求功能: ```bash # 从 dev-lane 实例向 test-lane 发送请求 curl -v -H "X-Lane-ID: test-lane" http://localhost:3001/api/hello # 从 test-lane 实例向 dev-lane 发送请求 curl -v -H "X-Lane-ID: dev-lane" http://localhost:3002/api/hello ``` ### 使用调试头获取详细信息 使用调试功能获取请求处理的详细信息: ```bash # 使用调试头从 dev-lane 向 test-lane 发送请求 curl -v -H "X-Lane-Debug: true" -H "X-Lane-ID: test-lane" http://localhost:3001/api/hello # 使用调试头从 test-lane 向 dev-lane 发送请求 curl -v -H "X-Lane-Debug: true" -H "X-Lane-ID: dev-lane" http://localhost:3002/api/hello ``` ### 测试泳道功能禁用情况 测试当泳道功能禁用时的行为: ```bash # 启动一个禁用泳道功能的实例 NITRO_PORT=3003 LANE_ENABLE=false SERVICE_NAME=my-test-app npm run dev # 向禁用泳道功能的实例发送请求 curl -v http://localhost:3003/api/hello # 向禁用泳道功能的实例发送带泳道ID的请求(应该不会转发) curl -v -H "X-Lane-ID: test-lane" http://localhost:3003/api/hello # 使用调试头查看详细信息 curl -v -H "X-Lane-Debug: true" -H "X-Lane-ID: test-lane" http://localhost:3003/api/hello ``` ### 测试错误情况 测试当目标泳道不存在时的错误处理: ```bash # 请求一个不存在的泳道 curl -v -H "X-Lane-ID: nonexistent-lane" http://localhost:3001/api/hello # 使用调试头查看详细错误信息 curl -v -H "X-Lane-Debug: true" -H "X-Lane-ID: nonexistent-lane" http://localhost:3001/api/hello ``` ### 测试 Cookie 中的泳道 ID 测试从 Cookie 中获取泳道 ID: ```bash # 使用 Cookie 设置泳道 ID curl -v --cookie "x-lane-id=test-lane" http://localhost:3001/api/hello # 使用调试头和 Cookie 查看详细信息 curl -v -H "X-Lane-Debug: true" --cookie "x-lane-id=test-lane" http://localhost:3001/api/hello ``` ## 3. 验证 Nacos 注册情况 如果您有 Nacos 控制台,可以通过以下方式验证服务注册情况: 1. 打开浏览器访问 Nacos 控制台:http://localhost:8848/nacos/ 2. 使用默认用户名/密码登录:nacos/nacos 3. 在服务列表中查找 `my-test-app` 服务 4. 验证是否有两个实例,分别属于 `dev-lane` 和 `test-lane` 泳道 ## 4. 一键测试脚本 您也可以创建一个简单的测试脚本来自动执行这些测试: ```bash #!/bin/bash echo "===== 测试多泳道管理器 =====" echo -e "\n1. 检查健康状态" echo "dev-lane 健康状态:" curl -s http://localhost:3001/api/lane-manager/health | jq echo "test-lane 健康状态:" curl -s http://localhost:3002/api/lane-manager/health | jq echo -e "\n2. 测试普通请求" echo "向 dev-lane 发送请求:" curl -s http://localhost:3001/api/hello echo -e "\n向 test-lane 发送请求:" curl -s http://localhost:3002/api/hello echo -e "\n3. 测试跨泳道请求" echo "从 dev-lane 向 test-lane 发送请求:" curl -s -H "X-Lane-ID: test-lane" http://localhost:3001/api/hello echo -e "\n从 test-lane 向 dev-lane 发送请求:" curl -s -H "X-Lane-ID: dev-lane" http://localhost:3002/api/hello echo -e "\n4. 使用调试头" echo "使用调试头从 dev-lane 向 test-lane 发送请求:" curl -s -i -H "X-Lane-Debug: true" -H "X-Lane-ID: test-lane" http://localhost:3001/api/hello | grep -i "X-Lane-Detail" echo -e "\n测试完成" ``` 将此脚本保存为 `test-lane-manager.sh`,然后执行: ```bash chmod +x test-lane-manager.sh ./test-lane-manager.sh ``` ## 5. 预期结果 ### 健康检查 健康检查应返回类似以下的 JSON 响应: ```json { "status": "ok", "registered": true, "port": 3001, "laneId": "dev-lane", "serviceName": "my-test-app", "timestamp": "2023-06-01T12:00:00.000Z", "nitroPluginLoaded": true } ``` ### 跨泳道请求 当发送跨泳道请求时,请求应该被转发到目标泳道的实例,并且响应头中应包含: ``` X-Proxied-By: multi-lane-manager X-Original-Lane: dev-lane X-Lane-ID: test-lane ``` ### 调试信息 使用调试头时,响应头中应包含 `X-Lane-Detail` 头,其中包含请求处理的详细信息,例如: ``` X-Lane-Detail: 请求时间: 2023-06-01T12:00:00.000Z | 请求路径: GET /api/hello | 当前泳道: dev-lane | 服务名称: my-test-app | 目标泳道Header键: x-lane-id | 泳道ID来源: Header, 值: test-lane | 处理: 跨泳道请求 | 目标泳道: test-lane | 找到实例数量: 1 | 选择实例: 127.0.0.1:3002 | 负载均衡策略: ROUND_ROBIN ```