2012-03-24 45 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