【iTestSmart 1.0.41】查询资源的schemas测试失败。

一、测试环境
硬件:S920X20
BMC Version: 25.12
二、问题描述
“查询单个Schema文件对应资源信息测试”(Interface_Redfish_SchemaStore_006)测试用例,报错信息如下:


“期望的结果值”是从哪里获取的呢,疑似数据不全,请确认“实际的结果值”是否正确。

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

总结

项目 状态
测试失败原因 实际结果比期望结果多了 LogService.v1_8.1.json 引用,导致列表长度不符
期望值合理性 :cross_mark: 疑似不完整,未涵盖当前 BMC 实际支持的新版本
实际结果正确性 :white_check_mark: 合理,符合 Redfish 多版本兼容设计
推荐处理方式 更新测试用例期望值,或调整比较逻辑为“子集匹配”模式

最终建议:修正测试用例中的期望结果,纳入 LogService.v1_8.1.json 引用,或优化比对逻辑以适应版本演进。

点击此处查看详细分析解答

关于“查询资源的schemas测试失败”问题的分析报告

问题概述

在测试环境 S920X20、BMC 版本为 25.12 的条件下,执行测试用例 Interface_Redfish_SchemaStore_006(查询单个Schema文件对应资源信息测试) 时出现失败。

主要报错信息显示:

  • 实际结果值 包含了 LogService.v1_8.1.json$ref 引用。
  • 期望结果值 未包含 LogService.v1_8.1.json 的引用。
  • 测试工具判定列表长度不一致,导致测试失败。

错误详情分析

实际返回值(Actual Result)

{
  "anyOf": [
    {"$ref": "http://redfish.dmtf.org/schemas/vl/odata.4.0.0.json#/definitions/idRef"},
    {"$ref": "http://redfish.dmtf.org/schemas/vl/LogService.v1_0.0.json#/definitions/LogService"},
    {"$ref": "http://redfish.dmtf.org/schemas/vl/LogService.v1_0.2.json#/definitions/LogService"},
    {"$ref": "http://redfish.dmtf.org/schemas/vl/LogService.v1_0.3.json#/definitions/LogService"},
    {"$ref": "http://redfish.dmtf.org/schemas/vl/LogService.v1_8.1.json#/definitions/LogService"}
  ],
  "deletable": false,
  "insertable": false,
  "updatable": true,
  "uris": [...]
}

期望值(Expected Result)

{
  "anyOf": [
    {"$ref": "http://redfish.dmtf.org/schemas/vl/odata.4.0.0.json#/definitions/idRef"},
    {"$ref": "http://redfish.dmtf.org/schemas/vl/LogService.v1_0.0.json#/definitions/LogService"},
    {"$ref": "http://redfish.dmtf.org/schemas/vl/LogService.v1_0.2.json#/definitions/LogService"},
    {"$ref": "http://redfish.dmtf.org/schemas/vl/LogService.v1_0.3.json#/definitions/LogService"}
  ]
}

差异点:实际结果中多出一个版本引用 LogService.v1_8.1.json


核心问题:期望结果是否准确?

根据现有信息分析:

:white_check_mark: 怀疑“期望结果值”定义不完整

  1. Redfish 架构支持多版本兼容性

    • Redfish 协议设计上允许对同一资源提供多个版本的 Schema 定义,通过 anyOf 字段实现版本兼容。
    • 在标准实践中,anyOf 列表中包含多个版本的 $ref合法且常见的行为。
  2. SchemaStore 的作用验证

    • SchemaStore 是 Redfish 中用于集中管理标准和自定义 JSON Schema 的组件,支持存储多个版本的资源定义。
    • 引入新版本如 LogService.v1_8.1.json 属于正常演进,无需移除旧版本以保持向后兼容。
  3. 文档与社区实践佐证

    • 参考知识库中的文档(如《schema语法及社区门禁规则》),Redfish 接口需确保所有映射资源均有对应的 Schema 文件,并且支持多版本共存。
    • 资源注册逻辑要求:只要存在正确映射,就应包含相应 Schema 的引用。
  4. BMC 版本 25.12 支持较新版本的可能性

    • 当前 BMC 版本为 25.12,属于较新的迭代版本,支持 LogService v1.8.1 是合理的。
    • 因此,返回 v1_8.1 的引用是符合系统实现预期的。

结论与建议

:white_check_mark: 结论:实际结果更可信,“期望结果值”可能已过时或不完整

  • 实际返回值中包含 LogService.v1_8.1.json 是合理的,体现了 Redfish 对资源多版本的支持。
  • 期望值缺少该版本引用,疑似来源于旧版测试基线或配置未同步更新。

:wrench: 建议操作

  1. 核实测试用例的“期望值”来源

    • 检查 Interface_Redfish_SchemaStore_006 测试脚本中的期望数据是否基于 旧版 BMC 或 Redfish 规范文档
    • 若期望值取自过时版本(如红鱼接口规范 v1.0.3),则应更新以匹配当前 BMC 支持的实际版本。
  2. 确认 LogService.v1_8.1.json 是否合法存在

    • 检查设备路径 /static_resource/redfish/v1/schemastore/en/ 是否存在 LogService.v1_8.1.json 文件。
    • 若文件存在且被正确引用,则说明该版本已正式启用。
  3. 审查 Schema 映射配置

    • 检查 Redfish 映射配置文件(如 mapping_config)是否将 /redfish/v1/Managers/(managerid)/LogServices/* 正确关联到 LogService.v1_8.1
    • 确认是否遵循了 [Rule 2-1] 资源完整性检查(映射资源必须有对应 Schema)。
  4. 更新测试基线或放宽匹配策略

    • 建议将测试逻辑从“严格相等”改为“期望值是实际值的子集”——即允许实际返回更多兼容版本。
    • 或明确列出所有支持版本,而非仅限定早期几个版本。
  5. 运行 Schema 检查工具验证
    执行以下命令进行门禁级检查:

    python3 interface_config/redfish/schema_check/schema_checker.py
    

    确保无语法错误或约束冲突。


总结

项目 状态
测试失败原因 实际结果比期望结果多了 LogService.v1_8.1.json 引用,导致列表长度不符
期望值合理性 :cross_mark: 疑似不完整,未涵盖当前 BMC 实际支持的新版本
实际结果正确性 :white_check_mark: 合理,符合 Redfish 多版本兼容设计
推荐处理方式 更新测试用例期望值,或调整比较逻辑为“子集匹配”模式

最终建议:修正测试用例中的期望结果,纳入 LogService.v1_8.1.json 引用,或优化比对逻辑以适应版本演进。

脚本查询LogService的Schema路径,校验结果时LogService的Schema版本写死了,现在新增了Schema版本,导致预期和实际不一致,用例脚本已修改,待同步社区。