2012-03-24 18 views
0

Luceneインデックスが破損していると検出された場合は、Luceneインデックスを削除して再構築するコードがあります。この機能をユニットテストしたいと思います。意図的にテスト用のFSDirectoryを破損させ、破損したインデックスに対して単体テストを実行する最善の方法は何ですか?Lucene単体テスト用の壊れたインデックス

私は、ファイルシステムのディレクトリだけが壊れている可能性があると仮定していますが、RAMディレクトリで同じことをシミュレートする方法があれば、私のluceneユニットテストでRAMを使用する方が良いでしょう。インデックスファイルのいずれかを想定すると

+1

[M-Xバタフライ](http://xkcd.com/378/)? –

答えて

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

0

は、少なくとも2Kです:

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