This commit is contained in:
kingecg 2025-06-07 00:40:03 +08:00
parent bf29d7f3d8
commit 1741134819
1 changed files with 119 additions and 0 deletions

View File

@ -0,0 +1,119 @@
# MongoDB协议操作码测试用例
## 共用前置条件
1. 服务器已启动并监听本地端口
2. 测试数据库和集合已初始化
3. MockStorage已配置适当的响应行为
## OP_UPDATE测试用例
### TC001-UPDATE-001: 基本文档更新
**描述**: 验证基本的$set更新操作
**前置条件**:
- 数据库testdb存在
- 集合testcoll存在
- 文档{name:"test"}存在
**步骤**:
1. 构造包含OP_UPDATE操作的BSON请求
2. 发送更新操作包含$set修改器
3. 检查存储层UpdateFunc是否被正确调用
4. 验证响应格式是否符合MongoDB协议
**预期结果**:
- UpdateFunc被调用且参数正确
- 返回成功状态码
- 更新后的文档字段值正确
### TC001-UPDATE-002: 多文档更新
**描述**: 验证多文档更新选项
**前置条件**:
- 存在多个匹配查询条件的文档
**步骤**:
1. 构造包含UBF_MULTI_UPDATE标志的更新请求
2. 发送请求并检查存储层处理
3. 验证所有匹配文档是否都被更新
**预期结果**:
- 所有匹配文档都被正确更新
- 返回正确的更新计数
### TC001-UPDATE-003: 无效BSON格式处理
**描述**: 验证对无效BSON格式的错误处理
**步骤**:
1. 构造包含损坏BSON数据的更新请求
2. 发送请求
3. 检查服务器是否正常处理错误
**预期结果**:
- 返回格式错误响应
- 服务器不崩溃
## OP_DELETE测试用例
### TC001-DELETE-001: 单文档删除
**描述**: 验证单个文档删除
**前置条件**:
- 存在指定待删除文档
**步骤**:
1. 构造OP_DELETE请求
2. 发送请求并检查存储层DeleteFunc调用
3. 验证文档是否被删除
**预期结果**:
- DeleteFunc被正确调用
- 文档被成功删除
- 返回删除计数1
### TC001-DELETE-002: 多文档删除
**描述**: 验证批量删除操作
**前置条件**:
- 存在多个匹配删除条件的文档
**步骤**:
1. 构造包含批量删除标志的请求
2. 发送请求
3. 验证所有匹配文档是否被删除
**预期结果**:
- 所有匹配文档被删除
- 返回正确的删除计数
## OP_COMMAND测试用例
### TC001-COMMAND-001: isMaster命令执行
**描述**: 验证isMaster命令处理
**步骤**:
1. 构造OP_COMMAND请求命令为isMaster
2. 发送请求
3. 检查响应是否包含必要的实例信息
**预期结果**:
- 返回包含ismaster:true的响应
- 包含版本号、最大BSON大小等元数据
### TC001-COMMAND-002: createCollection命令
**描述**: 验证集合创建命令
**前置条件**:
- 目标集合不存在
**步骤**:
1. 构造createCollection命令请求
2. 发送请求
3. 检查存储层CreateCollFunc调用
**预期结果**:
- CreateCollFunc被正确调用
- 返回成功状态码
## OP_GET_MORE测试用例
### TC001-GETMORE-001: 基本分页获取
**描述**: 验证游标分页功能
**前置条件**:
- 存在大量文档需要分批获取
**步骤**:
1. 构造初始查询请求获取游标ID
2. 使用OP_GET_MORE请求获取后续数据
3. 验证返回数据是否完整
**预期结果**:
- 正确返回第一批数据
- 后续请求通过游标获取剩余数据
### TC001-GETMORE-002: 游标超时清理
**描述**: 验证游标超时机制
**步骤**:
1. 创建游标后延迟一段时间
2. 尝试使用过期游标获取数据
**预期结果**:
- 返回游标不存在或已超时错误