lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Muir (JIRA)" <>
Subject [jira] [Updated] (SOLR-2279) Add a MockDirectoryFactory (or similar) for Solr tests
Date Wed, 01 Jun 2011 08:05:47 GMT


Robert Muir updated SOLR-2279:

    Attachment: SOLR-2279.patch

attached is a committable patch, changes from previous:
* added to uima contrib too
* disabled for the two problematic tests.

I think its ok for now that we disable this factory for two tests like such in setUp():
    // TODO: fix this test to use MockDirectoryFactory

Hopefully we can fix these tests in the future, but for now this is a good improvement in
test coverage. I'll test on windows now, and commit this as a first step if everything is
ok. I'll keep the issue open because I think we want to fix those 2 tests.

Also, I was surprised to find no problems with the spellchecker, but the reason for this is
that it doesnt use the DirectoryFactory in solr, instead just! (I wonder
if this should be improved separately?) 

> Add a MockDirectoryFactory (or similar) for Solr tests
> ------------------------------------------------------
>                 Key: SOLR-2279
>                 URL:
>             Project: Solr
>          Issue Type: Test
>          Components: Build
>            Reporter: Robert Muir
>            Assignee: Robert Muir
>             Fix For: 4.0
>         Attachments: SOLR-2279.patch, SOLR-2279.patch, SOLR-2279.patch
> Currently, all Lucene tests open directories with newDirectory() [and soon-to-be added
newFSDirectory() which always ensures the directory returned is an FSDir subclass, see LUCENE-2804
for this]. Additionally the directory is wrapped with MockDirectoryWrapper.
> This has a number of advantages:
> * By default the directory implementation is random, but you can easily specify a specific
impl e.g. When proposing a change to one of our directory
implementations, we can run all tests with it this way... it would be good for Solr tests
to respect this too.
> * The test framework (LuceneTestCase before/afterclass) ensures that these directories
are properly closed, if not, it causes the test to fail with a stacktrace of where you
> first opened the directory.
> * MockDirectoryWrapper.close() then ensures that there are no resource leaks by default,
when you open a file they save the stacktrace of where you opened it from. If you try to close
the directory without say, closing an IndexReader, it fails with the stacktrace of where you
opened the reader from. This is helpful for tracking down resource leaks. Currently Solr warns
if it cannot delete its test temporary directory, but this is better since you know exactly
where the resource leak came from. This can be disabled with an optional setter which we should
probably expose for some tests that have known leaks like SpellCheck.
> * MockDirectoryWrapper enforce consistent test behavior on any operating system, as it
won't be dependent on the return value of
> * MockDirectoryWrapper has a number of other checks and features, such as simulating
a crash, simulating disk full, emulating windows (where you can't delete open files), etc.

This message is automatically generated by JIRA.
For more information on JIRA, see:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message