写作环境

  • 5.0.3
  • rk3568 arm64

测试现象

  • testGetDisplayPowerStatus001
  • testGetDisplayPowerStatus003
  • testGetDisplayPowerStatus004
  • testGetDisplayBacklight001
  • testGetDisplayBacklight003
  • testGetDisplayBacklight004
  • testGetDisplayReleaseFence001
  • testGetDisplayReleaseFence003
  • testGetDisplayReleaseFence004

均失败

image.png

分析过程

1.首先回到源码,HatsHdfDisplayComposerAdditionalUtTest模块的源码是test/xts/hats/hdf/display/composer/unittest_additional/hdi_composer_ut.cpp,查看testGetDisplayPowerStatus001的函数,可以看到传入了设备ID 20,然后获取显示设备电源状态。 设备只有一个显示设备0,不存在显示设备20 !!! 所以testGetDisplayPowerStatus001这个case失败

image.png

然后下面还有一个宏DISPLAY_COMMUNITY控制测试结果。可以得出结论:testGetDisplayPowerStatus001这个case,如果定义了DISPLAY_COMMUNITY就是社区版,社区版获取设备ID 20设备电源状态失败也是pass的。商业版获取设备ID 20设备电源状态成功才能pass。

image.png

追代码发现DISPLAY_COMMUNITY这个宏由drivers/peripheral/display/display_config.gni中drivers_peripheral_display_community特性来控制,且默认是关闭的。跟踪代码发现,如果打开DISPLAY_COMMUNITY这个宏的话,会增加很多测试项。

2.同理,最后整理可知testGetDisplayPowerStatus*测试显示设备电源管理功能在各种设备ID边界条件下的正确性和稳定性。

  • testGetDisplayPowerStatus001:测试最大设备ID(20)的边界情况
  • testGetDisplayPowerStatus002:测试最小设备ID(0)的边界情况
  • testGetDisplayPowerStatus003:测试随机设备ID(15)的情况
  • testGetDisplayPowerStatus004:测试负值设备ID(-1)的情况

显示设备ID 20、15、-1并不存在,自然testGetDisplayPowerStatus001、testGetDisplayPowerStatus003、testGetDisplayPowerStatus004样例失败。

解决办法

申请豁免

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐