## org.apache.lucene.util
Class LuceneTestCase

    java.lang.Object
      org.junit.Assert
          org.apache.lucene.util.LuceneTestCase

Direct Known Subclasses:
  BaseDocValuesFormatTestCase, BasePostingsFormatTestCase, BaseStoredFieldsFormatTestCase, BaseTermVectorsFormatTestCase, BaseTokenStreamTestCase, CollationTestBase, SearchEquivalenceTestBase, ShardSearchingTestBase, ThreadedIndexingAndSearchingTestCase

    @TestMethodProviders(value={LuceneJUnit3MethodProvider.class,com.carrotsearch.randomizedtesting.JUnit4MethodProvider.class})
    @Listeners(value=RunListenerPrintReproduceInfo.class)
    @SeedDecorators(value=com.carrotsearch.randomizedtesting.MixWithSuiteName.class)
    public abstract class LuceneTestCase

extends Assert

Base class for all Lucene unit tests, Junit3 or Junit4 variant.

### Class and instance setup.

The preferred way to specify class (suite-level) setup/cleanup is to use static methods annotated with `BeforeClass` and `AfterClass`. Any code in these methods is executed within the test framework's control and ensure proper setup has been made. Try not to use static initializers (including complex final field initializers). Static initializers are executed before any setup rules are fired and may cause you (or somebody else) headaches.

For instance-level setup, use `Before` and `After` annotated methods. If you override either `setUp()` or `tearDown()` in your subclass, make sure you call `super.setUp()` and `super.tearDown()`. This is detected and enforced.

### Specifying test cases

Any test method with a `testXXX` prefix is considered a test case. Any test method annotated with `Test` is considered a test case.

### Randomized execution and test facilities

`LuceneTestCase` uses `RandomizedRunner` to execute test cases. `RandomizedRunner` has built-in support for tests randomization including access to a repeatable `Random` instance. See `random()` method. Any test using `Random` acquired from `random()` should be fully reproducible (assuming no race conditions between threads etc.). The initial seed for a test case is reported in many ways:

- as part of any exception thrown from its body (inserted as a dummy stack trace entry),
- as part of the main thread executing the test case (if your test hangs, just dump the stack trace of all threads and you'll see the seed),
- the master seed can also be accessed manually by getting the current context (`RandomizedContext.current()`) and then calling `RandomizedContext.getRunnerSeedAsString()`.

There is a number of other facilities tests can use, like:

- `closeAfterTest(Closeable)` and `closeAfterSuite(Closeable)` to register resources to be closed after each scope (if close fails, the scope will fail too).

Nested Class Summary
`static interface` `LuceneTestCase.AwaitsFix` Annotation for tests which exhibit a known issue and are temporarily disabled.
`static interface` `LuceneTestCase.BadApple` Annotation for tests that fail frequently and should be moved to a "vault" plan in Jenkins.
`static interface` `LuceneTestCase.Nightly` Annotation for tests that should only be run during nightly builds.
`static interface` `LuceneTestCase.Slow` Annotation for tests that are slow.
`static interface` `LuceneTestCase.SuppressCodecs` Annotation for test classes that should avoid certain codec types (because they are expensive, for example).
`static interface` `LuceneTestCase.Weekly` Annotation for tests that should only be run during weekly builds

Field Summary
`static org.junit.rules.TestRule` `classRules` This controls how suite-level rules are nested.
`static String` `DEFAULT_LINE_DOCS_FILE` TODO: javadoc?
`protected static Set<String>` `doesntSupportOffsets`
`static boolean` `INFOSTREAM` TODO: javadoc?
`static String` `JENKINS_LARGE_LINE_DOCS_FILE` TODO: javadoc?
`static boolean` `PREFLEX_IMPERSONATION_IS_ACTIVE`
`static int` `RANDOM_MULTIPLIER` A random multiplier which you should use when writing random tests: multiply it by the number of iterations to scale your tests (for nightly builds).
`org.junit.rules.TestRule` `ruleChain` This controls how individual test rules are nested.
`static TestRuleMarkFailure` `suiteFailureMarker` Suite failure marker (any error in the test or suite scope).
`static String` `SYSPROP_AWAITSFIX`
`static String` `SYSPROP_BADAPPLES`
`static String` `SYSPROP_FAILFAST`
`static String` `SYSPROP_MAXFAILURES`
`static String` `SYSPROP_NIGHTLY`
`static String` `SYSPROP_SLOW`
`static String` `SYSPROP_WEEKLY`
`static File` `TEMP_DIR` Create indexes in this directory, optimally use a subdir, named after the test
`static boolean` `TEST_AWAITSFIX` Whether or not `LuceneTestCase.AwaitsFix` tests should run.
`static String` `TEST_CODEC` Gets the codec to run tests with.
`static String` `TEST_DIRECTORY` Gets the directory to run tests with
`static String` `TEST_DOCVALUESFORMAT` Gets the docValuesFormat to run tests with
`static String` `TEST_LINE_DOCS_FILE` the line file used by LineFileDocs
`static boolean` `TEST_NIGHTLY` Whether or not `LuceneTestCase.Nightly` tests should run.
`static String` `TEST_POSTINGSFORMAT` Gets the postingsFormat to run tests with.
`static boolean` `TEST_SLOW` Whether or not `LuceneTestCase.Slow` tests should run.
`static MockDirectoryWrapper.Throttling` `TEST_THROTTLING` Throttling, see `MockDirectoryWrapper.setThrottling(Throttling)`.
`static Version` `TEST_VERSION_CURRENT` Use this constant when creating Analyzers and any other version-dependent stuff.
`static boolean` `TEST_WEEKLY` Whether or not `LuceneTestCase.Weekly` tests should run.
`static boolean` `VERBOSE` True if and only if tests are run in verbose mode.

Constructor Summary
`LuceneTestCase()`

Method Summary
`void` `assertDeletedDocsEquals(String info, IndexReader leftReader, IndexReader rightReader)`
`void` `assertDocsAndPositionsEnumEquals(String info, DocsAndPositionsEnum leftDocs, DocsAndPositionsEnum rightDocs)` checks docs + freqs + positions + payloads, sequentially
`void` `assertDocsEnumEquals(String info, DocsEnum leftDocs, DocsEnum rightDocs, boolean hasFreqs)` checks docs + freqs, sequentially
`void` `assertDocsSkippingEquals(String info, IndexReader leftReader, int docFreq, DocsEnum leftDocs, DocsEnum rightDocs, boolean hasFreqs)` checks advancing docs
`void` `assertDocValuesEquals(String info, IndexReader leftReader, IndexReader rightReader)` checks that docvalues across all fields are equivalent
`void` `assertDocValuesEquals(String info, int num, NumericDocValues leftDocValues, NumericDocValues rightDocValues)`
`void` `assertFieldInfosEquals(String info, IndexReader leftReader, IndexReader rightReader)`
`void` `assertFieldsEquals(String info, IndexReader leftReader, Fields leftFields, Fields rightFields, boolean deep)` Fields api equivalency
`void` `assertFieldStatisticsEquals(String info, Fields leftFields, Fields rightFields)` checks that top-level statistics on Fields are the same
`void` `assertNormsEquals(String info, IndexReader leftReader, IndexReader rightReader)` checks that norms are the same across all fields
`void` `assertPositionsSkippingEquals(String info, IndexReader leftReader, int docFreq, DocsAndPositionsEnum leftDocs, DocsAndPositionsEnum rightDocs)` checks advancing docs + positions
`void` `assertReaderEquals(String info, IndexReader leftReader, IndexReader rightReader)`
`void` `assertReaderStatisticsEquals(String info, IndexReader leftReader, IndexReader rightReader)` checks that reader-level statistics are the same
`protected static void` `assertSaneFieldCaches(String msg)` Asserts that FieldCacheSanityChecker does not detect any problems with FieldCache.DEFAULT.
`void` `assertStoredFieldEquals(String info, IndexableField leftField, IndexableField rightField)` checks that two stored fields are equivalent
`void` `assertStoredFieldsEquals(String info, IndexReader leftReader, IndexReader rightReader)` checks that stored fields of all documents are the same
`void` `assertTermsEnumEquals(String info, IndexReader leftReader, TermsEnum leftTermsEnum, TermsEnum rightTermsEnum, boolean deep)` checks the terms enum sequentially if deep is false, it does a 'shallow' test that doesnt go down to the docsenums
`void` `assertTermsEquals(String info, IndexReader leftReader, Terms leftTerms, Terms rightTerms, boolean deep)` Terms api equivalency
`void` `assertTermsStatisticsEquals(String info, Terms leftTerms, Terms rightTerms)` checks collection-level statistics on Terms
`void` `assertTermStatsEquals(String info, TermsEnum leftTermsEnum, TermsEnum rightTermsEnum)` checks term-level statistics
`void` `assertTermVectorsEquals(String info, IndexReader leftReader, IndexReader rightReader)` checks that term vectors across all fields are equivalent

`static

`<T> Set<T>`

`

`asSet(T... args)`
Return `args` as a `Set` instance.

`static void` `assumeFalse(String msg, boolean condition)`
`static void` `assumeNoException(String msg, Exception e)`
`static void` `assumeTrue(String msg, boolean condition)`
`static int` `atLeast(int i)`
`static int` `atLeast(Random random, int i)` Returns a number of at least `i`

`static

`<T extends Closeable> T`

`

`closeAfterSuite(T resource)`
Registers a `Closeable` resource that should be closed after the suite completes.

`

`<T extends Closeable> T`

`

`closeAfterTest(T resource)`
Registers a `Closeable` resource that should be closed after the test completes.

`static boolean` `defaultCodecSupportsDocValues()`
`static boolean` `defaultCodecSupportsSortedSet()` Returns true if the default codec supports SORTED_SET docvalues
`static void` `dumpArray(String label, Object[] objs, PrintStream stream)` Convenience method for logging an array.
`static void` `dumpIterator(String label, Iterator<?> iter, PrintStream stream)` Convenience method for logging an iterator.
`protected File` `getDataFile(String name)` Gets a resource from the classpath as `File`.
`static SegmentReader` `getOnlySegmentReader(DirectoryReader reader)` Some tests expect the directory to contain a single segment, and want to do tests on that segment's reader.
`static Class<?>` `getTestClass()` Return the current class being tested.
`String` `getTestName()` Return the name of the currently executing test case.
`protected boolean` `isTestThread()` Returns true if and only if the calling thread is the primary thread executing the test case.
`static Locale` `localeForName(String localeName)` return a Locale object equivalent to its programmatic name
`static IndexReader` `maybeWrapReader(IndexReader r)` Sometimes wrap the IndexReader as slow, parallel or filter reader (or combinations of that)
`static AlcoholicMergePolicy` `newAlcoholicMergePolicy()`
`static AlcoholicMergePolicy` `newAlcoholicMergePolicy(Random r, TimeZone tz)`
`static BaseDirectoryWrapper` `newDirectory()` Returns a new Directory instance.
`static BaseDirectoryWrapper` `newDirectory(Directory d)` Returns a new Directory instance, with contents copied from the provided directory.
`static BaseDirectoryWrapper` `newDirectory(Random r)` Returns a new Directory instance, using the specified random.
`static BaseDirectoryWrapper` `newDirectory(Random r, Directory d)` Returns a new Directory instance, using the specified random with contents copied from the provided directory.
`static Field` `newField(Random random, String name, String value, FieldType type)`
`static Field` `newField(String name, String value, FieldType type)`
`static BaseDirectoryWrapper` `newFSDirectory(File f)` Returns a new FSDirectory instance over the given file, which must be a folder.
`static BaseDirectoryWrapper` `newFSDirectory(File f, LockFactory lf)` Returns a new FSDirectory instance over the given file, which must be a folder.
`static IndexWriterConfig` `newIndexWriterConfig(Random r, Version v, Analyzer a)` create a new index writer config with random defaults using the specified random
`static IndexWriterConfig` `newIndexWriterConfig(Version v, Analyzer a)` create a new index writer config with random defaults
`static IOContext` `newIOContext(Random random)` TODO: javadoc
`static IOContext` `newIOContext(Random random, IOContext oldContext)` TODO: javadoc
`static LogMergePolicy` `newLogMergePolicy()`
`static MergePolicy` `newLogMergePolicy(boolean useCFS)`
`static MergePolicy` `newLogMergePolicy(boolean useCFS, int mergeFactor)`
`static MergePolicy` `newLogMergePolicy(int mergeFactor)`
`static LogMergePolicy` `newLogMergePolicy(Random r)`
`static MockDirectoryWrapper` `newMockDirectory()`
`static MockDirectoryWrapper` `newMockDirectory(Random r)`
`static MockDirectoryWrapper` `newMockFSDirectory(File f)`
`static IndexSearcher` `newSearcher(IndexReader r)` Create a new searcher over the reader.
`static IndexSearcher` `newSearcher(IndexReader r, boolean maybeWrap)` Create a new searcher over the reader.
`static Field` `newStringField(Random random, String name, String value, Field.Store stored)`
`static Field` `newStringField(String name, String value, Field.Store stored)`
`static Field` `newTextField(Random random, String name, String value, Field.Store stored)`
`static Field` `newTextField(String name, String value, Field.Store stored)`
`static TieredMergePolicy` `newTieredMergePolicy()`
`static TieredMergePolicy` `newTieredMergePolicy(Random r)`
`static Random` `random()` Access to the current `RandomizedContext`'s Random instance.
`static Locale` `randomLocale(Random random)` Return a random Locale from the available locales on the system.
`static TimeZone` `randomTimeZone(Random random)` Return a random TimeZone from the available timezones on the system
`static boolean` `rarely()`
`static boolean` `rarely(Random random)` Returns true if something should happen rarely,
`static TestRuleIgnoreAfterMaxFailures` `replaceMaxFailureRule(TestRuleIgnoreAfterMaxFailures newValue)` Temporarily substitute the global `TestRuleIgnoreAfterMaxFailures`.
`void` `setUp()` For subclasses to override.
`void` `tearDown()` For subclasses to override.
`static boolean` `usually()`
`static boolean` `usually(Random random)`

Methods inherited from class org.junit.Assert

`assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertThat, assertThat, assertTrue, assertTrue, fail, fail`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### SYSPROP_NIGHTLY

    public static final String SYSPROP_NIGHTLY

See Also:
  Constant Field Values

### SYSPROP_WEEKLY

    public static final String SYSPROP_WEEKLY

See Also:
  Constant Field Values

### SYSPROP_AWAITSFIX

    public static final String SYSPROP_AWAITSFIX

See Also:
  Constant Field Values

### SYSPROP_SLOW

    public static final String SYSPROP_SLOW

See Also:
  Constant Field Values

### SYSPROP_BADAPPLES

    public static final String SYSPROP_BADAPPLES

See Also:
  Constant Field Values

### SYSPROP_MAXFAILURES

    public static final String SYSPROP_MAXFAILURES

See Also:
  `ignoreAfterMaxFailures`, Constant Field Values

### SYSPROP_FAILFAST

    public static final String SYSPROP_FAILFAST

See Also:
  `ignoreAfterMaxFailures`, Constant Field Values

### TEST_VERSION_CURRENT

    public static final Version TEST_VERSION_CURRENT

  Use this constant when creating Analyzers and any other version-dependent stuff.

  NOTE: Change this when development starts for new Lucene version:

### VERBOSE

    public static final boolean VERBOSE

  True if and only if tests are run in verbose mode. If this flag is false tests are not expected to print any messages.

### INFOSTREAM

    public static final boolean INFOSTREAM

  TODO: javadoc?

### RANDOM_MULTIPLIER

    public static final int RANDOM_MULTIPLIER

  A random multiplier which you should use when writing random tests: multiply it by the number of iterations to scale your tests (for nightly builds).

### DEFAULT_LINE_DOCS_FILE

    public static final String DEFAULT_LINE_DOCS_FILE

  TODO: javadoc?

  See Also:
    Constant Field Values

### JENKINS_LARGE_LINE_DOCS_FILE

    public static final String JENKINS_LARGE_LINE_DOCS_FILE

  TODO: javadoc?

  See Also:
    Constant Field Values

### TEST_CODEC

    public static final String TEST_CODEC

  Gets the codec to run tests with.

### TEST_POSTINGSFORMAT

    public static final String TEST_POSTINGSFORMAT

  Gets the postingsFormat to run tests with.

### TEST_DOCVALUESFORMAT

    public static final String TEST_DOCVALUESFORMAT

  Gets the docValuesFormat to run tests with

### TEST_DIRECTORY

    public static final String TEST_DIRECTORY

  Gets the directory to run tests with

### TEST_LINE_DOCS_FILE

    public static final String TEST_LINE_DOCS_FILE

  the line file used by LineFileDocs

### TEST_NIGHTLY

    public static final boolean TEST_NIGHTLY

  Whether or not `LuceneTestCase.Nightly` tests should run.

### TEST_WEEKLY

    public static final boolean TEST_WEEKLY

  Whether or not `LuceneTestCase.Weekly` tests should run.

### TEST_AWAITSFIX

    public static final boolean TEST_AWAITSFIX

  Whether or not `LuceneTestCase.AwaitsFix` tests should run.

### TEST_SLOW

    public static final boolean TEST_SLOW

  Whether or not `LuceneTestCase.Slow` tests should run.

### TEST_THROTTLING

    public static final MockDirectoryWrapper.Throttling TEST_THROTTLING

  Throttling, see `MockDirectoryWrapper.setThrottling(Throttling)`.

### TEMP_DIR

    public static final File TEMP_DIR

  Create indexes in this directory, optimally use a subdir, named after the test

### doesntSupportOffsets

    protected static final Set<String> doesntSupportOffsets

### PREFLEX_IMPERSONATION_IS_ACTIVE

    public static boolean PREFLEX_IMPERSONATION_IS_ACTIVE

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

### suiteFailureMarker

    public static final TestRuleMarkFailure suiteFailureMarker

  Suite failure marker (any error in the test or suite scope).

### classRules

    public static org.junit.rules.TestRule classRules

  This controls how suite-level rules are nested. It is important that _all_ rules declared in `LuceneTestCase` are executed in proper order if they depend on each other.

### ruleChain

    public final org.junit.rules.TestRule ruleChain

  This controls how individual test rules are nested. It is important that _all_ rules declared in `LuceneTestCase` are executed in proper order if they depend on each other.

Constructor Detail

### LuceneTestCase

    public LuceneTestCase()

Method Detail

### replaceMaxFailureRule

    public static TestRuleIgnoreAfterMaxFailures replaceMaxFailureRule(TestRuleIgnoreAfterMaxFailures newValue)

  Temporarily substitute the global `TestRuleIgnoreAfterMaxFailures`. See `ignoreAfterMaxFailuresDelegate` for some explanation why this method is needed.

### setUp

    public void setUp()
               throws Exception

  For subclasses to override. Overrides must call `super.setUp()`.

  Throws:
    `Exception`

### tearDown

    public void tearDown()
                  throws Exception

  For subclasses to override. Overrides must call `super.tearDown()`.

  Throws:
    `Exception`

### random

    public static Random random()

  Access to the current `RandomizedContext`'s Random instance. It is safe to use this method from multiple threads, etc., but it should be called while within a runner's scope (so no static initializers). The returned `Random` instance will be different when this method is called inside a `BeforeClass` hook (static suite scope) and within `Before`/ `After` hooks or test methods.

  The returned instance must not be shared with other threads or cross a single scope's boundary. For example, a `Random` acquired within a test method shouldn't be reused for another test case.

  There is an overhead connected with getting the `Random` for a particular context and thread. It is better to cache the `Random` locally if tight loops with multiple invocations are present or create a derivative local `Random` for millions of calls like this:

       Random random = new Random(random().nextLong());
       // tight loop with many invocations.

### closeAfterTest

    public <T extends Closeable> T closeAfterTest(T resource)

  Registers a `Closeable` resource that should be closed after the test completes.

  Returns:
    `resource` (for call chaining).

### closeAfterSuite

    public static <T extends Closeable> T closeAfterSuite(T resource)

  Registers a `Closeable` resource that should be closed after the suite completes.

  Returns:
    `resource` (for call chaining).

### getTestClass

    public static Class<?> getTestClass()

  Return the current class being tested.

### getTestName

    public String getTestName()

  Return the name of the currently executing test case.

### getOnlySegmentReader

    public static SegmentReader getOnlySegmentReader(DirectoryReader reader)

  Some tests expect the directory to contain a single segment, and want to do tests on that segment's reader. This is an utility method to help them.

### isTestThread

    protected boolean isTestThread()

  Returns true if and only if the calling thread is the primary thread executing the test case.

### assertSaneFieldCaches

    protected static void assertSaneFieldCaches(String msg)

  Asserts that FieldCacheSanityChecker does not detect any problems with FieldCache.DEFAULT.

  If any problems are found, they are logged to System.err (allong with the msg) when the Assertion is thrown.

  This method is called by tearDown after every test method, however IndexReaders scoped inside test methods may be garbage collected prior to this method being called, causing errors to be overlooked. Tests are encouraged to keep their IndexReaders scoped at the class level, or to explicitly call this method directly in the same scope as the IndexReader.

  See Also:
    `FieldCacheSanityChecker`

### atLeast

    public static int atLeast(Random random,
                              int i)

  Returns a number of at least `i`

  The actual number returned will be influenced by whether `TEST_NIGHTLY` is active and `RANDOM_MULTIPLIER`, but also with some random fudge.

### atLeast

    public static int atLeast(int i)

### rarely

    public static boolean rarely(Random random)

  Returns true if something should happen rarely,

  The actual number returned will be influenced by whether `TEST_NIGHTLY` is active and `RANDOM_MULTIPLIER`.

### rarely

    public static boolean rarely()

### usually

    public static boolean usually(Random random)

### usually

    public static boolean usually()

### assumeTrue

    public static void assumeTrue(String msg,
                                  boolean condition)

### assumeFalse

    public static void assumeFalse(String msg,
                                   boolean condition)

### assumeNoException

    public static void assumeNoException(String msg,
                                         Exception e)

### asSet

    public static <T> Set<T> asSet(T... args)

  Return `args` as a `Set` instance. The order of elements is not preserved in iterators.

### dumpIterator

    public static void dumpIterator(String label,
                                    Iterator<?> iter,
                                    PrintStream stream)

  Convenience method for logging an iterator.

  Parameters:
    `label` - String logged before/after the items in the iterator
    `iter` - Each next() is toString()ed and logged on it's own line. If iter is null this is logged differnetly then an empty iterator.
    `stream` - Stream to log messages to.

### dumpArray

    public static void dumpArray(String label,
                                 Object[] objs,
                                 PrintStream stream)

  Convenience method for logging an array. Wraps the array in an iterator and delegates

  See Also:
    `dumpIterator(String,Iterator,PrintStream)`

### newIndexWriterConfig

    public static IndexWriterConfig newIndexWriterConfig(Version v,
                                                         Analyzer a)

  create a new index writer config with random defaults

### newIndexWriterConfig

    public static IndexWriterConfig newIndexWriterConfig(Random r,
                                                         Version v,
                                                         Analyzer a)

  create a new index writer config with random defaults using the specified random

### newLogMergePolicy

    public static LogMergePolicy newLogMergePolicy()

### newTieredMergePolicy

    public static TieredMergePolicy newTieredMergePolicy()

### newAlcoholicMergePolicy

    public static AlcoholicMergePolicy newAlcoholicMergePolicy()

### newAlcoholicMergePolicy

    public static AlcoholicMergePolicy newAlcoholicMergePolicy(Random r,
                                                               TimeZone tz)

### newLogMergePolicy

    public static LogMergePolicy newLogMergePolicy(Random r)

### newTieredMergePolicy

    public static TieredMergePolicy newTieredMergePolicy(Random r)

### newLogMergePolicy

    public static MergePolicy newLogMergePolicy(boolean useCFS)

### newLogMergePolicy

    public static MergePolicy newLogMergePolicy(boolean useCFS,
                                                int mergeFactor)

### newLogMergePolicy

    public static MergePolicy newLogMergePolicy(int mergeFactor)

### newDirectory

    public static BaseDirectoryWrapper newDirectory()

  Returns a new Directory instance. Use this when the test does not care about the specific Directory implementation (most tests).

  The Directory is wrapped with `BaseDirectoryWrapper`. this means usually it will be picky, such as ensuring that you properly close it and all open files in your test. It will emulate some features of Windows, such as not allowing open files to be overwritten.

### newDirectory

    public static BaseDirectoryWrapper newDirectory(Random r)

  Returns a new Directory instance, using the specified random. See `newDirectory()` for more information.

### newMockDirectory

    public static MockDirectoryWrapper newMockDirectory()

### newMockDirectory

    public static MockDirectoryWrapper newMockDirectory(Random r)

### newMockFSDirectory

    public static MockDirectoryWrapper newMockFSDirectory(File f)

### newDirectory

    public static BaseDirectoryWrapper newDirectory(Directory d)
                                             throws IOException

  Returns a new Directory instance, with contents copied from the provided directory. See `newDirectory()` for more information.

  Throws:
    `IOException`

### newFSDirectory

    public static BaseDirectoryWrapper newFSDirectory(File f)

  Returns a new FSDirectory instance over the given file, which must be a folder.

### newFSDirectory

    public static BaseDirectoryWrapper newFSDirectory(File f,
                                                      LockFactory lf)

  Returns a new FSDirectory instance over the given file, which must be a folder.

### newDirectory

    public static BaseDirectoryWrapper newDirectory(Random r,
                                                    Directory d)
                                             throws IOException

  Returns a new Directory instance, using the specified random with contents copied from the provided directory. See `newDirectory()` for more information.

  Throws:
    `IOException`

### newStringField

    public static Field newStringField(String name,
                                       String value,
                                       Field.Store stored)

### newTextField

    public static Field newTextField(String name,
                                     String value,
                                     Field.Store stored)

### newStringField

    public static Field newStringField(Random random,
                                       String name,
                                       String value,
                                       Field.Store stored)

### newTextField

    public static Field newTextField(Random random,
                                     String name,
                                     String value,
                                     Field.Store stored)

### newField

    public static Field newField(String name,
                                 String value,
                                 FieldType type)

### newField

    public static Field newField(Random random,
                                 String name,
                                 String value,
                                 FieldType type)

### randomLocale

    public static Locale randomLocale(Random random)

  Return a random Locale from the available locales on the system.

  See Also:
    "https://issues.apache.org/jira/browse/LUCENE-4020"

### randomTimeZone

    public static TimeZone randomTimeZone(Random random)

  Return a random TimeZone from the available timezones on the system

  See Also:
    "https://issues.apache.org/jira/browse/LUCENE-4020"

### localeForName

    public static Locale localeForName(String localeName)

  return a Locale object equivalent to its programmatic name

### defaultCodecSupportsDocValues

    public static boolean defaultCodecSupportsDocValues()

### maybeWrapReader

    public static IndexReader maybeWrapReader(IndexReader r)
                                       throws IOException

  Sometimes wrap the IndexReader as slow, parallel or filter reader (or combinations of that)

  Throws:
    `IOException`

### newIOContext

    public static IOContext newIOContext(Random random)

  TODO: javadoc

### newIOContext

    public static IOContext newIOContext(Random random,
                                         IOContext oldContext)

  TODO: javadoc

### newSearcher

    public static IndexSearcher newSearcher(IndexReader r)

  Create a new searcher over the reader. This searcher might randomly use threads.

### newSearcher

    public static IndexSearcher newSearcher(IndexReader r,
                                            boolean maybeWrap)

  Create a new searcher over the reader. This searcher might randomly use threads. if `maybeWrap` is true, this searcher might wrap the reader with one that returns null for getSequentialSubReaders.

### getDataFile

    protected File getDataFile(String name)
                        throws IOException

  Gets a resource from the classpath as `File`. This method should only be used, if a real file is needed. To get a stream, code should prefer `Class.getResourceAsStream(java.lang.String)` using `this.getClass()`.

  Throws:
    `IOException`

### defaultCodecSupportsSortedSet

    public static boolean defaultCodecSupportsSortedSet()

  Returns true if the default codec supports SORTED_SET docvalues

### assertReaderEquals

    public void assertReaderEquals(String info,
                                   IndexReader leftReader,
                                   IndexReader rightReader)
                            throws IOException

  Throws:
    `IOException`

### assertReaderStatisticsEquals

    public void assertReaderStatisticsEquals(String info,
                                             IndexReader leftReader,
                                             IndexReader rightReader)
                                      throws IOException

  checks that reader-level statistics are the same

  Throws:
    `IOException`

### assertFieldsEquals

    public void assertFieldsEquals(String info,
                                   IndexReader leftReader,
                                   Fields leftFields,
                                   Fields rightFields,
                                   boolean deep)
                            throws IOException

  Fields api equivalency

  Throws:
    `IOException`

### assertFieldStatisticsEquals

    public void assertFieldStatisticsEquals(String info,
                                            Fields leftFields,
                                            Fields rightFields)
                                     throws IOException

  checks that top-level statistics on Fields are the same

  Throws:
    `IOException`

### assertTermsEquals

    public void assertTermsEquals(String info,
                                  IndexReader leftReader,
                                  Terms leftTerms,
                                  Terms rightTerms,
                                  boolean deep)
                           throws IOException

  Terms api equivalency

  Throws:
    `IOException`

### assertTermsStatisticsEquals

    public void assertTermsStatisticsEquals(String info,
                                            Terms leftTerms,
                                            Terms rightTerms)
                                     throws IOException

  checks collection-level statistics on Terms

  Throws:
    `IOException`

### assertTermsEnumEquals

    public void assertTermsEnumEquals(String info,
                                      IndexReader leftReader,
                                      TermsEnum leftTermsEnum,
                                      TermsEnum rightTermsEnum,
                                      boolean deep)
                               throws IOException

  checks the terms enum sequentially if deep is false, it does a 'shallow' test that doesnt go down to the docsenums

  Throws:
    `IOException`

### assertDocsAndPositionsEnumEquals

    public void assertDocsAndPositionsEnumEquals(String info,
                                                 DocsAndPositionsEnum leftDocs,
                                                 DocsAndPositionsEnum rightDocs)
                                          throws IOException

  checks docs + freqs + positions + payloads, sequentially

  Throws:
    `IOException`

### assertDocsEnumEquals

    public void assertDocsEnumEquals(String info,
                                     DocsEnum leftDocs,
                                     DocsEnum rightDocs,
                                     boolean hasFreqs)
                              throws IOException

  checks docs + freqs, sequentially

  Throws:
    `IOException`

### assertDocsSkippingEquals

    public void assertDocsSkippingEquals(String info,
                                         IndexReader leftReader,
                                         int docFreq,
                                         DocsEnum leftDocs,
                                         DocsEnum rightDocs,
                                         boolean hasFreqs)
                                  throws IOException

  checks advancing docs

  Throws:
    `IOException`

### assertPositionsSkippingEquals

    public void assertPositionsSkippingEquals(String info,
                                              IndexReader leftReader,
                                              int docFreq,
                                              DocsAndPositionsEnum leftDocs,
                                              DocsAndPositionsEnum rightDocs)
                                       throws IOException

  checks advancing docs + positions

  Throws:
    `IOException`

### assertTermStatsEquals

    public void assertTermStatsEquals(String info,
                                      TermsEnum leftTermsEnum,
                                      TermsEnum rightTermsEnum)
                               throws IOException

  checks term-level statistics

  Throws:
    `IOException`

### assertNormsEquals

    public void assertNormsEquals(String info,
                                  IndexReader leftReader,
                                  IndexReader rightReader)
                           throws IOException

  checks that norms are the same across all fields

  Throws:
    `IOException`

### assertStoredFieldsEquals

    public void assertStoredFieldsEquals(String info,
                                         IndexReader leftReader,
                                         IndexReader rightReader)
                                  throws IOException

  checks that stored fields of all documents are the same

  Throws:
    `IOException`

### assertStoredFieldEquals

    public void assertStoredFieldEquals(String info,
                                        IndexableField leftField,
                                        IndexableField rightField)

  checks that two stored fields are equivalent

### assertTermVectorsEquals

    public void assertTermVectorsEquals(String info,
                                        IndexReader leftReader,
                                        IndexReader rightReader)
                                 throws IOException

  checks that term vectors across all fields are equivalent

  Throws:
    `IOException`

### assertDocValuesEquals

    public void assertDocValuesEquals(String info,
                                      IndexReader leftReader,
                                      IndexReader rightReader)
                               throws IOException

  checks that docvalues across all fields are equivalent

  Throws:
    `IOException`

### assertDocValuesEquals

    public void assertDocValuesEquals(String info,
                                      int num,
                                      NumericDocValues leftDocValues,
                                      NumericDocValues rightDocValues)
                               throws IOException

  Throws:
    `IOException`

### assertDeletedDocsEquals

    public void assertDeletedDocsEquals(String info,
                                        IndexReader leftReader,
                                        IndexReader rightReader)
                                 throws IOException

  Throws:
    `IOException`

### assertFieldInfosEquals

    public void assertFieldInfosEquals(String info,
                                       IndexReader leftReader,
                                       IndexReader rightReader)
                                throws IOException

  Throws:
    `IOException`

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.