Ceph项目Windows平台测试指南
前言
Ceph作为一款开源的分布式存储系统,从Pacific版本开始正式支持Windows平台的原生客户端工具和库。这意味着Windows节点可以直接使用Ceph存储,而无需通过iSCSI网关或SMB共享等中间层。为确保Windows平台的稳定性和兼容性,Ceph社区投入了大量精力进行测试工作。
Windows CI测试流程详解
测试架构
Windows CI测试采用双虚拟机架构:
- Linux构建机:负责编译Linux端的Ceph服务端二进制文件,并交叉编译Windows客户端二进制文件
- Windows测试机:运行编译好的Windows客户端测试套件
测试执行流程
- 构建阶段:在Linux VM中完成服务端和客户端的交叉编译
- 集群部署:重建Linux VM并启动Ceph vstart测试集群
- 测试执行:启动Windows VM并运行测试套件
测试框架采用PowerShell编写,具有以下特点:
- 支持测试并行执行
- 自动聚合测试结果
- 能够隔离或跳过已知不稳定的测试用例
测试结果分析
结果查看方式
测试结果通过多种形式呈现:
- 控制台输出:显示编译错误和失败的测试名称
- 构建产物:包含详细的日志和测试报告
构建产物结构
├── client/ # Windows客户端相关日志
│ ├── eventlog/ # Windows系统事件日志
│ ├── logs/ # Ceph客户端日志
│ └── *.conf # Ceph配置文件
├── cluster/ # Linux服务端相关日志
│ ├── ceph_logs/ # Ceph服务日志
│ └── journal # 集群日志
└── test_results/ # 测试结果
├── out/ # 原始测试输出(按可执行文件分组)
├── test_results.html # HTML格式聚合报告
└── test_results.txt # 纯文本格式聚合报告
测试报告解读
测试结果采用subunit格式存储,便于处理大量并行测试。报告末尾会显示具体的错误信息,例如:
{0} ceph_test_dokan.DokanTests.test_mount [9.203000s] ... FAILED
Captured details:
~~~~~~~~~~~~~~~~~
b'/home/ubuntu/ceph/src/test/dokan/dokan.cc:136'
b'Expected equality of these values:'
b' wait_for_mount(mountpoint)'
b' Which is: -138'
b' 0'
HTML报告会按测试套件(测试二进制文件)分组显示结果,便于快速定位问题。
常见问题排查
1. 仅Windows CI失败的可能原因
Windows CI与其他测试环境有以下关键区别:
- 测试范围:Windows CI专注于客户端组件测试,会运行大量librados、librbd和libcephfs集成测试
- 编译配置:使用不同的工具链(mingw-llvm)和依赖项版本
- 构建模式:默认使用Release模式而非Debug模式
这些测试往往能发现影响所有平台的回归问题,而不仅仅是Windows特有的问题。
2. Windows CI为何设为必选
将Windows CI设为必选测试的主要考虑:
- 质量保证:早期作为可选测试时,经常出现回归问题
- 成熟度标志:Windows支持已达到生产可用级别
- 效率提升:相比等待完整Teuthology结果,能更快发现问题
故障排查技巧
当测试失败时,建议按以下步骤排查:
- 检查服务状态:测试前后会打印ceph状态,可帮助识别崩溃的服务
- 分析日志:
- Windows应用事件日志(记录进程崩溃信息)
- 客户端和服务端日志
- 注意超时:测试超时通常表明进程崩溃
结语
Windows CI作为Ceph质量保障体系的重要组成部分,不仅确保了Windows平台的稳定性,也为整个项目的代码质量提供了额外保障。开发者应当重视Windows CI的测试结果,及时修复发现的问题,共同维护Ceph的跨平台能力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考