目的:
- 业务真实交互数据包含:BeginSession、SessionAck、register、getVar、setVar、request、requestAck、Info、broadcast、event、logEvent、LogWarn,使用某一业务进行验证难以全面。
- 以往经验发现,进行了部分改动后。在基础业务中表现无问题,但在其他不常用的页面使用时,容易出现验证不全面引发的问题。
- 所以设计的多接口自动化验证需要覆盖以上接口。
- 安全和非安全的websocket,输入、输出值有少量不同,需要进行验证到
- 在多次打开关闭websocket、register实体,需验证内部数据是否正确,是否已经正确释放。
实现:
正向场景1:
- BeginSession连接Guiconsole
- 检查SessionAck,关联SessionAck规范内容
- Register实体Guiconsole,关联Register规范内容
- Request功能OpenLogSender
- 检查RequestAck, 关联RequestAck规范内容
- 在业务端应能持续收到broadcast
- info功能OpenSender
- 在业务端应能收到event
- 验证SetVar设置UIState的值
- 验证GetVar获取UIState的值
- 验证LogEvent、LogWarn,Guiconsole订阅chromium发出的事件,通过broadcast发送
错误场景1:
- BeginSession连接实体Unknown
- 检查SessionAck是否能够正确返回错误信息
错误场景2:
- BeginSession连接实体Guiconsole
- 验证SetVar设置TerminalStage的值(无权限)
- 应返回错误信息
错误场景3:
- BeginSession连接实体Guiconsole
- Request、Info功能访问不存在的接口
- 验证RequestAck、Info是否能够正确返回错误信息
长时间多ws client场景:
- 多次打开关闭websocket
- register多个实体,关闭websocket,查看是否被正确释放
- 多个ws订阅同一个实体的广播,查看broadcast是否正常发送给每一个ws client
内部数据验证:
- ST、UAT上提供一个内部页面,能够实时检查chromium内部数据变量,防止数据未被正确释放
- 页面上需要展示的数据包含
- websocket当前的连接信息
- 实体-sessionId对照表(应随实体的启动和关闭,表现为>0和-1)
- broadCast注册表(为一列表,指示websocket订阅了哪些broadcast)
- register注册表(指示一个实体对应了几个不同的websocketId)
终端当前涉及对外http连接包含:
spshell
- upload log(上传互联网日志)
- get terminal cfg(获取终端配置)
- get VTM err msg List(获取终端错误映射列表)
- get Token(获取token)
upload terminal cfg version(上传终端配置版本)
alarm
send alarm(发送告警)
accessAuth
GetmAccessAuthHost(获取会话密钥)
UpdateWKTask(更新mk)
access(准入)
init mk(初始化mk)
guardian
upload log(上传互联网日志)
CardIssuer
RegistCardWhileCaptureCard(吞卡登记)
SyncMaterialCount(同步物料计数)
JudgeCardType(查询卡片类型)
HeartBeat
hand shake(心跳握手)
ConunterConnector
call route(呼叫)
IDCertificate
img check(图片检测)
Record
recordinfo list upload(上传记录信息列表)
Upgrade
SendSM3Task(发送文件SM3列表)
UpdateTaskStatus(更新任务状态)
QueryCurrTask(查询当前任务)
QueryNewPreTask(预查询新任务)
QueryNewContinueTask(继续查询新任务)
QueryTaskStatus(查询任务状态)
DownLoad Package(下载包) 文件下载,不上传链路信息
UpLoad
queryTempFile(查询临时文件)
updateState(登记文件流水状态)
addUploadFail(登记失败文件流水)
queryPlan(查询上传计划)
upload file(上传文件) 文件上传,不上传链路信息
按照类型,可分位3类
- 终端自行发起的http请求:自行生成第一跳,上传第一跳信息,并把下一跳信息传给服务端。
- 终端由业务端调用,发起的http请求:终端不生成第一跳,更新当前跳信息,传递给下一层
- 不需要上传链路信息:上传下载文件。
实现细节:
(1)改造http组件,如无任何链路输入,则把终端作为第一跳,并把链路信息上传;把第二跳信息传递给服务端。
(2)可输入链路信息,则更新当前跳信息,并把链路信息传递给下一层。
(3)改造规范参考:《分布式链路追踪技术规范》-http协议部分:
TraceContext 采用 B3 染色方案,通过 Http Header 标识符传递TraceContext,所有的 B3 Header 都遵循 X-B3-${name}的头部格式
添加TraceContext包含:
BusinessId、TraceId、SpanceId、ParentSpanId、Timestamp