我有一些代码可以删除并重建一个Lucene索引,如果它被捕获为损坏,我想对这个功能进行单元测试。故意破坏测试FSDirectory然后对损坏的索引执行单元测试的最佳方法是什么?
我假设只有文件系统目录可能已损坏,但是如果有一种方法可以模拟RAM目录中的相同内容,那就更好了,因为我更喜欢在我的lucene单元测试中使用RAM。
答案 0 :(得分:2)
你可以破坏任何目录中的东西,只需直接使用Directory api来搞乱索引文件。
例如,看看Lucene的MockDirectoryWrapper.crash()(用于单元测试)中的逻辑来模拟机器崩溃(通过搞砸任何尚未开发的文件):它通过截断文件来模拟这个,清零部分文件,完全删除文件,或将文件完全截断为0字节文件。
答案 1 :(得分:0)
假设其中一个索引文件至少为2K:
dd if=/dev/urandom of=<index file> bs=1K count=1 seek=1K