-
Notifications
You must be signed in to change notification settings - Fork 1.4k
如何执行全链路自动化流量侦测测试
使用者集成框架后,需要通过Postman调用一下去验证是否成功集成,该方式比较繁琐,可以通过“全链路自动化流量侦测测试”方式进行验证
支持网关和服务为侦测入口两种方式,通过自动化测试手段验证全链路蓝绿灰度方式的准确性,由于不能通过大规模模拟调用来冲击生产环境的稳定性,需要通过人工判断来确定结果的准确性
适合事项
适合在生产环境使用
注意事项
服务必须引入discovery-plugin-admin-center-starter依赖
执行步骤
① 修改application.properties配置文件
- 网关侦测入口或者服务侦测入口任选一种,把testcase.inspect.url替换成相应的网关地址或者服务地址
- 当选择网关作为侦测入口,testcase.inspect.context.service替换成网关后第一跳的服务名
- 当选择服务作为侦测入口,testcase.inspect.context.service禁止配置
- 其它参数可以遵照默认设置,也可以视具体使用场景做改动
# 网关侦测入口地址
testcase.inspect.url=http://localhost:5001/discovery-guide-service-a/inspector/inspect
# 网关侦测入口转发服务
testcase.inspect.context.service=discovery-guide-service-a
# 服务侦测入口地址
# testcase.inspect.url=http://localhost:3001/inspector/inspect
# 测试用例的总数。采样总数越大,准确率越高,但耗费时间越长。缺失则默认为10
# testcase.sample.count=10
# 测试用例结果的过滤,不允许出现空格。缺失则默认为ID,V,即显示服务名和版本号
# 候选项包括
# ID,UID,AID,T,P,H,V,R,E,Z,G,A,TID,SID
# ID=ServiceId,UID=UUID,AID=ApplicationId,T=ServiceType,P=Plugin,H=host:port,V=Version,R=Region,E=Environment,Z=Zone,G=Group,A=Active,TID=TraceId,SID=SpanId
# testcase.result.filter=ID,V
# 测试用例抛错,通过Debug方式定位问题
# testcase.debug.enabled=false
② 修改规则策略文件
在mock-inspector.yaml里,服务列表替换成要侦测的服务列表,header替换成要侦测的参数
service:
- discovery-guide-service-a
- discovery-guide-service-b
header:
xyz: 1
③ 参考侦测部分结果
【侦测场景1】测试全链路侦测...
侦测次数 : 10
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
测试耗时 : 0 秒
【侦测场景1】结束
全链路自动化流量侦测测试,包括全链路自动化流量侦测本地测试和全链路自动化流量侦测云上测试两种模式
执行过程,有两种方式
- 通过https://github.com/Nepxion/DiscoveryTool/releases下载最新版本的Discovery Automation Inspector
- 解压后,根据上文提示做相应修改
- 运行startup.bat或者startup.sh
- 编译https://github.com/Nepxion/DiscoveryTool/tree/automation-springboot-2.x.x,分支为automation-springboot-2.x.x,或者https://github.com/Nepxion/DiscoveryTool/tree/automation-springboot-3.x.x,分支为automation-springboot-3.x.x
- 下载后,根据上文提示做相应修改
- 执行mvn clean install -DskipTests,在discovery-automation-inspector-application/target/discovery-automation-inspector-${version}-release目录下,运行startup.bat或者startup.sh
云上测试,即把原来本地测试的过程部署到云上Web服务器,执行逻辑和过程不变。具体功能包括
- 测试用例执行过程中,每一步成功和失败,都提供日志输出,使用者可以实现基于Web界面的测试操作
- 测试控制台提供两种方式的Rest接口,返回为全局唯一的
testcase-id
- 测试控制台需要通过Logback输入带有
testcase-id
的日志,参考discovery-automation-console/src/main/resouces下的logback.xml和logback-all.xml - 整合日志服务器,采集和输出测试日志到指定的分布式存储上
- 通过
testcase-id
获取和显示属于指定Web界面终端的日志
- 测试控制台提供两种方式的Rest接口,返回为全局唯一的
- 支持Properties和Yaml格式的两种调用接口
① 启动测试控制台
默认把Simulator和Inspector集成在一起,使用者可以视具体场景把它们分开部署
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>discovery-automation-inspector-starter-console</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>discovery-automation-simulator-starter-console</artifactId>
</dependency>
执行过程,有两种方式
- 通过https://github.com/Nepxion/DiscoveryTool/releases下载最新版本的Discovery Automation Console
- 解压后,运行startup.bat或者startup.sh
- 编译https://github.com/Nepxion/DiscoveryTool/tree/automation-springboot-2.x.x,分支为automation-springboot-2.x.x,或者https://github.com/Nepxion/DiscoveryTool/tree/automation-springboot-3.x.x,分支为automation-springboot-3.x.x
- 下载后,执行mvn clean install -DskipTests,在discovery-automation-console/target/discovery-automation-console-${version}-release目录下产生第一种方式的包,运行startup.bat或者startup.sh
② 修改application.properties配置文件
# Spring boot config
spring.application.name=automation-console
server.port=6002
# Console automation thread config for inspector and simulator
# spring.application.thread.core-pool-size=
# spring.application.thread.max-pool-size=
# spring.application.thread.queue-capacity=
# spring.application.thread.keep-alive-seconds=
# spring.application.thread.await-termination-seconds=
# spring.application.logger.mdc.key.shown=true
③ 启动测试
使用者可以自研自动化测试平台界面来代替Swagger界面,下面以Swagger界面为例,介绍如何操作
全链路自动化流量侦测测试,有两种接口
配置文件为Properties格式
访问接口
http://localhost:6002/inspector-test/test-config-properties
传输内容,按照次序,由application.properties、mock-inspector.yaml组成,中间用10个"-"组成换行分隔。例如:
testcase.inspect.url=http://localhost:5001/discovery-guide-service-a/inspector/inspect
testcase.inspect.context.service=discovery-guide-service-a
----------
service:
- discovery-guide-service-a
- discovery-guide-service-b
header:
xyz: 1
配置文件为Yaml格式
访问接口
http://localhost:6002/inspector-test/test-config-yaml
传输内容,按照次序,由application.yaml、mock-inspector.yaml组成,中间用10个"-"组成换行分隔。例如:
testcase:
inspect:
url: http://localhost:5001/discovery-guide-service-a/inspector/inspect
context:
service: discovery-guide-service-a
----------
service:
- discovery-guide-service-a
- discovery-guide-service-b
header:
xyz: 1
传输内容,自上而下,分别是基本配置属性、侦测规则策略。使用者配置的服务列表和侦测参数,建议和蓝绿灰度发布的参数保持一致
2017-2050 ©Nepxion Studio Apache License
- 如何对接Foundation基础平台实施收敛集成
- 如何对接DevOps运维平台实施流量管控
- 如何部署对接DevOps运维平台的控制台
- 如何对接DevOps运维平台执行半自动化蓝绿灰度发布
- 如何使用DevOps运维平台对接的公共接口
- 如何设计全链路智能编排高级蓝绿灰度发布界面
- 如何实现Windows10下GraalVM本地镜像化
- 蓝绿灰度发布
- 流量染色
- 隔离路由
- 故障转移
- 多活单元化
- 限流熔断降级权限
- 网关动态路由
- 可观测监控
- 如何操作配置中心
- 如何理解框架开关配置
- 如何理解规则策略里内容格式配置
- 如何操作网关和服务的蓝绿灰度发布规则策略配置
- 如何操作网关动态路由规则策略配置
- 如何操作Sentinel规则策略配置
- 如何实施规则策略配置和业务配置在配置中心的合并和分离
- 如何理解自动扫描目录
- 如何自定义流量管控
- 如何自定义实现组合式的防护
- 如何自定义高级配置订阅功能
- 如何自定义订阅框架事件
- 如何自定义解决业务自身跨线程上下文切换的问题
- 如何自定义重用框架内置的Swagger模块
- 如何自定义Header全链路传递
- 如何遵循Nepxion Discovery网关标准实现对其它网关全链路流量管控的二次开发
- 如何遵循Nepxion Discovery服务标准实现对消息队列等其它中间件全链路流量管控的二次开发