# 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_UPDATE扩展测试用例 ### TC001-UPDATE-004: $inc操作符验证 **描述**: 验证数值递增操作符功能 **前置条件**: - 文档存在且包含数值字段 **步骤**: 1. 构造包含$inc操作符的更新请求 2. 发送请求并检查存储层处理 3. 验证字段值是否正确递增 **预期结果**: - 字段值正确递增 - 返回成功状态码 ### TC001-UPDATE-005: 权限不足处理 **描述**: 验证无更新权限时的错误处理 **步骤**: 1. 使用无权限账户发送更新请求 2. 检查服务器响应 **预期结果**: - 返回权限拒绝错误 - 服务器保持正常运行 ## OP_DELETE测试用例 ### TC001-DELETE-001: 单文档删除 **描述**: 验证单个文档删除 **前置条件**: - 存在指定待删除文档 **步骤**: 1. 构造OP_DELETE请求 2. 发送请求并检查存储层DeleteFunc调用 3. 验证文档是否被删除 **预期结果**: - DeleteFunc被正确调用 - 文档被成功删除 - 返回删除计数1 ### TC001-DELETE-002: 多文档删除 **描述**: 验证批量删除操作 **前置条件**: - 存在多个匹配删除条件的文档 **步骤**: 1. 构造包含批量删除标志的请求 2. 发送请求 3. 验证所有匹配文档是否被删除 **预期结果**: - 所有匹配文档被删除 - 返回正确的删除计数 ## OP_DELETE扩展测试用例 ### TC001-DELETE-003: 删除不存在的文档 **描述**: 验证删除不存在文档的处理 **步骤**: 1. 构造针对不存在文档的删除请求 2. 发送请求 3. 检查存储层调用情况 **预期结果**: - DeleteFunc被调用 - 返回删除计数0 ### TC001-DELETE-004: 权限不足处理 **描述**: 验证无删除权限时的错误处理 **步骤**: 1. 使用无权限账户发送删除请求 2. 检查服务器响应 **预期结果**: - 返回权限拒绝错误 - 文档未被删除 ## 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_COMMAND扩展测试用例 ### TC001-COMMAND-003: dropCollection命令 **描述**: 验证集合删除命令 **前置条件**: - 目标集合存在 **步骤**: 1. 构造dropCollection命令请求 2. 发送请求 3. 检查存储层DropCollFunc调用 **预期结果**: - DropCollFunc被正确调用 - 返回成功状态码 ## OP_GET_MORE测试用例 ### TC001-GETMORE-001: 基本分页获取 **描述**: 验证游标分页功能 **前置条件**: - 存在大量文档需要分批获取 **步骤**: 1. 构造初始查询请求获取游标ID 2. 使用OP_GET_MORE请求获取后续数据 3. 验证返回数据是否完整 **预期结果**: - 正确返回第一批数据 - 后续请求通过游标获取剩余数据 ### TC001-GETMORE-002: 游标超时清理 **描述**: 验证游标超时机制 **步骤**: 1. 创建游标后延迟一段时间 2. 尝试使用过期游标获取数据 **预期结果**: - 返回游标不存在或已超时错误 ## OP_GET_MORE扩展测试用例 ### TC001-GETMORE-003: 无效游标ID处理 **描述**: 验证无效游标ID的错误处理 **步骤**: 1. 构造使用无效游标ID的GET_MORE请求 2. 发送请求 **预期结果**: - 返回游标不存在错误 - 服务器保持正常运行