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 |
|
单元测试集成测试 |