【iTestSmart 1.0.41】设置自定义模式出风口温度查看操作日志,日志信息对比失败。

一、测试环境
硬件:S920X20
BMC Version: 26.03
二、问题描述
设置自定义模式出风口温度查看操作日志( SmartCooling_XH321V5_202),测试过程中,日志信息与预期不符,如图所示:




问题:预期结果中BMC的用户名为Administrator,实际用户名为Admin,对比失败。疑似脚本问题,请确认。

答案内容由AI生成,仅供参考:

结论与建议

项目 内容
问题性质 测试脚本预期与实际日志格式不匹配
根本原因 脚本要求用户名为 Administrator,但 BMC 日志记录为 Admin
是否功能异常? 否 —— 配置已成功应用
推荐解决方式 修改测试脚本正则表达式以兼容 AdminAdministrator
后续建议 建立日志字段标准化规范,避免因命名差异导致误判
点击此处查看详细分析解答

【iTestSmart 1.0.41】设置自定义模式出风口温度查看操作日志失败问题分析

问题描述

在测试 SmartCooling_XH321V5_202(设置自定义模式出风口温度)时,操作日志校验失败。具体表现为:

  • 预期日志中显示的用户名是 Administrator
  • 实际日志中记录的用户名为 Admin
  • 因用户名不一致导致正则匹配失败,测试用例报错:“操作日志校验失败,不符合预期”。

测试环境如下:

  • 硬件:S920X20
  • BMC Version:26.03

问题分析

1. 日志内容对比

根据提供的日志信息:

:white_check_mark: 预期日志正则表达式:

['Redfish,Administrator@.*,Set target temperature to %s of outlet temperature','adjustment policy(?:\\(?:\\:0x[0-9a-fA-F]+\\)?)\\s* successfully']

该表达式明确要求用户名为 Administrator

:memo: 实际日志内容:

2026-04-17 03:51:19 Redfish,Admin@192.168.40.23,thermal_mgmt,Set target temperature to 53 of outlet temperature adjustment policy(id:0x7) successfully

实际记录的用户名为 Admin,而非 Administrator

:warning: 核心问题:日志中的用户标识与预期不符,导致正则校验失败。


2. 根本原因定位

结合上下文与知识库信息分析,问题可能源于以下方面:

:small_blue_diamond: 用户名映射或配置变更

  • 在 BMC 系统中,可能存在 用户别名机制登录名缩写策略,例如:
    • 用户全名为 Administrator,但在部分日志系统中简写为 Admin
  • 某些 BMC 固件版本(尤其是 OpenUBMC/iBMC)在生成操作日志时,可能会对长用户名进行截断或使用默认别名。

:small_blue_diamond: 测试脚本未适配用户名变化

  • 测试脚本 SmartCooling_XH321V5_202.py 中硬编码了 "Administrator" 字符串作为预期值。
  • 若 BMC 固件逻辑变更导致日志中使用 "Admin",而脚本未同步更新正则表达式,则必然导致校验失败。

:small_blue_diamond: Redfish 接口行为一致性(参考知识库)

  • Redfish API 是标准接口用于配置风扇、温度等(如 Oem/openUBMC/FanSpeedCustom/OutletTargetTemperatureCelsius)。
  • 所有通过 Redfish 发起的操作应正确记录到操作日志(Operational Log)。
  • 日志中记录的用户名取决于认证时的身份标识传递方式,若 Redfish 请求携带的是 Admin 账号,则日志自然记录为 Admin

3. 相关证据支持

实体/文档 关联内容
operation log(操作日志) 记录所有执行命令及其结果,包括用户信息、时间、操作类型。
Redfish 作为配置接口,其操作会生成 Operational Log 条目。
Postman 常用于测试 Redfish 接口,但在真实场景中由自动化框架调用。
文档 #1 (【iTestSmart】...设置SmartCooling模式) 提到:IPMI 设置 SmartCooling 模式后日志显示成功但配置失败,说明日志与实际状态可能脱节。
知识图谱关系:Redfish → Operational Log Redfish 动作必须触发操作日志写入,但用户名称来源于请求上下文。

初步结论

:white_check_mark: 此问题属于测试脚本预期与 BMC 实际日志行为不一致,而非功能缺陷。

  • BMC 正确执行了 “设置出风口目标温度” 操作。
  • 日志已成功记录该操作,且状态为 successfully
  • 唯一差异在于 用户名字段的表示形式Admin vs Administrator)。
  • 因此,问题本质是 测试脚本的校验逻辑过于严格,未兼容可能的用户名缩写或映射。

建议解决方案

:white_check_mark: 方案一:放宽日志校验正则表达式

修改测试脚本中对用户名的匹配规则,支持多种格式:

# 修改前(严格)
"Redfish,Administrator@.*,..."

# 修改后(兼容 Admin / Administrator)
"Redfish,(?:Admin(?:istrator)?)+@.*,..."

:white_check_mark: 优点:无需修改 BMC 行为,适配现有日志输出。
:hammer_and_wrench: 影响范围:仅影响测试脚本断言逻辑。


:warning: 方案二:统一 BMC 日志用户名输出格式

若业务要求日志统一使用全称 Administrator,则需修改 BMC 日志模块行为:

  1. 定位日志生成代码(如 thermal_mgmt 模块)。
  2. 确保在记录操作日志时,用户字段使用完整用户名,而非缩写。
  3. 验证 Redfish/IPMI 接口上下文传递一致性。

:warning: 缺点:需升级 BMC 固件,风险高,不推荐仅为此调整。


:white_check_mark: 方案三:增强测试框架的灵活性

引入 用户别名映射表日志字段标准化处理层,在比对前先做清洗:

def normalize_username(log_entry):
    return log_entry.replace("Admin@", "Administrator@")

适用于多用户别名场景,提升测试鲁棒性。


结论与建议

项目 内容
问题性质 测试脚本预期与实际日志格式不匹配
根本原因 脚本要求用户名为 Administrator,但 BMC 日志记录为 Admin
是否功能异常? 否 —— 配置已成功应用
推荐解决方式 修改测试脚本正则表达式以兼容 AdminAdministrator
后续建议 建立日志字段标准化规范,避免因命名差异导致误判

参考资料

  • tc_script.scripts.inner_case...SmartCooling_XH321V5_212.py(类似测试用例)
  • operation log 机制说明
  • Redfish 接口与日志联动关系
  • 文档 #1、#5 中关于日志记录与认证行为的描述

:white_check_mark: 建议提交脚本修复 PR,并添加注释说明用户名兼容性处理逻辑。

你们环境的默认用户用户名是Admin是吗?我们这边内部都是写死的Administrator。你看下能否修改下你们那边的环境用户名和Administrator保持一致呢?


ok,使用Administrator用户测试PASS。