obmm-test:基于 OBMM 的分布式测试框架项目

可用于简化多主机 OBMM 测试执行,提升可复现性并减少对临时测试编排的依赖。提供测试编排器、主机导体及框架库,支持测试声明、跨主机协调与结果报告,兼容直接链接和运行时解析模式。【此简介由AI生成】

分支2Tags0
文件最后提交记录最后更新时间
2 个月前
5 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
5 个月前
5 个月前
5 个月前
3 个月前
2 个月前
2 个月前
5 个月前
2 个月前

OBMM 测试框架

OBMM 测试框架是一个用于 OBMM(基于所有权的内存管理)的分布式测试框架。其目的是简化多主机 OBMM 测试的执行流程,提高测试的可重复性,并减少对特定测试编排的依赖。

本项目采用 Mulan PSL v2 许可证。详见 LICENSE 文件。

主要功能

  • obmm-test-orchestrator:跨一台或多台主机协调测试执行
  • obmm-test-conductor:在每台主机上运行,负责派生本地参与者进程并报告结果
  • libobmm_test.a:框架运行时库(包含分布式测试管道和可选的运行时加载器),供二进制文件链接使用
  • libobmm_utils.a:可复用的测试编写工具辅助库(包含数据模式、数据路径设置、NUMA 布局、参数格式化、sysfs/proc 辅助工具等);测试用例通过 obmm_test_cases 间接链接此库

快速开始

前提条件:

  • Linux 系统
  • GCC 9 及以上版本
  • CMake 3.10 及以上版本
  • 兼容 POSIX 的运行环境

构建仓库:

scripts/build.sh

这是针对常规测试和文档变更的默认本地仓库验证步骤。主要制品暂存于 build/output/ 目录下。

对于框架变更,当本地机器能够创建回环套接字时,请运行本地仓库冒烟检查:

scripts/local_smoke.sh

此烟雾测试辅助工具会在同一台机器上启动两个本地 conductor 和一个本地 orchestrator,并运行小型可移植测试集。它主要用于框架维护者的验证工作,而非作为普通测试编写者代码变更的默认检查工具。

构建与运行说明

部分测试依赖于可选的运行时库,例如 libobmm 或 mami4ubmem。

  • 直接链接模式:基于实际的头文件和库进行构建
  • 兼容模式:基于框架自带的兼容性声明进行构建,并在运行时解析实际库

对于未安装完整运行时栈的机器,兼容模式是常规开发的默认路径。

有关详细的构建标志、运行时环境变量、配置格式和执行流程,请参见:

  • doc/test-writers/usage.md
  • doc/test-writers/runtime-dependencies.md

执行模型

  • 一个 orchestrator 协调测试运行
  • 每个主机上运行一个 conductor
  • 每个测试用例声明其参与者和通道
  • conductor 为分配给其主机的参与者创建进程

以上是高层级的流程模型。详细的协议和实现设计说明位于 doc/framework-maintainers/ 目录下。

文档

根据您的具体工作,可从以下文档开始阅读:

  • doc/style-guide.md:共享的源代码格式和文件结构约定
  • doc/test-writers/usage.md:分布式测试的构建、配置和运行方法
  • doc/test-writers/api.md:测试代码内部使用的公共 API
  • doc/test-writers/runtime-dependencies.md:可选的运行时包装器和兼容性行为
  • doc/test-writers/guidelines.md:测试编写约定
  • doc/README.md:文档索引

面向维护者的设计说明位于 doc/framework-maintainers/ 目录下。

仓库中还包含 .agents/skills/obmm-test-writer/SKILL.md 路径下的可选可复用测试编写指南。它旨在作为测试编写者任务的仓库本地工作流指导,而非运行时或构建系统的必需部分。

仓库布局

  • include/framework/:供测试编写者使用的公共框架 API
  • include/compat/:用于可选运行时依赖项的兼容性头文件
  • include/utils/:可复用的公共辅助 API
  • contract/:自包含的 UB 内存契约子包(ub/ubmem.h、ub/ubmem_spec_helpers.h、libubmem_contract),与 mami4ubmem 和外部工具共享;消费者通过 contract/include/ 包含它
  • src/framework/:核心框架库
  • src/conductor/:conductor 实现
  • src/orchestrator/:orchestrator 实现
  • src/loaders/:可选的运行时加载支持
  • tests/runtime_smoke/:可移植的冒烟测试
  • tests/framework_tests/:面向维护者的框架回归测试
  • tests/obmm/:OBMM 特定测试

代理说明

仓库特定的代理指南位于 AGENTS.md 中。 开发者可在 AGENTS.local.md 中保留未跟踪的本地代理说明。

项目介绍

可用于简化多主机 OBMM 测试执行,提升可复现性并减少对临时测试编排的依赖。提供测试编排器、主机导体及框架库,支持测试声明、跨主机协调与结果报告,兼容直接链接和运行时解析模式。【此简介由AI生成】

定制我的领域