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 PoweroffUpdate 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.Reset

17: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

修复总结

  1. 在默认参数值中补充缺失的结束括号 }
  2. 将模板中的所有 valid_status_codes 统一使用列表。Operator 同时接受 200204,以匹配实际 BMC 返回结果(204 No Content)。
  3. 使用 Evaluate 检查列表中是否包含 403,确保 ReadOnly 用户能够正确提前返回。

应用以上修复后,三个角色的测试迭代均可通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值