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

发布时间:2026/10/11 2:02:56

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 用户能够正确提前返回。应用以上修复后三个角色的测试迭代均可通过。
延伸阅读

更多相关文章

2026/10/10 1:19:15

【00014】

四、Linux软件编程1. 操作系统一款软件,为了屏蔽底层不同的硬件平台,为上层提供统一的接口,实现通用的软件代码 PC三大操作系统Unix 世界上第一款操作系统Linux GNU GNUs Not Unix C语言编写服务器嵌入式Windows C/C2. Linux操作系统&#xf…

2026/10/11 5:57:44

AI智能体实战:从写代码到设计环境,提升开发效率

1. 从“写代码”到“设计环境”:一个正在发生的范式转移如果你最近半年一直在关注 AI 辅助开发这个方向,应该能明显感觉到一个变化:讨论的重心正在从“哪个补全工具更准”悄悄转向“怎么给智能体搭一个它能自己跑起来的环境”。这个转变不是营…

2026/10/11 5:57:44

Wolfram语言进阶指南:盘点尚未深入探讨的高阶功能

1. 为什么需要专门聊一聊“还没聊过的内容”如果你跟着这个系列一路读到第49节,大概已经能用Wolfram语言写规则、处理列表、作图、解方程,甚至能写一点像样的自定义函数。但越往后学,你越会意识到一件事:这套语言的边界太宽了。我…

2026/10/11 5:57:44

WSL2 GPU直通与CUDA配置:AI开发环境实战指南

1. 为什么非要折腾一套 WSL2:双系统和虚拟机的真实痛点我有一张 NVIDIA 显卡,平时在 Windows 上做日常开发,跑 AI 实验的时候却总是陷入两难。刚入行那阵子,我习惯了"双系统方案":磁盘划出一个分区装 Ubuntu…

2026/10/11 5:57:44

基于STM32单片机汽车防盗报警器4G短信GPS定位温度震动感应蓝牙无线APP/WiFi无线APP/摄像头视频监控/云平台设计S438

STM32-S438-4G短信温度GPS定位追踪车辆控制震动检测人体检测一键SOS防盗设防撤防LEDOLED屏声光提醒按键(无线方式选择)产品功能描述:本系统由STM32F103C8T6单片机核心板、OLED屏、(无线蓝牙/无线WIFI/无线视频监控/联网云平台模块-可选)、红外…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑