LiteOS_M轻量系统XTS测试ActsSamgrTes用例中sendrequest测试失败修复
·
测试分析
ActsSamgrTes测试用例sendrequest_func_test.c中testSendRequest0070、testSendRequest0080、testSendRequest0090在测试时存在失败的情况:
搜索 "sendrequest_func_test.c" (1个文件中匹配到10次,总计查找1次) [RegEx]
D:\test.log (匹配10次)
行 403: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:410:testSyncCall0010:PASS
行 408: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:438:testSendRequest0010:PASS
行 433: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:476:testSendRequest0020:PASS
行 436: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:514:testSendRequest0030:PASS
行 439: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:543:testSendRequest0040:PASS
行 442: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:571:testSendRequest0050:PASS
行 450: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:605:testSendRequest0060:PASS
行 455: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:668:testSendRequest0070:FAIL: E0xc00 OsMemAlloc size: 8 Byte, AllocSize: 16 Byte, UsedMemSize: 46312 Byte.
行 460: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:704:testSendRequest0080:FAIL: Expected 0xc00 OsMemAlloc size: 32 Byte, AllocSize: 40 Byte, UsedMemSize: 46352 Byte.
行 506: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:737:testSendRequest0090:FAIL: Expected -73 Was 0
-----------------------
10 Tests 3 Failures 0 Ignored
在测试结果中可以看到三个测试用例执行失败,分析代码testSendRequest0070、testSendRequest0080、testSendRequest0090测试用例中是通过发送异步请求,根据返回结果与预期结果进行判断,但是在发送请求后立即进行了断言判断,此时请求尚未完成并返回结果,因此导致测试失败。
修改
在发送请求后添加延时,给系统留出了处理消息的时间,确保后台线程有机会执行回调函数并更新数据,从而保证断言检查的是正确的结果。
LITE_TEST_CASE(SendRequestTestSuite, testXXXXXXXX, Function | MediumTest | Level2)
{
for (int i = 0; i < PRESSURE_BASE; i++) {
...
int32 result = demoApi->SAMGR_SendRequestProxy(&feature->identity, &request, DemoHandlerAndCheck);
TEST_ASSERT_EQUAL_INT(result, 0);
osDelay(OPER_INTERVAL); // 添加延时
TEST_ASSERT_EQUAL_INT(strcmp(feature->latestRequest, body), 0);
...
}
}
修改后测试结果:
搜索 "sendrequest_func_test.c" (1个文件中匹配到10次,总计查找1次) [RegEx]
新文件 1 (匹配10次)
行 403: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:410:testSyncCall0010:PASS
行 408: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:438:testSendRequest0010:PASS
行 432: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:476:testSendRequest0020:PASS
行 435: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:514:testSendRequest0030:PASS
行 438: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:543:testSendRequest0040:PASS
行 441: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:571:testSendRequest0050:PASS
行 449: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:605:testSendRequest0060:PASS
行 456: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:644:testSendRequest0070:PASS
行 578: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:679:testSendRequest0080:PASS
行 656: ../../../test/xts/acts/distributed_schedule_lite/system_ability_manager_hal/src/sendrequest_func_test.c:716:testSendRequest0090:PASS
-----------------------
10 Tests 0 Failures 0 Ignored
注意:如果 OPER_INTERVAL 定义的值过小(例如小于消息处理的平均耗时),在压力测试环境下仍可能偶发失败。如果发现取消注释后仍有不稳定情况,可能需要适当增大 OPER_INTERVAL 的值。
更多推荐

所有评论(0)