You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2010/08/12 22:56:29 UTC

svn commit: r984968 [6/6] - in /lucene/dev/trunk: lucene/contrib/highlighter/src/test/org/apache/lucene/search/highlight/ lucene/contrib/highlighter/src/test/org/apache/lucene/search/vectorhighlight/ lucene/contrib/instantiated/src/test/org/apache/luce...

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSort.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSort.java Thu Aug 12 20:56:23 2010
@@ -19,6 +19,7 @@ package org.apache.lucene.search;
 
 import java.io.IOException;
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -45,7 +46,6 @@ import org.apache.lucene.search.FieldVal
 import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.DocIdBitSet;
 import org.apache.lucene.util.LuceneTestCase;
 
@@ -60,9 +60,9 @@ import org.apache.lucene.util.LuceneTest
 public class TestSort extends LuceneTestCase implements Serializable {
 
   private static final int NUM_STRINGS = 6000 * RANDOM_MULTIPLIER;
-  private Searcher full;
-  private Searcher searchX;
-  private Searcher searchY;
+  private IndexSearcher full;
+  private IndexSearcher searchX;
+  private IndexSearcher searchY;
   private Query queryX;
   private Query queryY;
   private Query queryA;
@@ -108,9 +108,10 @@ public class TestSort extends LuceneTest
   };
   
   // create an index of all the documents, or just the x, or just the y documents
-  private Searcher getIndex (boolean even, boolean odd)
+  private IndexSearcher getIndex (boolean even, boolean odd)
   throws IOException {
-    MockRAMDirectory indexStore = new MockRAMDirectory();
+    MockRAMDirectory indexStore = newDirectory(random);
+    dirs.add(indexStore);
     RandomIndexWriter writer = new RandomIndexWriter(random, indexStore);
 
     for (int i=0; i<data.length; ++i) {
@@ -139,13 +140,14 @@ public class TestSort extends LuceneTest
     return s;
   }
 
-  private Searcher getFullIndex()
+  private IndexSearcher getFullIndex()
   throws IOException {
     return getIndex (true, true);
   }
   
   private IndexSearcher getFullStrings() throws CorruptIndexException, LockObtainFailedException, IOException {
-    MockRAMDirectory indexStore = new MockRAMDirectory ();
+    MockRAMDirectory indexStore = newDirectory (random);
+    dirs.add(indexStore);
     IndexWriter writer = new IndexWriter(indexStore, new IndexWriterConfig(
         TEST_VERSION_CURRENT, new MockAnalyzer()).setMaxBufferedDocs(4));
     ((LogMergePolicy) writer.getConfig().getMergePolicy()).setMergeFactor(97);
@@ -197,17 +199,17 @@ public class TestSort extends LuceneTest
     return randInt;
   }
 
-  private Searcher getXIndex()
+  private IndexSearcher getXIndex()
   throws IOException {
     return getIndex (true, false);
   }
 
-  private Searcher getYIndex()
+  private IndexSearcher getYIndex()
   throws IOException {
     return getIndex (false, true);
   }
 
-  private Searcher getEmptyIndex()
+  private IndexSearcher getEmptyIndex()
   throws IOException {
     return getIndex (false, false);
   }
@@ -226,6 +228,21 @@ public class TestSort extends LuceneTest
     queryG = new TermQuery (new Term ("contents", "g"));
     sort = new Sort();
   }
+  
+  private ArrayList<Directory> dirs = new ArrayList<Directory>();
+  
+  @Override
+  protected void tearDown() throws Exception {
+    full.reader.close();
+    searchX.reader.close();
+    searchY.reader.close();
+    full.close();
+    searchX.close();
+    searchY.close();
+    for (Directory dir : dirs)
+      dir.close();
+    super.tearDown();
+  }
 
   // test the sorts by score and document number
   public void testBuiltInSorts() throws Exception {
@@ -323,7 +340,7 @@ public class TestSort extends LuceneTest
       System.out.println("topn field1(field2)(docID):" + buff);
     }
     assertFalse("Found sort results out of order", fail);
-
+    searcher.close();
   }
   
   /** 
@@ -1015,8 +1032,8 @@ public class TestSort extends LuceneTest
   }
 
   public void testEmptyStringVsNullStringSort() throws Exception {
-    Directory dir = new MockRAMDirectory();
-    IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(
+    Directory dir = newDirectory(random);
+    IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(random,
                         TEST_VERSION_CURRENT, new MockAnalyzer()));
     Document doc = new Document();
     doc.add(new Field("f", "", Field.Store.NO, Field.Index.NOT_ANALYZED));
@@ -1040,8 +1057,8 @@ public class TestSort extends LuceneTest
   }
 
   public void testLUCENE2142() throws IOException {
-    MockRAMDirectory indexStore = new MockRAMDirectory ();
-    IndexWriter writer = new IndexWriter(indexStore, new IndexWriterConfig(
+    MockRAMDirectory indexStore = newDirectory (random);
+    IndexWriter writer = new IndexWriter(indexStore, newIndexWriterConfig(random,
         TEST_VERSION_CURRENT, new MockAnalyzer()));
     for (int i=0; i<5; i++) {
         Document doc = new Document();
@@ -1055,7 +1072,10 @@ public class TestSort extends LuceneTest
         new SortField("string", SortField.STRING),
         SortField.FIELD_DOC );
     // this should not throw AIOOBE or RuntimeEx
-    new IndexSearcher (indexStore, true).search(new MatchAllDocsQuery(), null, 500, sort);
+    IndexSearcher searcher = new IndexSearcher(indexStore, true);
+    searcher.search(new MatchAllDocsQuery(), null, 500, sort);
+    searcher.close();
+    indexStore.close();
   }
 
 }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java Thu Aug 12 20:56:23 2010
@@ -17,6 +17,7 @@ package org.apache.lucene.search;
  */
 
 import java.util.List;
+import java.util.Random;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -26,7 +27,6 @@ import org.apache.lucene.index.SlowMulti
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.spans.SpanTermQuery;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.English;
 import org.apache.lucene.util.LuceneTestCase;
 
@@ -38,8 +38,9 @@ public class TestSpanQueryFilter extends
   }
 
   public void testFilterWorks() throws Exception {
-    Directory dir = new MockRAMDirectory();
-    RandomIndexWriter writer = new RandomIndexWriter(newRandom(), dir);
+    Random random = newRandom();
+    Directory dir = newDirectory(random);
+    RandomIndexWriter writer = new RandomIndexWriter(random, dir);
     for (int i = 0; i < 500; i++) {
       Document document = new Document();
       document.add(new Field("field", English.intToEnglish(i) + " equals " + English.intToEnglish(i),

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermRangeFilter.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermRangeFilter.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermRangeFilter.java Thu Aug 12 20:56:23 2010
@@ -398,7 +398,7 @@ public class TestTermRangeFilter extends
   public void testFarsi() throws Exception {
     
     /* build an index */
-    MockRAMDirectory farsiIndex = new MockRAMDirectory();
+    MockRAMDirectory farsiIndex = newDirectory(rand);
     RandomIndexWriter writer = new RandomIndexWriter(rand, farsiIndex);
     Document doc = new Document();
     doc.add(new Field("content", "\u0633\u0627\u0628", Field.Store.YES,
@@ -438,7 +438,7 @@ public class TestTermRangeFilter extends
   public void testDanish() throws Exception {
     
     /* build an index */
-    MockRAMDirectory danishIndex = new MockRAMDirectory();
+    MockRAMDirectory danishIndex = newDirectory(rand);
     RandomIndexWriter writer = new RandomIndexWriter(rand, danishIndex);
     // Danish collation orders the words below in the given order
     // (example taken from TestSort.testInternationalSort() ).

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java Thu Aug 12 20:56:23 2010
@@ -20,7 +20,6 @@ package org.apache.lucene.search;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.analysis.Analyzer;
@@ -34,6 +33,7 @@ import org.apache.lucene.util.LuceneTest
 import java.io.IOException;
 import java.io.Reader;
 import java.util.Locale;
+import java.util.Random;
 import java.util.Set;
 import java.util.HashSet;
 import java.util.Arrays;
@@ -44,11 +44,19 @@ public class TestTermRangeQuery extends 
 
   private int docCount = 0;
   private MockRAMDirectory dir;
-
+  private Random random;
+  
   @Override
   protected void setUp() throws Exception {
     super.setUp();
-    dir = new MockRAMDirectory();
+    random = newRandom();
+    dir = newDirectory(random);
+  }
+  
+  @Override
+  protected void tearDown() throws Exception {
+    dir.close();
+    super.tearDown();
   }
 
   public void testExclusive() throws Exception {
@@ -333,7 +341,7 @@ public class TestTermRangeQuery extends 
   }
 
   private void initializeIndex(String[] values, Analyzer analyzer) throws IOException {
-    IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig(
+    IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(random,
         TEST_VERSION_CURRENT, analyzer).setOpenMode(OpenMode.CREATE));
     for (int i = 0; i < values.length; i++) {
       insertDoc(writer, values[i]);
@@ -342,7 +350,7 @@ public class TestTermRangeQuery extends 
   }
 
   private void addDoc(String content) throws IOException {
-    IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(MockTokenizer.WHITESPACE, false)).setOpenMode(OpenMode.APPEND));
+    IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(random, TEST_VERSION_CURRENT, new MockAnalyzer(MockTokenizer.WHITESPACE, false)).setOpenMode(OpenMode.APPEND));
     insertDoc(writer, content);
     writer.close();
   }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermScorer.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermScorer.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermScorer.java Thu Aug 12 20:56:23 2010
@@ -20,6 +20,7 @@ package org.apache.lucene.search;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Random;
 
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.document.Document;
@@ -46,9 +47,10 @@ public class TestTermScorer extends Luce
   @Override
   protected void setUp() throws Exception {
     super.setUp();
-    directory = new MockRAMDirectory();
+    Random random = newRandom();
+    directory = newDirectory(random);
     
-    RandomIndexWriter writer = new RandomIndexWriter(newRandom(), directory);
+    RandomIndexWriter writer = new RandomIndexWriter(random, directory);
     for (int i = 0; i < values.length; i++) {
       Document doc = new Document();
       doc

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermVectors.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermVectors.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermVectors.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTermVectors.java Thu Aug 12 20:56:23 2010
@@ -26,7 +26,6 @@ import org.apache.lucene.document.Field;
 import org.apache.lucene.index.*;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.English;
 
 import java.io.IOException;
@@ -38,7 +37,7 @@ import java.util.SortedSet;
 public class TestTermVectors extends LuceneTestCase {
   private IndexSearcher searcher;
   private IndexReader reader;
-  private Directory directory = new MockRAMDirectory();
+  private Directory directory;
 
   private Random random;
 
@@ -50,6 +49,7 @@ public class TestTermVectors extends Luc
   protected void setUp() throws Exception {                  
     super.setUp();
     random = newRandom();
+    directory = newDirectory(random);
     RandomIndexWriter writer = new RandomIndexWriter(random, directory, new MockAnalyzer(MockTokenizer.SIMPLE, true));
     //writer.setUseCompoundFile(true);
     //writer.infoStream = System.out;
@@ -115,7 +115,7 @@ public class TestTermVectors extends Luc
   }
   
   public void testTermVectorsFieldOrder() throws IOException {
-    Directory dir = new MockRAMDirectory();
+    Directory dir = newDirectory(random);
     RandomIndexWriter writer = new RandomIndexWriter(random, dir, new MockAnalyzer(MockTokenizer.SIMPLE, true));
     Document doc = new Document();
     doc.add(new Field("c", "some content here", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
@@ -243,7 +243,7 @@ public class TestTermVectors extends Luc
     Document testDoc4 = new Document();
     setupDoc(testDoc4, test4);
     
-    Directory dir = new MockRAMDirectory();
+    Directory dir = newDirectory(random);
     
     RandomIndexWriter writer = new RandomIndexWriter(random, dir, 
         newIndexWriterConfig(random, TEST_VERSION_CURRENT, new MockAnalyzer(MockTokenizer.SIMPLE, true))

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestThreadSafe.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestThreadSafe.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestThreadSafe.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestThreadSafe.java Thu Aug 12 20:56:23 2010
@@ -18,7 +18,6 @@ package org.apache.lucene.search;
 
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
@@ -33,10 +32,8 @@ import java.io.IOException;
 public class TestThreadSafe extends LuceneTestCase {
   Random r;
   Directory dir1;
-  Directory dir2;
 
   IndexReader ir1;
-  IndexReader ir2;
 
   String failure=null;
 
@@ -142,7 +139,7 @@ public class TestThreadSafe extends Luce
 
   public void testLazyLoadThreadSafety() throws Exception{
     r = newRandom();
-    dir1 = new MockRAMDirectory();
+    dir1 = newDirectory(r);
     // test w/ field sizes bigger than the buffer of an index input
     buildDir(dir1, 15, 5, 2000);
 
@@ -151,7 +148,9 @@ public class TestThreadSafe extends Luce
     for (int i = 0; i < num; i++) {
       ir1 = IndexReader.open(dir1, false);
       doTest(10,100);
+      ir1.close();
     }
+    dir1.close();
   }
 
 }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java Thu Aug 12 20:56:23 2010
@@ -19,6 +19,7 @@ package org.apache.lucene.search;
 
 import java.io.IOException;
 import java.util.BitSet;
+import java.util.Random;
 
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
@@ -76,8 +77,9 @@ public class TestTimeLimitingCollector e
         "blueberry strudel",
         "blueberry pizza",
     };
-    directory = new MockRAMDirectory();
-    RandomIndexWriter iw = new RandomIndexWriter(newRandom(), directory);
+    Random random = newRandom();
+    directory = newDirectory(random);
+    RandomIndexWriter iw = new RandomIndexWriter(random, directory);
     
     for (int i=0; i<N_DOCS; i++) {
       add(docText[i%docText.length], iw);

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTopDocsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTopDocsCollector.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTopDocsCollector.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTopDocsCollector.java Thu Aug 12 20:56:23 2010
@@ -18,12 +18,12 @@ package org.apache.lucene.search;
  */
 
 import java.io.IOException;
+import java.util.Random;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.LuceneTestCase;
 
 public class TestTopDocsCollector extends LuceneTestCase {
@@ -90,7 +90,7 @@ public class TestTopDocsCollector extend
   
   private static final float MAX_SCORE = 9.17561f;
   
-  private Directory dir = new MockRAMDirectory();
+  private Directory dir;
   private IndexReader reader;
 
   private TopDocsCollector<ScoreDoc> doSearch(int numResults) throws IOException {
@@ -108,7 +108,9 @@ public class TestTopDocsCollector extend
     
     // populate an index with 30 documents, this should be enough for the test.
     // The documents have no content - the test uses MatchAllDocsQuery().
-    RandomIndexWriter writer = new RandomIndexWriter(newRandom(), dir);
+    Random random = newRandom();
+    dir = newDirectory(random);
+    RandomIndexWriter writer = new RandomIndexWriter(random, dir);
     for (int i = 0; i < 30; i++) {
       writer.addDocument(new Document());
     }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTopScoreDocCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTopScoreDocCollector.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTopScoreDocCollector.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestTopScoreDocCollector.java Thu Aug 12 20:56:23 2010
@@ -24,7 +24,6 @@ import org.apache.lucene.index.IndexRead
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.LuceneTestCase;
 
 public class TestTopScoreDocCollector extends LuceneTestCase {
@@ -37,9 +36,8 @@ public class TestTopScoreDocCollector ex
   }
 
   public void testOutOfOrderCollection() throws Exception {
-
-    Directory dir = new MockRAMDirectory();
     Random random = newRandom();
+    Directory dir = newDirectory(random);
     RandomIndexWriter writer = new RandomIndexWriter(random, dir);
     for (int i = 0; i < 10; i++) {
       writer.addDocument(new Document());

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestWildcard.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestWildcard.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestWildcard.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestWildcard.java Thu Aug 12 20:56:23 2010
@@ -99,6 +99,8 @@ public class TestWildcard
       q = searcher.rewrite(wq);
       assertTrue(q instanceof ConstantScoreQuery);
       assertEquals(q.getBoost(), wq.getBoost());
+      searcher.close();
+      indexStore.close();
   }
   
   /**
@@ -114,6 +116,8 @@ public class TestWildcard
     Query q = searcher.rewrite(wq);
     assertTrue(q instanceof BooleanQuery);
     assertEquals(0, ((BooleanQuery) q).clauses().size());
+    searcher.close();
+    indexStore.close();
   }
   
   /**
@@ -134,6 +138,8 @@ public class TestWildcard
     assertMatches(searcher, wq, 2);
     assertFalse(wq.getTermsEnum(searcher.getIndexReader()) instanceof PrefixTermsEnum);
     assertFalse(wq.getTermsEnum(searcher.getIndexReader()) instanceof AutomatonTermsEnum);
+    searcher.close();
+    indexStore.close();
   }
 
   /**
@@ -171,6 +177,8 @@ public class TestWildcard
     assertMatches(searcher, new WildcardQuery(new Term("body", "*tall")), 0);
     assertMatches(searcher, new WildcardQuery(new Term("body", "*tal")), 1);
     assertMatches(searcher, new WildcardQuery(new Term("body", "*tal*")), 2);
+    searcher.close();
+    indexStore.close();
   }
 
   /**
@@ -196,11 +204,13 @@ public class TestWildcard
     assertMatches(searcher, query4, 3);
     assertMatches(searcher, query5, 0);
     assertMatches(searcher, query6, 1); // Query: 'meta??' matches 'metals' not 'metal'
+    searcher.close();
+    indexStore.close();
   }
 
   private MockRAMDirectory getIndexStore(String field, String[] contents)
       throws IOException {
-    MockRAMDirectory indexStore = new MockRAMDirectory();
+    MockRAMDirectory indexStore = newDirectory(random);
     RandomIndexWriter writer = new RandomIndexWriter(random, indexStore);
     for (int i = 0; i < contents.length; ++i) {
       Document doc = new Document();
@@ -256,7 +266,7 @@ public class TestWildcard
     };
 
     // prepare the index
-    MockRAMDirectory dir = new MockRAMDirectory();
+    MockRAMDirectory dir = newDirectory(random);
     RandomIndexWriter iw = new RandomIndexWriter(random, dir);
     for (int i = 0; i < docs.length; i++) {
       Document doc = new Document();
@@ -312,5 +322,6 @@ public class TestWildcard
     }
 
     searcher.close();
+    dir.close();
   }
 }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestWildcardRandom.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestWildcardRandom.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestWildcardRandom.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestWildcardRandom.java Thu Aug 12 20:56:23 2010
@@ -47,7 +47,7 @@ public class TestWildcardRandom extends 
   protected void setUp() throws Exception {
     super.setUp();
     random = newRandom();
-    dir = new MockRAMDirectory();
+    dir = newDirectory(random);
     RandomIndexWriter writer = new RandomIndexWriter(random, dir);
     
     Document doc = new Document();

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/FunctionTestSetup.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/FunctionTestSetup.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/FunctionTestSetup.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/FunctionTestSetup.java Thu Aug 12 20:56:23 2010
@@ -25,7 +25,6 @@ import org.apache.lucene.document.Fielda
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.LuceneTestCaseJ4;
 import org.apache.lucene.util._TestUtil;
 import java.util.Random;
@@ -85,9 +84,10 @@ public class FunctionTestSetup extends L
   @Override
   @After
   public void tearDown() throws Exception {
-    super.tearDown();
+    dir.close();
     dir = null;
     anlzr = null;
+    super.tearDown();
   }
 
   @Override
@@ -95,9 +95,9 @@ public class FunctionTestSetup extends L
   public void setUp() throws Exception {
     super.setUp();
     // prepare a small index with just a few documents.  
-    dir = new MockRAMDirectory();
-    anlzr = new MockAnalyzer();
     Random r = newRandom();
+    dir = newDirectory(r);
+    anlzr = new MockAnalyzer();
     IndexWriterConfig iwc = newIndexWriterConfig(r, TEST_VERSION_CURRENT, anlzr);
     if (doMultiSegment) {
       iwc.setMaxBufferedDocs(_TestUtil.nextInt(r, 2, 7));

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java Thu Aug 12 20:56:23 2010
@@ -281,6 +281,7 @@ public class TestCustomScoreQuery extend
     verifyResults(boost, s, 
         h1, h2CustomNeutral, h3CustomMul, h4CustomAdd, h5CustomMulAdd,
         q1, q2CustomNeutral, q3CustomMul, q4CustomAdd, q5CustomMulAdd);
+    s.close();
   }
 
   // verify results are as expected.

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestFieldScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestFieldScoreQuery.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestFieldScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestFieldScoreQuery.java Thu Aug 12 20:56:23 2010
@@ -91,6 +91,7 @@ public class TestFieldScoreQuery extends
       assertTrue("res id "+resID+" should be < prev res id "+prevID, resID.compareTo(prevID)<0);
       prevID = resID;
     }
+    s.close();
   }
 
   /** Test that FieldScoreQuery of Type.BYTE returns the expected scores. */
@@ -136,6 +137,7 @@ public class TestFieldScoreQuery extends
       float expectedScore = expectedFieldScore(id); // "ID7" --> 7.0
       assertEquals("score of " + id + " shuould be " + expectedScore + " != " + score, expectedScore, score, TEST_SCORE_TOLERANCE_DELTA);
     }
+    s.close();
   }
 
   /** Test that FieldScoreQuery of Type.BYTE caches/reuses loaded values and consumes the proper RAM resources. */
@@ -210,7 +212,7 @@ public class TestFieldScoreQuery extends
         }
       }
     }
-    
+    s.close();
     // verify new values are reloaded (not reused) for a new reader
     s = new IndexSearcher(dir, true);
     FieldScoreQuery q = new FieldScoreQuery(field,tp);
@@ -233,6 +235,7 @@ public class TestFieldScoreQuery extends
         }
       }
     }
+    s.close();
   }
 
   private String testName() {

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestOrdValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestOrdValues.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestOrdValues.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestOrdValues.java Thu Aug 12 20:56:23 2010
@@ -87,6 +87,7 @@ public class TestOrdValues extends Funct
       }
       prevID = resID;
     }
+    s.close();
   }
 
   /**
@@ -131,6 +132,7 @@ public class TestOrdValues extends Funct
               : id2String(i + 1);     // reverse  ==> smaller values first
       assertTrue("id of result " + i + " shuould be " + expectedId + " != " + score, expectedId.equals(id));
     }
+    s.close();
   }
 
   /**
@@ -217,7 +219,7 @@ public class TestOrdValues extends Funct
         }
       }
     }
-
+    s.close();
     // verify new values are reloaded (not reused) for a new reader
     s = new IndexSearcher(dir, true);
     if (inOrder) {
@@ -245,6 +247,7 @@ public class TestOrdValues extends Funct
         }
       }
     }
+    s.close();
   }
 
   private String testName() {

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestValueSource.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestValueSource.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/function/TestValueSource.java Thu Aug 12 20:56:23 2010
@@ -28,7 +28,7 @@ import org.apache.lucene.document.*;
 public class TestValueSource extends LuceneTestCase {
 
   public void testMultiValueSource() throws Exception {
-    Directory dir = new MockRAMDirectory();
+    Directory dir = newDirectory(newRandom());
     IndexWriter w = new IndexWriter(dir, new MockAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED);
     Document doc = new Document();
     Field f = new Field("field", "", Field.Store.NO, Field.Index.NOT_ANALYZED);

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java Thu Aug 12 20:56:23 2010
@@ -107,6 +107,7 @@ public class PayloadHelper {
    * @return An IndexSearcher
    * @throws IOException
    */
+  // TODO: randomize
   public IndexSearcher setUp(Similarity similarity, int numDocs) throws IOException {
     MockRAMDirectory directory = new MockRAMDirectory();
     PayloadAnalyzer analyzer = new PayloadAnalyzer();

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java Thu Aug 12 20:56:23 2010
@@ -28,7 +28,6 @@ import org.apache.lucene.analysis.tokena
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.Payload;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
@@ -42,7 +41,6 @@ import org.apache.lucene.search.spans.Sp
 import org.apache.lucene.search.spans.SpanNearQuery;
 import org.apache.lucene.search.spans.SpanTermQuery;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.English;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.search.Explanation.IDFExplanation;
@@ -106,8 +104,8 @@ public class TestPayloadNearQuery extend
   @Override
   protected void setUp() throws Exception {
     super.setUp();
-    directory = new MockRAMDirectory();
     Random random = newRandom();
+    directory = newDirectory(random);
     RandomIndexWriter writer = new RandomIndexWriter(random, directory, 
         newIndexWriterConfig(random, TEST_VERSION_CURRENT, new PayloadAnalyzer())
         .setSimilarity(similarity));

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java Thu Aug 12 20:56:23 2010
@@ -112,8 +112,8 @@ public class TestPayloadTermQuery extend
   @Override
   protected void setUp() throws Exception {
     super.setUp();
-    directory = new MockRAMDirectory();
     Random random = newRandom();
+    directory = newDirectory(random);
     RandomIndexWriter writer = new RandomIndexWriter(random, directory, 
         newIndexWriterConfig(random, TEST_VERSION_CURRENT, new PayloadAnalyzer())
         .setSimilarity(similarity));

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java Thu Aug 12 20:56:23 2010
@@ -18,6 +18,7 @@ package org.apache.lucene.search.spans;
  */
 
 import java.io.IOException;
+import java.util.Random;
 
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.analysis.MockTokenizer;
@@ -60,8 +61,9 @@ public class TestBasics extends LuceneTe
   @Override
   protected void setUp() throws Exception {
     super.setUp();
-    directory = new MockRAMDirectory();
-    RandomIndexWriter writer = new RandomIndexWriter(newRandom(), directory, 
+    Random random = newRandom();
+    directory = newDirectory(random);
+    RandomIndexWriter writer = new RandomIndexWriter(random, directory, 
         new MockAnalyzer(MockTokenizer.SIMPLE, true));
     //writer.infoStream = System.out;
     for (int i = 0; i < 1000; i++) {

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java Thu Aug 12 20:56:23 2010
@@ -18,6 +18,7 @@ package org.apache.lucene.search.spans;
  */
 
 import java.util.HashSet;
+import java.util.Random;
 import java.util.Set;
 
 import org.apache.lucene.document.Document;
@@ -31,7 +32,6 @@ import org.apache.lucene.search.IndexSea
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.QueryUtils;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.LuceneTestCase;
 
 public class TestFieldMaskingSpanQuery extends LuceneTestCase {
@@ -55,8 +55,9 @@ public class TestFieldMaskingSpanQuery e
   @Override
   protected void setUp() throws Exception {
     super.setUp();
-    directory = new MockRAMDirectory();
-    RandomIndexWriter writer= new RandomIndexWriter(newRandom(), directory);
+    Random random = newRandom();
+    directory = newDirectory(random);
+    RandomIndexWriter writer= new RandomIndexWriter(random, directory);
     
     writer.addDocument(doc(new Field[] { field("id", "0")
                                          ,

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java Thu Aug 12 20:56:23 2010
@@ -17,6 +17,8 @@ package org.apache.lucene.search.spans;
  * limitations under the License.
  */
 
+import java.util.Random;
+
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -31,7 +33,6 @@ import org.apache.lucene.search.IndexSea
 import org.apache.lucene.search.Weight;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.LuceneTestCase;
 
 public class TestNearSpansOrdered extends LuceneTestCase {
@@ -54,8 +55,9 @@ public class TestNearSpansOrdered extend
   @Override
   protected void setUp() throws Exception {
     super.setUp();
-    directory = new MockRAMDirectory();
-    RandomIndexWriter writer= new RandomIndexWriter(newRandom(), directory);
+    Random random = newRandom();
+    directory = newDirectory(random);
+    RandomIndexWriter writer= new RandomIndexWriter(random, directory);
     for (int i = 0; i < docFields.length; i++) {
       Document doc = new Document();
       doc.add(new Field(FIELD, docFields[i], Field.Store.NO, Field.Index.ANALYZED));

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java Thu Aug 12 20:56:23 2010
@@ -46,6 +46,7 @@ import org.apache.lucene.search.TermQuer
 import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.search.payloads.PayloadHelper;
 import org.apache.lucene.search.payloads.PayloadSpanUtil;
+import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.LuceneTestCase;
@@ -56,7 +57,8 @@ public class TestPayloadSpans extends Lu
   protected IndexReader indexReader;
   private IndexReader closeIndexReader;
   private Random rand;
-
+  private Directory directory;
+  
   public TestPayloadSpans(String s) {
     super(s);
   }
@@ -115,7 +117,7 @@ public class TestPayloadSpans extends Lu
 
 
 
-    MockRAMDirectory directory = new MockRAMDirectory();
+    MockRAMDirectory directory = newDirectory(rand);
     RandomIndexWriter writer = new RandomIndexWriter(rand, directory,
                                                      newIndexWriterConfig(rand, TEST_VERSION_CURRENT, new PayloadAnalyzer()).setSimilarity(similarity));
 
@@ -128,6 +130,7 @@ public class TestPayloadSpans extends Lu
 
     checkSpans(snq.getSpans(SlowMultiReaderWrapper.wrap(reader)), 1,new int[]{2});
     reader.close();
+    directory.close();
   }
   
   public void testNestedSpans() throws Exception {
@@ -184,6 +187,7 @@ public class TestPayloadSpans extends Lu
     assertTrue("spans is null and it shouldn't be", spans != null);
     checkSpans(spans, 2, new int[]{3,3});
     closeIndexReader.close();
+    directory.close();
   }
   
   public void testFirstClauseWithoutPayload() throws Exception {
@@ -215,6 +219,7 @@ public class TestPayloadSpans extends Lu
     assertTrue("spans is null and it shouldn't be", spans != null);
     checkSpans(spans, 1, new int[]{3});
     closeIndexReader.close();
+    directory.close();
   }
   
   public void testHeavilyNestedSpanQuery() throws Exception {
@@ -251,11 +256,12 @@ public class TestPayloadSpans extends Lu
     assertTrue("spans is null and it shouldn't be", spans != null);
     checkSpans(spans, 2, new int[]{8, 8});
     closeIndexReader.close();
+    directory.close();
   }
   
   public void testShrinkToAfterShortestMatch() throws CorruptIndexException,
       LockObtainFailedException, IOException {
-    MockRAMDirectory directory = new MockRAMDirectory();
+    MockRAMDirectory directory = newDirectory(rand);
     RandomIndexWriter writer = new RandomIndexWriter(rand, directory,
                                                      newIndexWriterConfig(rand, TEST_VERSION_CURRENT, new TestPayloadAnalyzer()));
 
@@ -288,11 +294,12 @@ public class TestPayloadSpans extends Lu
     assertTrue(payloadSet.contains("a:Noise:10"));
     assertTrue(payloadSet.contains("k:Noise:11"));
     reader.close();
+    directory.close();
   }
   
   public void testShrinkToAfterShortestMatch2() throws CorruptIndexException,
       LockObtainFailedException, IOException {
-    MockRAMDirectory directory = new MockRAMDirectory();
+    MockRAMDirectory directory = newDirectory(rand);
     RandomIndexWriter writer = new RandomIndexWriter(rand, directory,
                                                      newIndexWriterConfig(rand, TEST_VERSION_CURRENT, new TestPayloadAnalyzer()));
 
@@ -323,11 +330,12 @@ public class TestPayloadSpans extends Lu
     assertTrue(payloadSet.contains("a:Noise:10"));
     assertTrue(payloadSet.contains("k:Noise:11"));
     reader.close();
+    directory.close();
   }
   
   public void testShrinkToAfterShortestMatch3() throws CorruptIndexException,
       LockObtainFailedException, IOException {
-    MockRAMDirectory directory = new MockRAMDirectory();
+    MockRAMDirectory directory = newDirectory(rand);
     RandomIndexWriter writer = new RandomIndexWriter(rand, directory,
                                                      newIndexWriterConfig(rand, TEST_VERSION_CURRENT, new TestPayloadAnalyzer()));
 
@@ -364,10 +372,11 @@ public class TestPayloadSpans extends Lu
     assertTrue(payloadSet.contains("a:Noise:10"));
     assertTrue(payloadSet.contains("k:Noise:11"));
     reader.close();
+    directory.close();
   }
   
   public void testPayloadSpanUtil() throws Exception {
-    MockRAMDirectory directory = new MockRAMDirectory();
+    MockRAMDirectory directory = newDirectory(rand);
     RandomIndexWriter writer = new RandomIndexWriter(rand, directory,
                                                      newIndexWriterConfig(rand, TEST_VERSION_CURRENT, new PayloadAnalyzer()).setSimilarity(similarity));
 
@@ -389,6 +398,7 @@ public class TestPayloadSpans extends Lu
         System.out.println(new String(bytes));
     }
     reader.close();
+    directory.close();
   }
 
   private void checkSpans(Spans spans, int expectedNumSpans, int expectedNumPayloads,
@@ -425,7 +435,7 @@ public class TestPayloadSpans extends Lu
   }
   
   private IndexSearcher getSearcher() throws Exception {
-    MockRAMDirectory directory = new MockRAMDirectory();
+    directory = newDirectory(rand);
     String[] docs = new String[]{"xx rr yy mm  pp","xx yy mm rr pp", "nopayload qq ss pp np", "one two three four five six seven eight nine ten eleven", "nine one two three four five six seven eight eleven ten"};
     RandomIndexWriter writer = new RandomIndexWriter(rand, directory,
                                                      newIndexWriterConfig(rand, TEST_VERSION_CURRENT, new PayloadAnalyzer()).setSimilarity(similarity));

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java Thu Aug 12 20:56:23 2010
@@ -27,7 +27,6 @@ import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.Searcher;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexReader;
@@ -39,19 +38,22 @@ import org.apache.lucene.document.Docume
 import org.apache.lucene.document.Field;
 import org.apache.lucene.util.LuceneTestCase;
 import java.io.IOException;
+import java.util.Random;
 
 public class TestSpans extends LuceneTestCase {
   private IndexSearcher searcher;
   private IndexReader reader;
   private Directory directory;
-
+  private Random random;
+  
   public static final String field = "field";
 
   @Override
   protected void setUp() throws Exception {
     super.setUp();
-    directory = new MockRAMDirectory();
-    RandomIndexWriter writer= new RandomIndexWriter(newRandom(), directory);
+    random = newRandom();
+    directory = newDirectory(random);
+    RandomIndexWriter writer= new RandomIndexWriter(random, directory);
     for (int i = 0; i < docFields.length; i++) {
       Document doc = new Document();
       doc.add(new Field(field, docFields[i], Field.Store.YES, Field.Index.ANALYZED));
@@ -461,7 +463,7 @@ public class TestSpans extends LuceneTes
 
   // LUCENE-1404
   public void testNPESpanQuery() throws Throwable {
-    final Directory dir = new MockRAMDirectory();
+    final Directory dir = newDirectory(random);
     final IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig(
         TEST_VERSION_CURRENT, new MockAnalyzer()));
 

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java Thu Aug 12 20:56:23 2010
@@ -59,7 +59,7 @@ public class TestSpansAdvanced extends L
     super.setUp();
     random = newRandom();
     // create test index
-    mDirectory = new MockRAMDirectory();
+    mDirectory = newDirectory(random);
     final RandomIndexWriter writer = new RandomIndexWriter(random,
         mDirectory, new MockAnalyzer(MockTokenizer.SIMPLE, true,
                 MockTokenFilter.ENGLISH_STOPSET, true));

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockRAMDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockRAMDirectory.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockRAMDirectory.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockRAMDirectory.java Thu Aug 12 20:56:23 2010
@@ -281,8 +281,15 @@ public class MockRAMDirectory extends RA
       // super() does not throw IOException currently:
       throw new RuntimeException("MockRAMDirectory: cannot close: there are still open files: " + openFiles);
     }
+    open = false;
   }
 
+  boolean open = true;
+  
+  public synchronized boolean isOpen() {
+    return open;
+  }
+  
   /**
    * Objects that represent fail-able conditions. Objects of a derived
    * class are created and registered with the mock directory. After

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java Thu Aug 12 20:56:23 2010
@@ -21,8 +21,10 @@ import java.io.File;
 import java.io.PrintStream;
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.IdentityHashMap;
 import java.util.Iterator;
 import java.util.Locale;
+import java.util.Map;
 import java.util.Random;
 import java.util.ArrayList;
 import java.util.List;
@@ -39,6 +41,8 @@ import org.apache.lucene.index.codecs.Co
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.FieldCache;
 import org.apache.lucene.search.FieldCache.CacheEntry;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.FieldCacheSanityChecker.Insanity;
 
 /** 
@@ -97,7 +101,9 @@ public abstract class LuceneTestCase ext
   private Locale savedLocale;
   private TimeZone timeZone;
   private TimeZone savedTimeZone;
-  
+
+  private Map<MockRAMDirectory,StackTraceElement[]> stores;
+
   /** Used to track if setUp and tearDown are called correctly from subclasses */
   private boolean setup;
 
@@ -125,6 +131,7 @@ public abstract class LuceneTestCase ext
     super.setUp();
     assertFalse("ensure your tearDown() calls super.tearDown()!!!", setup);
     setup = true;
+    stores = new IdentityHashMap<MockRAMDirectory,StackTraceElement[]>();
     savedUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
     Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
       public void uncaughtException(Thread t, Throwable e) {
@@ -203,6 +210,15 @@ public abstract class LuceneTestCase ext
       purgeFieldCache(FieldCache.DEFAULT);
     }
 
+    // now look for unclosed resources
+    for (MockRAMDirectory d : stores.keySet()) {
+      if (d.isOpen()) {
+        StackTraceElement elements[] = stores.get(d);
+        StackTraceElement element = (elements.length > 1) ? elements[1] : null;
+        fail("directory of testcase " + getName() + " was not closed, opened from: " + element);
+      }
+    }
+    stores = null;
     super.tearDown();
   }
 
@@ -313,6 +329,20 @@ public abstract class LuceneTestCase ext
     return LuceneTestCaseJ4.newIndexWriterConfig(r, v, a);
   }
 
+  public MockRAMDirectory newDirectory(Random r) throws IOException {
+    StackTraceElement[] stack = new Exception().getStackTrace();
+    MockRAMDirectory dir = new MockRAMDirectory();
+    stores.put(dir, stack);
+    return dir;
+  }
+  
+  public MockRAMDirectory newDirectory(Random r, Directory d) throws IOException {
+    StackTraceElement[] stack = new Exception().getStackTrace();
+    MockRAMDirectory dir = new MockRAMDirectory(d);
+    stores.put(dir, stack);
+    return dir;
+  }
+  
   /** Gets a resource from the classpath as {@link File}. This method should only be used,
    * if a real file is needed. To get a stream, code should prefer
    * {@link Class#getResourceAsStream} using {@code this.getClass()}.

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCaseJ4.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCaseJ4.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCaseJ4.java Thu Aug 12 20:56:23 2010
@@ -26,6 +26,8 @@ import org.apache.lucene.index.SerialMer
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.FieldCache;
 import org.apache.lucene.search.FieldCache.CacheEntry;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.MockRAMDirectory;
 import org.apache.lucene.util.FieldCacheSanityChecker.Insanity;
 import org.apache.lucene.index.codecs.CodecProvider;
 import org.apache.lucene.index.codecs.Codec;
@@ -56,6 +58,7 @@ import java.io.File;
 import java.io.PrintStream;
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.IdentityHashMap;
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Random;
@@ -187,6 +190,8 @@ public class LuceneTestCaseJ4 {
   private static TimeZone timeZone;
   private static TimeZone savedTimeZone;
   
+  private static Map<MockRAMDirectory,StackTraceElement[]> stores;
+  
   private static final String[] TEST_CODECS = new String[] {"MockSep", "MockFixedIntBlock", "MockVariableIntBlock"};
 
   private static void swapCodec(Codec c) {
@@ -274,6 +279,7 @@ public class LuceneTestCaseJ4 {
 
   @BeforeClass
   public static void beforeClassLuceneTestCaseJ4() {
+    stores = Collections.synchronizedMap(new IdentityHashMap<MockRAMDirectory,StackTraceElement[]>());
     codec = installTestCodecs();
     savedLocale = Locale.getDefault();
     locale = TEST_LOCALE.equals("random") ? randomLocale(seedRnd) : localeForName(TEST_LOCALE);
@@ -288,6 +294,15 @@ public class LuceneTestCaseJ4 {
     removeTestCodecs(codec);
     Locale.setDefault(savedLocale);
     TimeZone.setDefault(savedTimeZone);
+    // now look for unclosed resources
+    for (MockRAMDirectory d : stores.keySet()) {
+      if (d.isOpen()) {
+        StackTraceElement elements[] = stores.get(d);
+        StackTraceElement element = (elements.length > 1) ? elements[1] : null;
+        fail("directory of test was not closed, opened from: " + element);
+      }
+    }
+    stores = null;
   }
 
   // This is how we get control when errors occur.
@@ -567,6 +582,20 @@ public class LuceneTestCaseJ4 {
     return c;
   }
 
+  public static MockRAMDirectory newDirectory(Random r) throws IOException {
+    StackTraceElement[] stack = new Exception().getStackTrace();
+    MockRAMDirectory dir = new MockRAMDirectory();
+    stores.put(dir, stack);
+    return dir;
+  }
+  
+  public static MockRAMDirectory newDirectory(Random r, Directory d) throws IOException {
+    StackTraceElement[] stack = new Exception().getStackTrace();
+    MockRAMDirectory dir = new MockRAMDirectory(d);
+    stores.put(dir, stack);
+    return dir;
+  }
+  
   /** return a random Locale from the available locales on the system */
   public static Locale randomLocale(Random random) {
     Locale locales[] = Locale.getAvailableLocales();

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java Thu Aug 12 20:56:23 2010
@@ -29,24 +29,25 @@ import org.apache.lucene.util.FieldCache
 import org.apache.lucene.util.FieldCacheSanityChecker.InsanityType;
 
 import java.io.IOException;
+import java.util.Random;
 
 public class TestFieldCacheSanityChecker extends LuceneTestCase {
 
   protected IndexReader readerA;
   protected IndexReader readerB;
   protected IndexReader readerX;
-
+  protected MockRAMDirectory dirA, dirB;
   private static final int NUM_DOCS = 1000;
 
   @Override
   protected void setUp() throws Exception {
     super.setUp();
+    Random random = newRandom();
+    dirA = newDirectory(random);
+    dirB = newDirectory(random);
 
-    MockRAMDirectory dirA = new MockRAMDirectory();
-    MockRAMDirectory dirB = new MockRAMDirectory();
-
-    IndexWriter wA = new IndexWriter(dirA, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
-    IndexWriter wB = new IndexWriter(dirB, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
+    IndexWriter wA = new IndexWriter(dirA, newIndexWriterConfig(random, TEST_VERSION_CURRENT, new MockAnalyzer()));
+    IndexWriter wB = new IndexWriter(dirB, newIndexWriterConfig(random, TEST_VERSION_CURRENT, new MockAnalyzer()));
 
     long theLong = Long.MAX_VALUE;
     double theDouble = Double.MAX_VALUE;
@@ -80,6 +81,8 @@ public class TestFieldCacheSanityChecker
     readerA.close();
     readerB.close();
     readerX.close();
+    dirA.close();
+    dirB.close();
     super.tearDown();
   }
 

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/packed/TestPackedInts.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/packed/TestPackedInts.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/packed/TestPackedInts.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/packed/TestPackedInts.java Thu Aug 12 20:56:23 2010
@@ -56,7 +56,7 @@ public class TestPackedInts extends Luce
       long ceil = 2;
       for(int nbits=1;nbits<63;nbits++) {
         final int valueCount = 100+rnd.nextInt(500);
-        final Directory d = new MockRAMDirectory();
+        final Directory d = newDirectory(rnd);
 
         IndexOutput out = d.createOutput("out.bin");
         PackedInts.Writer w = PackedInts.getWriter(
@@ -95,6 +95,7 @@ public class TestPackedInts extends Luce
         assertEquals(fp, in.getFilePointer());
         in.close();
         ceil *= 2;
+        d.close();
       }
     }
   }
@@ -208,7 +209,7 @@ public class TestPackedInts extends Luce
   }
 
   public void testSingleValue() throws Exception {
-    Directory dir = new MockRAMDirectory();
+    Directory dir = newDirectory(newRandom());
     IndexOutput out = dir.createOutput("out");
     PackedInts.Writer w = PackedInts.getWriter(out, 1, 8);
     w.add(17);

Modified: lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java (original)
+++ lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java Thu Aug 12 20:56:23 2010
@@ -40,6 +40,7 @@ import org.apache.lucene.util.AttributeS
 import org.apache.lucene.util.English;
 import java.io.IOException;
 import java.io.StringReader;
+import java.util.Random;
 
 
 /**
@@ -92,9 +93,10 @@ public class TestTeeSinkTokenFilter exte
   // TODO: instead of testing it this way, we can test 
   // with BaseTokenStreamTestCase now...
   public void testEndOffsetPositionWithTeeSinkTokenFilter() throws Exception {
-    MockRAMDirectory dir = new MockRAMDirectory();
+    Random random = newRandom();
+    MockRAMDirectory dir = newDirectory(random);
     Analyzer analyzer = new WhitespaceAnalyzer(TEST_VERSION_CURRENT);
-    IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, analyzer));
+    IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(random, TEST_VERSION_CURRENT, analyzer));
     Document doc = new Document();
     TeeSinkTokenFilter tee = new TeeSinkTokenFilter(analyzer.tokenStream("field", new StringReader("abcd   ")));
     TokenStream sink = tee.newSinkTokenStream();

Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestSort.java?rev=984968&r1=984967&r2=984968&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestSort.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestSort.java Thu Aug 12 20:56:23 2010
@@ -48,7 +48,8 @@ public class TestSort extends AbstractSo
   }
 
   public void testSort() throws Exception {
-    MockRAMDirectory dir = new MockRAMDirectory();
+    Random random = newRandom();
+    MockRAMDirectory dir = newDirectory(random);
     Document smallDoc = new Document();
     // Field id = new Field("id","0", Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS);
     Field f = new Field("f","0", Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS);
@@ -179,6 +180,8 @@ public class TestSort extends AbstractSo
           assertEquals(id, collectedDocs.get(j).doc);
         }
       }
+      searcher.close();
+      dir.close();
     }
 
   }