# GoTestCeph **Repository Path**: shuka03036/go-test-ceph ## Basic Information - **Project Name**: GoTestCeph - **Description**: go对于ceph-riscv的测试程序 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-22 - **Last Updated**: 2025-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Go语言Ceph测试程序 这是一个用Go语言编写的Ceph分布式存储系统测试程序,提供了完整的Ceph连接、数据操作和测试功能。 ## 功能特性 - ✅ Ceph集群连接管理 - ✅ 对象存储操作(上传、下载、删除) - ✅ RBD块设备操作测试 - ✅ 配置文件管理 - ✅ 测试数据生成和管理 - ✅ 单元测试和基准测试 - ✅ 环境变量配置支持 ## 项目结构 ``` go-test-ceph/ ├── main.go # 主程序文件 ├── config.go # 配置管理模块 ├── data.go # 数据操作模块 ├── main_test.go # 测试文件 ├── go.mod # Go模块配置 └── README.md # 项目说明 ``` ## 快速开始 ### 1. 安装依赖 ```bash # 下载项目依赖 go mod tidy # 或者直接安装依赖 go get github.com/ceph/go-ceph@v0.25.0 go get github.com/stretchr/testify@v1.8.4 go get github.com/sirupsen/logrus@v1.9.3 ``` ### 2. 环境配置 程序支持两种运行模式: 1. **模拟环境 (mock)** - 默认模式,无需真实Ceph环境 2. **生产环境 (prod)** - 连接真实Ceph集群 #### 使用配置文件 (推荐) 编辑 `config.yaml` 文件来配置环境参数: ```yaml # 运行模式: mock(模拟环境) 或 prod(生产环境) mode: mock # 模拟环境配置 mock: cluster_name: "ceph" user_name: "client.admin" config_file: "/etc/ceph/ceph.conf" keyring_file: "/etc/ceph/ceph.client.admin.keyring" pool_name: "rbd" # 生产环境配置 (需要根据实际情况修改) prod: cluster_name: "ceph" user_name: "client.admin" config_file: "/etc/ceph/ceph.conf" keyring_file: "/etc/ceph/ceph.client.admin.keyring" pool_name: "rbd" mon_hosts: "192.168.1.100:6789,192.168.1.101:6789,192.168.1.102:6789" ``` #### 使用环境变量 也可以通过环境变量快速配置: ```bash export CEPH_CONFIG_FILE="/etc/ceph/ceph.conf" export CEPH_POOL_NAME="rbd" export CEPH_USER_NAME="client.admin" export CEPH_CLUSTER_NAME="ceph" ``` ### 3. 运行测试程序 #### 编译并运行 ```bash # 编译程序 go build -o ceph-test . # 运行测试(使用当前配置模式) ./ceph-test # 切换到生产环境运行 ./ceph-test prod # 切换到模拟环境运行 ./ceph-test mock # 显示帮助信息 ./ceph-test help ``` #### 直接运行 ```bash # 使用默认模式运行 go run . # 使用生产环境运行 go run . prod # 使用模拟环境运行 go run . mock ``` ### 4. 测试正式环境 要测试正式环境,需要: 1. **确保Ceph集群可用** - 确认Ceph集群正常运行 - 获取监控节点地址和端口 - 确保有访问权限和密钥文件 2. **配置生产环境参数** - 编辑 `config.yaml` 文件 - 将 `mode` 改为 `prod` - 修改 `prod` 部分的连接参数 - 设置正确的 `mon_hosts` 地址 3. **安装Ceph开发库** ```bash # Ubuntu/Debian sudo apt-get install librados-dev librbd-dev # CentOS/RHEL sudo yum install librados2-devel librbd1-devel ``` 4. **运行生产环境测试** ```bash # 方法一:使用配置文件 ./ceph-test # 方法二:使用命令行参数 ./ceph-test prod # 方法三:使用环境变量 export CEPH_TEST_MODE=prod ./ceph-test ``` ### 5. 运行测试 ```bash # 运行单元测试(不依赖真实Ceph环境) go test -v -run TestMockCephOperations # 运行所有测试(需要真实Ceph环境) go test -v # 运行基准测试 go test -bench=. ``` ## 详细使用说明 ### 配置文件格式 程序支持JSON格式的配置文件,示例配置: ```json { "ceph_configs": [ { "config_file": "/etc/ceph/ceph.conf", "pool_name": "rbd", "user_name": "client.admin", "cluster_name": "ceph" } ], "log_level": "info", "test_timeout": 30 } ``` ### 环境变量支持 程序支持以下环境变量: - `CEPH_CONFIG_FILE`: Ceph配置文件路径 - `CEPH_POOL_NAME`: 存储池名称 - `CEPH_USER_NAME`: Ceph用户名 - `CEPH_CLUSTER_NAME`: 集群名称 - `CEPH_TEST_CONFIG`: 测试配置文件路径 - `CEPH_TEST_LOG_LEVEL`: 日志级别 - `CEPH_TEST_TIMEOUT`: 测试超时时间 ### 测试数据管理 程序可以生成和管理测试数据: ```bash # 生成测试数据文件 go run . -generate-data # 运行数据测试套件 go run . -test-data ``` ## API参考 ### CephClient 主要方法 ```go // 创建Ceph客户端 client, err := NewCephClient(config) // 写入对象 err = client.WriteObject("object-name", data) // 读取对象 data, err := client.ReadObject("object-name") // 删除对象 err = client.DeleteObject("object-name") // 列出对象 objects, err := client.ListObjects() // 获取存储池统计 stats, err := client.GetPoolStats() // 测试基本操作 err = client.TestBasicOperations() // 测试RBD操作 err = client.TestRBDOperations() ``` ### 数据操作函数 ```go // 生成测试数据 testData := GenerateTestData(10, 1024) // 10个1KB文件 // 保存测试数据到文件 err := SaveTestDataToFile(testData, "test-data.json") // 上传测试数据到Ceph err := UploadTestDataToCeph(client, testData) // 下载测试数据 err := DownloadTestDataFromCeph(client, testData) // 清理测试数据 err := CleanupTestDataFromCeph(client, testData) ``` ## 测试说明 ### 单元测试 项目包含完整的单元测试,包括: - 配置验证测试 - 错误处理测试 - 数据验证测试 - 模拟操作测试 ### 集成测试 集成测试需要真实的Ceph环境,测试内容包括: - Ceph连接测试 - 对象操作测试 - RBD操作测试 - 性能基准测试 ### 跳过环境依赖测试 如果缺少Ceph环境,可以使用 `t.Skip()` 跳过相关测试: ```bash go test -v -skip="需要真实的Ceph环境" ``` ## 故障排除 ### 常见问题 1. **连接失败**:检查Ceph配置文件路径和权限 2. **认证失败**:验证Ceph用户权限 3. **存储池不存在**:确保指定的存储池存在 4. **权限不足**:检查Ceph用户的操作权限 ### 调试模式 启用调试日志: ```bash export CEPH_TEST_LOG_LEVEL=debug go run . ``` ### 错误处理 程序包含完善的错误处理机制,所有操作都会返回详细的错误信息。 ## 开发指南 ### 添加新功能 1. 在相应的模块文件中添加新函数 2. 更新 `main.go` 中的主程序逻辑 3. 添加对应的单元测试 4. 更新README文档 ### 代码规范 - 使用Go标准命名规范 - 添加必要的注释和文档 - 包含错误处理 - 编写单元测试 ## 许可证 本项目采用MIT许可证。 ## 贡献 欢迎提交Issue和Pull Request来改进这个项目。 ## 联系方式 如有问题,请通过以下方式联系: - 提交GitHub Issue - 发送邮件到项目维护者 --- **注意**: 使用本程序前请确保您有合法的Ceph集群访问权限,并遵守相关的使用规定。