Lucene намеренно искажает индекс для модульного теста - PullRequest
0 голосов
/ 24 марта 2012

У меня есть некоторый код, который удаляет и перестраивает индекс Lucene, если он считается поврежденным, и я хотел бы провести модульное тестирование этой функциональности. Каков наилучший способ преднамеренно повредить тестовый FSDirectory, а затем выполнить модульные тесты для поврежденного индекса?

Я предполагаю, что может быть поврежден только каталог файловой системы, но если есть способ симулировать то же самое с каталогом ОЗУ, это было бы еще лучше, поскольку я предпочитаю использовать ОЗУ в своих модульных тестах lucene.

Ответы [ 2 ]

2 голосов
/ 24 марта 2012

Вы можете испортить содержимое в любом каталоге, просто используйте API-интерфейс Directory, чтобы испортить индексные файлы.

Например, взгляните на логику в 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 голосов
/ 24 марта 2012

Предполагается, что один из файлов индекса не менее 2 КБ:

dd if=/dev/urandom of=<index file> bs=1K count=1 seek=1K
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...