
测试用例只有一个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 GracefulRestarttox -e e2ps23 -- -v boot_list:RF SYS GracefulRestart -v max_num_tests:3 extended/obmc_boot_test.robotboot_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