异常测试

编号 测试内容 Given When Then 备注 是否执行
1 chunk的metapage数据损坏,然后启动DataStore chunk存在 1.通过LocalFileSystem修改metapage中的某个字节2.重新启动DataStore 重启失败 单元测试集成测试
2 运行过程中,chunk的metapage损坏 chunk存在程序运行中 1.通过LocalFileSystem修改metapage中的某个字节 1.WriteChunk写入成功2.DataStore重启成功 单元测试集成测试
3 chunk快照的metapage数据损坏,然后启动DataStore chunk存在快照存在 1.通过LocalFileSystem修改chunk快照metapage中的某个字节2.重新启动DataStore 重启失败 单元测试集成测试
4 运行过程中,chunk快照的metapage损坏 chunk存在快照存在程序运行中 1.通过LocalFileSystem修改快照metapage中的某个字节2.通过WriteChunk触发快照metapage的更新3.重新启动DataStore 1.WriteChunk写入成功2.DataStore重启成功 单元测试集成测试
5 WriteChunk,数据写了一半时,重启/崩溃 chunk存在快照不存在 1.构造要写入的数据,将部分数据通过外围写入chunk2.构造WriteChunk请求,请求的sn==chunk.sn,sn>chunk.correctedsn,3.提交WriteChunk操作 1.WriteChunk成功2.读取写入区域,与实际写入数据相等 单元测试集成测试
6 WriteChunk,更新metapage后,写数据前崩溃,重启/崩溃 chunk存在快照不存在 1.构造WriteChunk请求,请求的sn>chunk.sn,sn==chunk.correctedsn2.通过外围更新chunk的metapage,将chunk.sn改为sn2.提交WriteChunk请求 1.WriteChunk成功2.读取写入区域,与实际写入数据相同3.chunkinfo.sn==sn,其他状态不变 单元测试集成测试
7 WriteChunk,创建快照后,更新metapage前重启/崩溃 chunk存在快照不存在 1.构造WriteChunk请求,请求的sn>chunk.snsn>chunk.correctedsn2.通过外围生成chunk的快照文件,快照版本为chunk.sn3.提交WriteChunk请求 1.WriteChunk成功2.写入区域cow到快照文件3.读取chunk和快照文件与预期一致4.chunk.sn更新为sn,其他状态不变 单元测试集成测试
8 WriteChunk,创建快照并更新metapage后,cow前重启/崩溃 chunk存在快照不存在 1.构造WriteChunk请求,请求的sn>chunk.snsn>chunk.correctedsn2.通过外围生成chunk的快照文件,快照版本为chunk.sn;通过外围更新chunk的metapage,将chunk.sn改为sn3.提交WriteChunk请求 1.WriteChunk成功2.写入区域cow到快照文件3.读取chunk和快照文件与预期一致4.chunk.sn更新为sn,其他状态不变 单元测试集成测试
9 WriteChunk,cow拷贝数据时,更新快照metapage前重启/崩溃 chunk存在快照存在 1.构造WriteChunk请求,请求的sn==chunk.snsn>chunk.correctedsn2.通过外围写数据到快照文件;3.提交WriteChunk请求 1.WriteChunk成功2.数据再次cow到快照文件3.读取chunk和快照文件数据与预期一致4.chunk其他状态不变 单元测试集成测试
10 WriteChunk,cow成功,写数据到chunk时重启/崩溃 chunk存在快照存在 1.构造WriteChunk请求,请求的sn==chunk.snsn>chunk.correctedsn2.通过外围写数据到快照文件及快照的metapage,并将部分数据写入chunk文件3.提交WriteChunk请求 1.WriteChunk成功2.数据不再cow3.读取chunk和快照文件数据与预期一致4.chunk其他状态不变 单元测试集成测试
11 PasteChunk,数据写入一半时,还未更新metapage重启/崩溃 chunk存在是clone chunk 1.构造PasteChunk请求,请求的2.通过外围将部分数据写入chunk文件3.提交PasteChunk请求 1.PasteChunk成功2.读取chunk数据和实际写入相同3.chunkinfo.bitmap中对应的bit置为1 单元测试集成测试