ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

test_ldap_configuration openBmc中的LDAP配置测试失败用例分析(2)

test_ldap_configuration openBmc中的LDAP配置测试失败用例分析(2) LDAP用户执行服务器的上下电操作34Update LDAP User Roles And Verify Host Poweroff Operation❌失败35Update LDAP User Roles And Verify Host Poweron Operation❌失败问题一BMC没更新服务器的last state一直获取到None之类的导致redfish power on 关键字执行失败这个属于测试环境问题。通常服务器的UEFI和OS会通过带内ipmi 发送postcode或ipmi心跳包给BMC以更新last state字段问题二执行的输入期望参数列表给错了少一个]Update LDAP User Role And Host Poweroff和Update LDAP User Role And Host Poweron中valid_status_code的默认值缺少结束括号}。当前代码[Arguments] ${ldap_type} ${group_privilege} ${group_name} ${valid_status_code}[${HTTP_OK,${HTTP_NO_CONTENT}]修改为[Arguments] ${ldap_type} ${group_privilege} ${group_name} ${valid_status_code}[${HTTP_OK}, ${HTTP_NO_CONTENT}]问题三类型不匹配。readonly和Operator在LDAP post关机阶段执行失败而admin执行成功。Redfish.Post要求valid_status_codes为列表。目前ReadOnly 和 Operator 传入的是单个整数而 Administrator 传入的是列表。传入整数会导致TypeError。Redfish.Post的错误日志KEYWORD Redfish . Post ${REDFISH_POWER_URI} body{ResetType: ForceOff} valid_status_codes${valid_status_code}17:24:46.696 INFO Attempt 1 of /redfish/v1/Systems/system/Actions/ComputerSystem.Reset17:24:46.739 INFO Response Time for POST ...: 0.042 seconds.17:24:46.740 FAIL TypeError: eval() arg 1 must be a string, bytes or code object当前代码${LDAP_TYPE} ReadOnly ${GROUP_NAME} ${HTTP_FORBIDDEN}${LDAP_TYPE} Operator ${GROUP_NAME} ${HTTP_OK}${LDAP_TYPE} Administrator ${GROUP_NAME} [${HTTP_OK}, ${HTTP_NO_CONTENT}]统一修改为使用列表${LDAP_TYPE} ReadOnly ${GROUP_NAME} [${HTTP_FORBIDDEN}]${LDAP_TYPE} Operator ${GROUP_NAME} [${HTTP_OK}, ${HTTP_NO_CONTENT}]${LDAP_TYPE} Administrator ${GROUP_NAME} [${HTTP_OK}, ${HTTP_NO_CONTENT}]注意Operator 增加HTTP_NO_CONTENT是因为实际测试中 BMC 返回204 No Content与 Administrator 的实际返回结果一致。IF条件无法正确处理列表类型当valid_status_code为列表例如[403]时${valid_status_code} ${HTTP_FORBIDDEN}实际上是在比较一个列表和一个整数因此始终为 False。因此当 ReadOnly 用户执行关机操作并收到403时测试无法提前返回而是继续等待主机关机最终导致超时。当前代码IF ${valid_status_code} ${HTTP_FORBIDDEN} RETURN修改为${is_forbidden} Evaluate ${HTTP_FORBIDDEN} in ${valid_status_code}IF ${is_forbidden} RETURN修复总结在默认参数值中补充缺失的结束括号}。将模板中的所有valid_status_codes统一使用列表。Operator 同时接受200和204以匹配实际 BMC 返回结果204 No Content。使用Evaluate检查列表中是否包含403确保 ReadOnly 用户能够正确提前返回。应用以上修复后三个角色的测试迭代均可通过。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进