【已评审】PowerStrategyDebug资源协作对象新增资源协作方法

背景

增强场景化节能功能可测试性,不依赖硬件和实际带内节能系统,允许模拟不同的场景化节能功能的输入测试功能输出的可靠性;

关联ISSUE

支持NPU配置查询功能可测试能力

整体方案

场景化节能功能提供节能模式设置和节能状态查询两个对外接口:
节能模式设置接口
(1)首先会检查硬件是否支持、是否存在可用的节能系统;
(2)根据不同的节能模式和激活的节能系统解析不同的参数下发给对应系统;
节能状态查询接口
(1)首先会检查是否存在激活的节能系统,如果不存在可用系统,则返回未知;
(2)存在可用调频系统,则直接查询对应调频状态,根据实际生效状态返回生效或不生效;
为增强场景化节能功能的可测试性,不依赖硬件和实际带内节能系统,实现BMC场景化节能的单点功能验证,需要模拟硬件支持检查、可用节能系统检查、参数下发返回、状态查询返回。

评审点

评审点1:
在资源协作对象路径/bmc/kepler/Debug/PowerStrategy下新增资源协作接口bmc.kepler.Debug.EnergySavingScene,在此接口下包含如下方法:

  • MockActivatedModuleByDomain,模拟指定节能领域的生效节能系统;
  • MockEnergySavingStatusByDomain,模拟指定节能生效系统的状态查询返回值;

详细描述

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述 访问权限
MockActivatedModuleByDomain ss 第一个参数标识指定的节能域名称,取值如下:
- CPUSystem
- NPUSystem
第二个参数标识指定生效的节能系统名称
CPUSystem取值如下:
- BMA
- NPM
NPUSystem取值如下:
- LPM
/ / 模拟指定节能域的生效节能系统 PowerMgmt
MockEnergySavingStatusByDomain ssas 第一个参数标识指定的节能域名称,取值如下:
- CPUSystem
- NPUSystem
第二个参数标识指定的节能系统名称
CPUSystem取值如下:
- BMA
- NPM
NPUSystem取值如下:
- LPM
第三个参数为指定的节能系统的模拟返回值
BMA:模拟返回值长度为1,标识CPU节能状态,取值范围:Pending、Stopping、Suspended、Running
NPM:模拟返回值长度为1,标识CPU节能状态,取值范围:Activated、Inactivated
LPM:模拟返回值长度为2
第一个参数标识NPU工作模式,取值范围:idle、active、light sleep、deep sleep
第二个参数标识NPU节能状态,取值范围:L0、L1、L2
/ / 模拟指定节能生效系统的状态查询返回值 PowerMgmt

评审结论

通过,同意在资源协作对象路径/bmc/kepler/Debug/PowerStrategy下新增资源协作接口 bmc.kepler.Debug.EnergySavingScene,包含如下方法:

  • MockActivatedModuleByDomain,用于模拟指定节能领域的生效节能系统,请求签名为 ss,无响应,操作权限为 PowerMgmt
  • MockEnergySavingStatusByDomain,用于模拟指定节能生效系统的状态查询返回值,请求签名为 ssas,无响应,操作权限为 PowerMgmt

遗留问题

@mangin 以下疑问请解答一下:

  1. Mock 接口是提供的模拟测试接口,放到 bmc.kepler.Chassis.EnergySavingScene 接口下的原因是什么?为什么不放到 Debug 接口?
  2. 上述接口直接是模拟返回值,对应的测试功能点在哪儿?怎么保证测试是正确的,能起到模拟实际场景的作用?

1、是的,Mock的资源树方法应该挪到Debug的接口下;
2、新增的Debug方法模拟的是场景化节节能功能的输入,测试的场景化节能功能的输出;

已将MockEnergySavingStatusByDomain和MockActivatedModuleByDomain方法,挪到PowerStrategyDebug资源协作对象下,PATH:/bmc/kepler/Debug/PowerStrategy