2012-03-24 47 views
0

我有一些代码删除并重建一个Lucene索引,如果它被捕获为损坏,我想单元测试这个功能。故意破坏测试FSDirectory然后对损坏的索引执行单元测试的最佳方法是什么?Lucene单元测试的目的损坏索引

我假设只有文件系统目录可能被损坏,但是如果有一种方法可以模拟RAM目录中的相同内容,那么会更好,因为我更喜欢在我的lucene单元测试中使用RAM。

+1

[M-x蝴蝶](http://xkcd.com/378/)? – 2012-03-24 19:14:00

回答

2

可以腐败的东西,在任何目录下,只需要使用目录API直接向陷入困境的索引文件。

例如,看一下Lucene的MockDirectoryWrapper.crash()(用于单元测试)中的逻辑来模拟机器崩溃(通过搞砸任何尚未精简的文件):它通过截断文件,归零文件的一部分,完全删除文件,或将文件完全截断为0字节文件。

http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java

+0

您是否有任何链接到资源来设置lucene单元测试?我可以在Google上找到那里似乎没有多少东西。 – ryandlf 2012-03-24 21:10:07

0

假设索引文件之一是至少2K:

dd if=/dev/urandom of=<index file> bs=1K count=1 seek=1K