tasks_service

发布时间:2026/8/5 8:55:12
tasks_service 该robot脚本中有三个用例依赖于dump功能需要检查BMC固件编译时是否开启该选项redfish-dump-logenabled测试环境准备文件头*** Settings ***Documentation验证 OpenBMC Redfish 任务服务TaskService和任务集合Tasks的功能。Resourcelib/resource.robot通用变量和关键字。lib/bmc_redfish_resource.robotRedfish 核心操作GET、POST、DELETE、等待任务完成等。lib/dump_utils.robot专门用于生成 BMC 转储Dump这是触发异步任务的主要手段。lib/openbmc_ffdc.robot故障现场数据收集。Suite Setup执行Suite Setup Execution登录 Redfish加载任务服务的配置数据。Suite Teardown执行Suite Teardown Execution登出关闭连接。Test TeardownFFDC On Test Case Fail失败时收集日志。Test TagsTasks_Service便于筛选。变量*** Variables ***${TIME_REGEXP_PATTERN}正则表达式用于从时间戳中去除时区偏移如00:00便于时间比较。逐个测试用例详解1.Verify Task Service Attributes手工测试角度测试人员需要验证/redfish/v1/TaskService这个服务根节点的属性是否正确。具体检查CompletedTaskOverWritePolicy任务完成后的覆盖策略是否在允许的列表中如Oldest、Newest。ServiceEnabled是否为True任务服务已启用。Status.State是否为Enabled服务状态正常。BMC 系统时间与任务服务返回的DateTime是否一致误差小于 5 秒。自动化实现角度Redfish.Get Properties获取整个 TaskService 资源。使用Should Be True检查CompletedTaskOverWritePolicy是否在 JSON 配置文件中预定义的允许值列表中。用Should Be Equal检查ServiceEnabled和Status.State。时间比较调用Get Current Date From BMC通过 SSH 执行date命令获取 BMC 当前时间再通过正则提取DateTime中的时间部分去除时区偏移计算两者差值断言小于 5 秒。2.Test Generated Task Instance Validity And Task State手工测试角度测试人员需要触发一个会产生异步任务的操作如收集 BMC 诊断数据然后验证这个任务实例的各项属性是否正确以及任务从“运行中”到“完成”的整个生命周期是否正常。自动化实现角度这是本套件最复杂的用例步骤拆解如下触发任务调用Generate Task Instance关键字内部通过Create BMC User Dump来自dump_utils.robot向 BMC 发起一个 POST 请求触发一个异步任务。该关键字返回task_id和原始响应对象。验证监控端点任务进行中访问/redfish/v1/TaskService/Tasks/${task_id}/Monitor预期返回HTTP_ACCEPTED表示任务还在执行可以继续轮询。验证任务创建时间再次获取 BMC 当前时间Get Current Date From BMC。获取任务详情提取StartTime与 BMC 当前时间比较差值应小于 10 秒确保任务及时启动。验证任务负载Payload检查Payload.HttpOperation是否为POST与触发请求的方法一致。检查Payload.TargetUri是否与触发请求的路径一致确保任务记录的是正确的目标。等待任务完成调用Wait For Task Completion来自bmc_redfish_resource.robot该关键字会轮询任务状态直到任务达到“完成”或“异常”等终态。验证任务完成后的行为再次访问监控端点/Monitor预期返回HTTP_NOT_FOUND任务结束后监控端点被移除。检查EndTime是否大于StartTime确保任务确实经历了时间流逝。3.Verify Task Persistency Post BMC Reboot手工测试角度测试人员需要验证 BMC 重启后已经存在的任务记录即使已完成是否仍然保留在任务集合中不会丢失。自动化实现角度先调用Verify Generate Task Instance Completion触发并等待一个任务完成确保至少有一个任务记录。获取当前任务集合的总数Redfish.Get Attribute ${REDFISH_TASKS_URI} Membersodata.count。执行 BMC 热重启Redfish BMC Reset Operation reset_typeForceRestart该关键字会等待 BMC 重启完成并重新建立连接。重启后再次获取任务集合总数断言两者相等。4.Verify Task Service Unsupported Methods5.Verify Unsupported Methods For Tasks URI On Task Service手工测试角度测试人员需要对/redfish/v1/TaskService和/redfish/v1/TaskService/Tasks这两个 URI分别尝试使用PATCH、PUT、DELETE等不应支持的方法验证服务器是否正确返回405 Method Not Allowed。自动化实现角度两个用例都调用了公共关键字Verify Supported And Unsupported Methods来自bmc_redfish_resource.robot传入不同的 URI。该关键字内部会对 URI 发送 GET、POST、PATCH、PUT、DELETE 等方法。根据 Redfish 规范检查每个方法返回的状态码是否符合预期例如 GET 返回 200PUT/DELETE 返回 405。6.Verify Retrieving Deleted Tasks Instance手工测试角度测试人员需要删除一个任务实例然后尝试再次获取它验证服务器返回404 Not Found。自动化实现角度调用Generate Task Instance创建一个任务。用Redfish.Get获取该任务确认存在返回HTTP_OK。调用Redfish.Delete删除该任务允许200或204。再次Redfish.Get指定valid_status_codes[${HTTP_NOT_FOUND}]验证已被删除。关键关键字解析Generate Task Instance作用触发一个会产生任务的操作并返回任务 ID 和响应对象。参数task_type目前仅支持bmc_dump后续可扩展其他类型如固件更新。实现内部调用Create BMC User Dump来自dump_utils.robot该关键字会向/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData发送 POST 请求触发 BMC 诊断数据收集这是一个异步任务。然后从响应头Location中提取任务 ID。Load Task Service Properties Data作用从 JSON 文件task_state.json中加载配置数据设置套件级变量。加载内容allowed_completed_task_overwrite_policyCompletedTaskOverWritePolicy的允许值如[Oldest, Newest]。allowed_task_stateTaskState的允许值如[New, Running, Completed, Exception]。allowed_task_completion_state表示任务“已完成”的状态列表如[Completed, Exception]。valid_status任务服务的标准状态结构{State: Enabled, Health: OK}。优点数据驱动无需修改代码即可适配不同 BMC 版本的行为差异。Get Current Date From BMC作用通过 SSH 在 BMC 上执行date命令获取当前系统时间并转换为统一格式。实现细节执行date返回类似Mon Aug 3 15:30:45 UTC 2026的字符串。分割字符串去掉星期和时区重组为Aug 3 15:30:45 2026。用Convert Date转换为%m/%d/%Y %H:%M:%S格式便于后续与 Redfish 时间戳比较。

相关新闻