news 2026/9/4 6:42:30

extended/obmc_boot_test.robot

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
extended/obmc_boot_test.robot

测试用例只有一个General Boot Testing,需要传递具体的测试参数进行测试。用例不涉及具体的测试场景。

设计理念

采用状态机驱动的设计模式:

当前状态 → [执行启动操作] → 目标状态 → [验证] → 循环/结束

每个启动操作在boot_table.json中都有明确定义:

  • start:执行该操作前机器必须满足的状态(前置条件)

  • end:执行该操作后期望达到的状态(后置验证)

两种执行模式

模式参数行为
列表模式boot_list从列表中随机选择一个符合条件的启动操作执行
栈模式boot_stack按栈顺序依次弹出执行(后进先出)

General Boot Testing

┌────────────┴────────────┐
│ │
boot_stack boot_list
│ │
while stack > 0 for max_num_tests
│ │
pop 一个 每轮重新选择
│ │
指定顺序执行 根据当前状态过滤候选

random.choice

执行一个 Boot

测试框架会检查当前机器状态,选择start条件匹配的操作执行

如果两者都为空,测试会直接失败并报错

测架构试架构

obmc_boot_test.robot (测试用例)

obmc_boot_test_resource.robot (资源文件)

obmc_boot_test.py (Python 核心逻辑)

boot_data.py (启动表管理)

data/boot_table.json (启动操作定义)

可选参数

参数默认值说明
stack_modenormalnormal=顺序执行,skip=跳过不操作
max_num_tests0最大测试次数,0 表示无限循环
power_on_timeout14 mins开机超时时间
power_off_timeout2 mins关机超时时间
boot_fail_threshold0失败阈值,超过则返回非零
boot_table_pathdata/boot_table.json自定义启动表路径
quiet01=减少日志输出
debug01=开启调试输出

测试示例

tox -e e2ps23 -- -v "boot_stack:RF SYS GracefulRestart" extended/obmc_boot_test.robot

如果服务器初始状态是上电状态,就会直接软关机,如果是下电状态,会先上电再执行RF SYS GracefulRestart

tox -e e2ps23 -- -v "boot_list:RF SYS GracefulRestart" -v "max_num_tests:3" extended/obmc_boot_test.robot

boot_list决定候选 Boot 操作,max_num_tests决定最多执行多少轮;每一轮是否真正执行指定操作,还取决于当前系统状态是否满足该操作的前置条件。若不满足,框架可能先使用默认 Boot 操作完成状态转换。

所以上述命令有可能执行2次或者3次重启,取决于初始状态。如果max_num_tests是1,就可能执行0-1次,因为初始状态如果不满足会先执行Redfish Power On 消耗测试次数。

tox -e e2ps23 -- -v "boot_list:Redfish Power Off:Redfish Power On" -v "max_num_tests:30" extended/obmc_boot_test.robot

关键字扩展

例如特定的BMC 平台,有一个 OpenBMC upstream 没有的操作

BMC watchdog reset

就可以实现对应的关键字,然后加入到boot_table.json中,这样framework 就能够把它当成一个标准 boot type

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 6:42:12

51单片机四合一环境监测系统:从原理图到PCB的工业级实践

简介:本资源是一套面向嵌入式初学者与课程设计学生的51单片机空气质量检测系统完整开发资料,聚焦传感器数据采集、实时监测与硬件实现全流程,解决环境参数感知类项目从原理到落地的核心难点。压缩包共49个文件,总计5.5MB&#xff…

作者头像 李华
网站建设 2026/9/4 6:41:15

Windows平台ImageJ高效部署与图像分析实战指南

简介:本资源为ImageJ官方Windows平台独立安装包,面向生物医学、材料科学及天文学等领域的科研人员与图像分析初学者,解决跨平台图像处理工具部署难、Java环境配置复杂等问题。压缩包共430个文件,含92个宏脚本(.ijm&…

作者头像 李华
网站建设 2026/9/4 6:40:47

STM32水质监测系统:从ADC采样到工业级校准的完整实现

简介:本资源是一套完整的基于STM32F103的水质监测系统课程设计实现方案,面向电子信息、自动化及物联网方向的本科生与嵌入式初学者,解决多参数水质实时采集、显示与越限报警等典型嵌入式应用开发问题。压缩包共172个文件,933KB&am…

作者头像 李华
网站建设 2026/9/4 6:40:35

嵌入式学习笔记-菱形继承(Diamond Problem)的深度解析

问题本质 当派生类通过多条路径继承同一个基类时,会导致: 数据冗余:派生类中包含多份基类的成员(浪费内存)。二义性:访问基类成员时,编译器无法确定使用哪一条继承路径的成员。代码实现&#xf…

作者头像 李华
网站建设 2026/9/4 6:40:21

原生前端三件套构建小区物业管理系统:从CRUD到localStorage数据持久化

简介:这是一套面向前端初学者与物业信息化实践者的HTML5小区物业管理系统设计源码,聚焦于纯前端实现的轻量级服务平台,解决传统小区信息分散、服务响应慢、居民交互弱等管理痛点,适用于课程设计、毕业设计及小型社区数字化改造场景…

作者头像 李华
网站建设 2026/9/4 6:38:20

Re:Linux 系统篇(十六):进程篇(五):O (1) 调度算法深度解析 —— 优先级数组、位图优化与活跃 / 过期双队列

观众老爷们大家好 这里是邪修KING的独家频道本文属于系列Linux系统篇 ——操作指令一起学Linux的小伙伴可订阅专栏: Linux系统篇 上一篇我们讲透了进程上下文切换的完整流程。切换谁、选哪个进程上 CPU,这件事由调度器决定。 早期 Linux 调度器很简单&am…

作者头像 李华