Как перечитать файлы, используемые веб-приложением ASP.NET MVC, без повторного использования приложения? - PullRequest
0 голосов
/ 30 июля 2010

Я тестирую веб-приложение ASP.NET MVC и использую индексные файлы Lucene. Для каждого теста мне нужно перестраивать индекс Lucene, а затем заставлять мое веб-приложение перечитывать эти файлы индекса. Единственный способ, который я нашел, это перезапустить пул приложений, но он довольно медленный.

Кто-нибудь знает способ перечитать файлы с диска без повторного использования пула приложений?

1 Ответ

2 голосов
/ 02 августа 2010

Похоже, что вы не звоните Close на IndexWriter / Reader / Searchers, который вы используете при выполнении тестов. Если вы этого не сделаете и используете класс FSDirectory (который представляет файловую систему), то создаются файлы блокировки, которые препятствуют открытию индексов в каталогах.

Тем не менее, обязательно вызывайте метод Close для любых объектов, которые открывают его, когда тест завершен. Убедитесь, что вы используете блок try / finally, чтобы обеспечить закрытие объектов.

Лично я создал метод расширения, который берет объект и возвращает реализацию IDisposable, которая будет вызывать Close при вызове Dispose, позволяя использовать его при использовании операторов (я использую отражение для типа, чтобы получить метод Close затем я генерирую лямбда-выражение, которое вызывается в методе Dispose).

Кроме того, если вы запускаете тестовый жгут и открываете и закрываете индексы в своих текстовых приборах, вы должны либо убедиться, что:

  • Тесты, которые обращаются к индексам, запускаются синхронно, поэтому они не пытаются открывать заблокированные каталоги

OR

  • Наличие одного класса тестирования для всех тестов, связанных с поиском, и управление открытием и закрытием индексов в любых механизмах настройки и разрыва, существующих для вашего тестового набора. Вы также должны выполнить заполнение вашего индекса в настройках (и не делать его одним из тестовых случаев, иначе у вас будут проблемы с синхронизацией).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...