You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2010/12/06 01:47:28 UTC
svn commit: r1042501 [8/13] - in /lucene/dev/branches/docvalues: ./ lucene/
lucene/contrib/
lucene/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/
lucene/contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/
lucene/c...
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java Mon Dec 6 00:47:16 2010
@@ -143,9 +143,9 @@ public class TestDisjunctionMaxQuery ext
writer.addDocument(d4);
}
- r = writer.getReader();
+ r = new SlowMultiReaderWrapper(writer.getReader());
writer.close();
- s = new IndexSearcher(SlowMultiReaderWrapper.wrap(r));
+ s = new IndexSearcher(r);
s.setSimilarity(sim);
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestElevationComparator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestElevationComparator.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestElevationComparator.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestElevationComparator.java Mon Dec 6 00:47:16 2010
@@ -36,8 +36,12 @@ public class TestElevationComparator ext
//@Test
public void testSorting() throws Throwable {
Directory directory = newDirectory();
- IndexWriter writer = new IndexWriter(directory, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer()).setMaxBufferedDocs(2));
- ((LogMergePolicy) writer.getConfig().getMergePolicy()).setMergeFactor(1000);
+ IndexWriter writer = new IndexWriter(
+ directory,
+ newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).
+ setMaxBufferedDocs(2).
+ setMergePolicy(newLogMergePolicy(1000))
+ );
writer.addDocument(adoc(new String[] {"id", "a", "title", "ipod", "str_s", "a"}));
writer.addDocument(adoc(new String[] {"id", "b", "title", "ipod ipod", "str_s", "b"}));
writer.addDocument(adoc(new String[] {"id", "c", "title", "ipod ipod ipod", "str_s","c"}));
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestExplanations.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestExplanations.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestExplanations.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestExplanations.java Mon Dec 6 00:47:16 2010
@@ -165,7 +165,7 @@ public class TestExplanations extends Lu
}
/** MACRO for SpanOrQuery containing two SpanQueries */
public SpanOrQuery sor(SpanQuery s, SpanQuery e) {
- return new SpanOrQuery(new SpanQuery[] { s, e });
+ return new SpanOrQuery(s, e);
}
/** MACRO for SpanOrQuery containing three SpanTerm queries */
@@ -174,7 +174,7 @@ public class TestExplanations extends Lu
}
/** MACRO for SpanOrQuery containing two SpanQueries */
public SpanOrQuery sor(SpanQuery s, SpanQuery m, SpanQuery e) {
- return new SpanOrQuery(new SpanQuery[] { s, m, e });
+ return new SpanOrQuery(s, m, e);
}
/** MACRO for SpanNearQuery containing two SpanTerm queries */
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java Mon Dec 6 00:47:16 2010
@@ -24,6 +24,7 @@ import org.apache.lucene.search.IndexSea
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.MultiReader;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.store.Directory;
@@ -156,8 +157,8 @@ public class TestMultiTermQueryRewrites
private void checkBoosts(MultiTermQuery.RewriteMethod method) throws Exception {
final MultiTermQuery mtq = new MultiTermQuery("data") {
@Override
- protected TermsEnum getTermsEnum(IndexReader reader, AttributeSource atts) throws IOException {
- return new TermRangeTermsEnum(reader, field, "2", "7", true, true, null) {
+ protected TermsEnum getTermsEnum(Terms terms, AttributeSource atts) throws IOException {
+ return new TermRangeTermsEnum(terms.iterator(), "2", "7", true, true, null) {
final BoostAttribute boostAtt =
attributes().addAttribute(BoostAttribute.class);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestNumericRangeQuery32.java Mon Dec 6 00:47:16 2010
@@ -23,7 +23,9 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.NumericField;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.MultiFields;
import org.apache.lucene.index.RandomIndexWriter;
+import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
@@ -563,7 +565,8 @@ public class TestNumericRangeQuery32 ext
private void testEnum(int lower, int upper) throws Exception {
NumericRangeQuery<Integer> q = NumericRangeQuery.newIntRange("field4", 4,
lower, upper, true, true);
- TermsEnum termEnum = q.getTermsEnum(searcher.getIndexReader());
+ Terms terms = MultiFields.getTerms(searcher.getIndexReader(), "field4");
+ TermsEnum termEnum = q.getTermsEnum(terms);
int count = 0;
while (termEnum.next() != null) {
final BytesRef t = termEnum.term();
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java Mon Dec 6 00:47:16 2010
@@ -214,7 +214,7 @@ public class TestPhraseQuery extends Luc
Directory directory = newDirectory();
Analyzer stopAnalyzer = new MockAnalyzer(MockTokenizer.SIMPLE, true, MockTokenFilter.ENGLISH_STOPSET, false);
RandomIndexWriter writer = new RandomIndexWriter(random, directory,
- newIndexWriterConfig( Version.LUCENE_24, stopAnalyzer));
+ newIndexWriterConfig( Version.LUCENE_40, stopAnalyzer));
Document doc = new Document();
doc.add(newField("field", "the stop words are here", Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPositionIncrement.java Mon Dec 6 00:47:16 2010
@@ -243,12 +243,11 @@ public class TestPositionIncrement exten
"a a b c d e a f g h i j a b k k")));
writer.addDocument(doc);
- IndexReader r = writer.getReader();
+ IndexReader r = new SlowMultiReaderWrapper(writer.getReader());
- DocsAndPositionsEnum tp = MultiFields.getTermPositionsEnum(r,
- MultiFields.getDeletedDocs(r),
- "content",
- new BytesRef("a"));
+ DocsAndPositionsEnum tp = r.termPositionsEnum(r.getDeletedDocs(),
+ "content",
+ new BytesRef("a"));
int count = 0;
assertTrue(tp.nextDoc() != tp.NO_MORE_DOCS);
@@ -263,7 +262,7 @@ public class TestPositionIncrement exten
// only one doc has "a"
assertEquals(tp.NO_MORE_DOCS, tp.nextDoc());
- IndexSearcher is = new IndexSearcher(SlowMultiReaderWrapper.wrap(r));
+ IndexSearcher is = new IndexSearcher(r);
SpanTermQuery stq1 = new SpanTermQuery(new Term("content", "a"));
SpanTermQuery stq2 = new SpanTermQuery(new Term("content", "k"));
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPrefixQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPrefixQuery.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPrefixQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPrefixQuery.java Mon Dec 6 00:47:16 2010
@@ -20,8 +20,10 @@ package org.apache.lucene.search;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.MultiFields;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.Terms;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
@@ -54,7 +56,8 @@ public class TestPrefixQuery extends Luc
assertEquals("One in /Computers/Mac", 1, hits.length);
query = new PrefixQuery(new Term("category", ""));
- assertFalse(query.getTermsEnum(searcher.getIndexReader()) instanceof PrefixTermsEnum);
+ Terms terms = MultiFields.getTerms(searcher.getIndexReader(), "category");
+ assertFalse(query.getTermsEnum(terms) instanceof PrefixTermsEnum);
hits = searcher.search(query, null, 1000).scoreDocs;
assertEquals("everything", 3, hits.length);
writer.close();
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPrefixRandom.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPrefixRandom.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPrefixRandom.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPrefixRandom.java Mon Dec 6 00:47:16 2010
@@ -25,6 +25,7 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.codecs.CodecProvider;
@@ -57,7 +58,7 @@ public class TestPrefixRandom extends Lu
// we generate aweful prefixes: good for testing.
// but for preflex codec, the test can be very slow, so use less iterations.
- String codec = CodecProvider.getDefaultCodec();
+ final String codec = CodecProvider.getDefault().getFieldCodec("field");
int num = codec.equals("PreFlex") ? 200 * RANDOM_MULTIPLIER : 2000 * RANDOM_MULTIPLIER;
for (int i = 0; i < num; i++) {
field.setValue(_TestUtil.randomUnicodeString(random, 10));
@@ -86,16 +87,15 @@ public class TestPrefixRandom extends Lu
}
@Override
- protected TermsEnum getTermsEnum(IndexReader reader, AttributeSource atts) throws IOException {
- return new SimplePrefixTermsEnum(reader, field, prefix);
+ protected TermsEnum getTermsEnum(Terms terms, AttributeSource atts) throws IOException {
+ return new SimplePrefixTermsEnum(terms.iterator(), prefix);
}
private class SimplePrefixTermsEnum extends FilteredTermsEnum {
private final BytesRef prefix;
- private SimplePrefixTermsEnum(IndexReader reader,
- String field, BytesRef prefix) throws IOException {
- super(reader, field);
+ private SimplePrefixTermsEnum(TermsEnum tenum, BytesRef prefix) throws IOException {
+ super(tenum);
this.prefix = prefix;
setInitialSeekTerm(new BytesRef(""));
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestRegexpQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestRegexpQuery.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestRegexpQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestRegexpQuery.java Mon Dec 6 00:47:16 2010
@@ -99,9 +99,9 @@ public class TestRegexpQuery extends Luc
AutomatonProvider myProvider = new AutomatonProvider() {
// automaton that matches quick or brown
private Automaton quickBrownAutomaton = BasicOperations.union(Arrays
- .asList(new Automaton[] {BasicAutomata.makeString("quick"),
- BasicAutomata.makeString("brown"),
- BasicAutomata.makeString("bob")}));
+ .asList(BasicAutomata.makeString("quick"),
+ BasicAutomata.makeString("brown"),
+ BasicAutomata.makeString("bob")));
public Automaton getAutomaton(String name) throws IOException {
if (name.equals("quickBrown")) return quickBrownAutomaton;
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestRegexpRandom2.java Mon Dec 6 00:47:16 2010
@@ -27,7 +27,9 @@ import org.apache.lucene.analysis.MockTo
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.MultiFields;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.codecs.CodecProvider;
@@ -58,7 +60,6 @@ public class TestRegexpRandom2 extends L
RandomIndexWriter writer = new RandomIndexWriter(random, dir,
newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(MockTokenizer.KEYWORD, false))
.setMaxBufferedDocs(_TestUtil.nextInt(random, 50, 1000)));
-
Document doc = new Document();
Field field = newField("field", "", Field.Store.NO, Field.Index.NOT_ANALYZED);
doc.add(field);
@@ -104,16 +105,16 @@ public class TestRegexpRandom2 extends L
}
@Override
- protected TermsEnum getTermsEnum(IndexReader reader, AttributeSource atts) throws IOException {
- return new SimpleAutomatonTermsEnum(reader, field);
+ protected TermsEnum getTermsEnum(Terms terms, AttributeSource atts) throws IOException {
+ return new SimpleAutomatonTermsEnum(terms.iterator());
}
private class SimpleAutomatonTermsEnum extends FilteredTermsEnum {
CharacterRunAutomaton runAutomaton = new CharacterRunAutomaton(automaton);
UnicodeUtil.UTF16Result utf16 = new UnicodeUtil.UTF16Result();
- private SimpleAutomatonTermsEnum(IndexReader reader, String field) throws IOException {
- super(reader, field);
+ private SimpleAutomatonTermsEnum(TermsEnum tenum) throws IOException {
+ super(tenum);
setInitialSeekTerm(new BytesRef(""));
}
@@ -135,8 +136,7 @@ public class TestRegexpRandom2 extends L
public void testRegexps() throws Exception {
// we generate aweful regexps: good for testing.
// but for preflex codec, the test can be very slow, so use less iterations.
- String codec = CodecProvider.getDefaultCodec();
- int num = codec.equals("PreFlex") ? 100 * RANDOM_MULTIPLIER : 1000 * RANDOM_MULTIPLIER;
+ int num = CodecProvider.getDefault().getFieldCodec("field").equals("PreFlex") ? 100 * RANDOM_MULTIPLIER : 1000 * RANDOM_MULTIPLIER;
for (int i = 0; i < num; i++) {
String reg = AutomatonTestUtil.randomRegexp(random);
assertSame(reg);
@@ -155,7 +155,10 @@ public class TestRegexpRandom2 extends L
// a\uda07* prefixquery. Prefixquery then does the "wrong" thing, which
// isn't really wrong as the query was undefined to begin with... but not
// automatically comparable.
- if (!(smart.getTermsEnum(searcher.getIndexReader()) instanceof AutomatonTermsEnum))
+
+ // TODO: does this check even matter anymore?!
+ Terms terms = MultiFields.getTerms(searcher.getIndexReader(), "field");
+ if (!(smart.getTermsEnum(terms) instanceof AutomatonTermsEnum))
return;
TopDocs smartDocs = searcher.search(smart, 25);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestSort.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestSort.java Mon Dec 6 00:47:16 2010
@@ -26,9 +26,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
@@ -155,9 +152,12 @@ public class TestSort extends LuceneTest
private IndexSearcher getFullStrings() throws CorruptIndexException, LockObtainFailedException, IOException {
Directory indexStore = newDirectory();
dirs.add(indexStore);
- IndexWriter writer = new IndexWriter(indexStore, new IndexWriterConfig(
- TEST_VERSION_CURRENT, new MockAnalyzer()).setMaxBufferedDocs(4));
- ((LogMergePolicy) writer.getConfig().getMergePolicy()).setMergeFactor(97);
+ IndexWriter writer = new IndexWriter(
+ indexStore,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).
+ setMaxBufferedDocs(4).
+ setMergePolicy(newLogMergePolicy(97))
+ );
for (int i=0; i<NUM_STRINGS; i++) {
Document doc = new Document();
String num = getRandomCharString(getRandomNumber(2, 8), 48, 52);
@@ -597,7 +597,7 @@ public class TestSort extends LuceneTest
assertMatches (full, queryG, sort, "ZYXW");
// Do the same for a MultiSearcher
- Searcher multiSearcher=new MultiSearcher (new Searchable[] { full });
+ Searcher multiSearcher=new MultiSearcher (full);
sort.setSort (new SortField ("int", SortField.INT),
new SortField ("string", SortField.STRING),
@@ -611,7 +611,7 @@ public class TestSort extends LuceneTest
// Don't close the multiSearcher. it would close the full searcher too!
// Do the same for a ParallelMultiSearcher
- Searcher parallelSearcher=new ParallelMultiSearcher (new Searchable[] { full });
+ Searcher parallelSearcher=new ParallelMultiSearcher (full);
sort.setSort (new SortField ("int", SortField.INT),
new SortField ("string", SortField.STRING),
@@ -670,7 +670,7 @@ public class TestSort extends LuceneTest
// Test the MultiSearcher's ability to preserve locale-sensitive ordering
// by wrapping it around a single searcher
public void testInternationalMultiSearcherSort() throws Exception {
- Searcher multiSearcher = new MultiSearcher (new Searchable[] { full });
+ Searcher multiSearcher = new MultiSearcher (full);
sort.setSort (new SortField ("i18n", new Locale("sv", "se")));
assertMatches (multiSearcher, queryY, sort, "BJDFH");
@@ -684,13 +684,13 @@ public class TestSort extends LuceneTest
// test a variety of sorts using more than one searcher
public void testMultiSort() throws Exception {
- MultiSearcher searcher = new MultiSearcher (new Searchable[] { searchX, searchY });
+ MultiSearcher searcher = new MultiSearcher (searchX, searchY);
runMultiSorts(searcher, false);
}
// test a variety of sorts using a parallel multisearcher
public void testParallelMultiSort() throws Exception {
- Searcher searcher = new ParallelMultiSearcher (new Searchable[] { searchX, searchY });
+ Searcher searcher = new ParallelMultiSearcher (searchX, searchY);
runMultiSorts(searcher, false);
}
@@ -705,7 +705,7 @@ public class TestSort extends LuceneTest
// we'll test searching locally, remote and multi
- MultiSearcher multi = new MultiSearcher (new Searchable[] { searchX, searchY });
+ MultiSearcher multi = new MultiSearcher (searchX, searchY);
// change sorting and make sure relevancy stays the same
@@ -1101,7 +1101,7 @@ public class TestSort extends LuceneTest
private void assertMatches(String msg, Searcher searcher, Query query, Sort sort,
String expectedResult) throws IOException {
//ScoreDoc[] result = searcher.search (query, null, 1000, sort).scoreDocs;
- TopDocs hits = searcher.search (query, null, expectedResult.length(), sort);
+ TopDocs hits = searcher.search (query, null, Math.max(1, expectedResult.length()), sort);
ScoreDoc[] result = hits.scoreDocs;
assertEquals(expectedResult.length(),hits.totalHits);
StringBuilder buff = new StringBuilder(10);
@@ -1194,4 +1194,23 @@ public class TestSort extends LuceneTest
indexStore.close();
}
+ public void testCountingCollector() throws Exception {
+ Directory indexStore = newDirectory();
+ RandomIndexWriter writer = new RandomIndexWriter(random, indexStore);
+ for (int i=0; i<5; i++) {
+ Document doc = new Document();
+ doc.add (new Field ("string", "a"+i, Field.Store.NO, Field.Index.NOT_ANALYZED));
+ doc.add (new Field ("string", "b"+i, Field.Store.NO, Field.Index.NOT_ANALYZED));
+ writer.addDocument (doc);
+ }
+ IndexReader reader = writer.getReader();
+ writer.close();
+
+ IndexSearcher searcher = new IndexSearcher(reader);
+ TotalHitCountCollector c = new TotalHitCountCollector();
+ searcher.search(new MatchAllDocsQuery(), null, c);
+ assertEquals(5, c.getTotalHits());
+ reader.close();
+ indexStore.close();
+ }
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestSpanQueryFilter.java Mon Dec 6 00:47:16 2010
@@ -45,7 +45,7 @@ public class TestSpanQueryFilter extends
SpanTermQuery query = new SpanTermQuery(new Term("field", English.intToEnglish(10).trim()));
SpanQueryFilter filter = new SpanQueryFilter(query);
- SpanFilterResult result = filter.bitSpans(SlowMultiReaderWrapper.wrap(reader));
+ SpanFilterResult result = filter.bitSpans(new SlowMultiReaderWrapper(reader));
DocIdSet docIdSet = result.getDocIdSet();
assertTrue("docIdSet is null and it shouldn't be", docIdSet != null);
assertContainsDocId("docIdSet doesn't contain docId 10", docIdSet, 10);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestTermRangeQuery.java Mon Dec 6 00:47:16 2010
@@ -17,26 +17,22 @@ package org.apache.lucene.search;
* limitations under the License.
*/
+import java.io.IOException;
+import java.io.Reader;
+import java.text.Collator;
+import java.util.Locale;
+import java.util.Set;
+
+import org.apache.lucene.analysis.*;
+import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.MultiFields;
+import org.apache.lucene.index.Terms;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.analysis.MockTokenizer;
-import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
-
import org.apache.lucene.util.LuceneTestCase;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.Locale;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Arrays;
-import java.text.Collator;
public class TestTermRangeQuery extends LuceneTestCase {
@@ -103,17 +99,18 @@ public class TestTermRangeQuery extends
initializeIndex(new String[]{"A", "B", "C", "D"});
IndexSearcher searcher = new IndexSearcher(dir, true);
TermRangeQuery query = new TermRangeQuery("content", null, null, true, true);
- assertFalse(query.getTermsEnum(searcher.getIndexReader()) instanceof TermRangeTermsEnum);
+ Terms terms = MultiFields.getTerms(searcher.getIndexReader(), "content");
+ assertFalse(query.getTermsEnum(terms) instanceof TermRangeTermsEnum);
assertEquals(4, searcher.search(query, null, 1000).scoreDocs.length);
query = new TermRangeQuery("content", null, null, false, false);
- assertFalse(query.getTermsEnum(searcher.getIndexReader()) instanceof TermRangeTermsEnum);
+ assertFalse(query.getTermsEnum(terms) instanceof TermRangeTermsEnum);
assertEquals(4, searcher.search(query, null, 1000).scoreDocs.length);
query = new TermRangeQuery("content", "", null, true, false);
- assertFalse(query.getTermsEnum(searcher.getIndexReader()) instanceof TermRangeTermsEnum);
+ assertFalse(query.getTermsEnum(terms) instanceof TermRangeTermsEnum);
assertEquals(4, searcher.search(query, null, 1000).scoreDocs.length);
// and now anothe one
query = new TermRangeQuery("content", "B", null, true, false);
- assertTrue(query.getTermsEnum(searcher.getIndexReader()) instanceof TermRangeTermsEnum);
+ assertTrue(query.getTermsEnum(terms) instanceof TermRangeTermsEnum);
assertEquals(3, searcher.search(query, null, 1000).scoreDocs.length);
searcher.close();
}
@@ -140,7 +137,7 @@ public class TestTermRangeQuery extends
private void checkBooleanTerms(Searcher searcher, TermRangeQuery query, String... terms) throws IOException {
query.setRewriteMethod(new MultiTermQuery.TopTermsScoringBooleanQueryRewrite(50));
final BooleanQuery bq = (BooleanQuery) searcher.rewrite(query);
- final Set<String> allowedTerms = new HashSet<String>(Arrays.asList(terms));
+ final Set<String> allowedTerms = asSet(terms);
assertEquals(allowedTerms.size(), bq.clauses().size());
for (BooleanClause c : bq.clauses()) {
assertTrue(c.getQuery() instanceof TermQuery);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestTermScorer.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestTermScorer.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestTermScorer.java Mon Dec 6 00:47:16 2010
@@ -52,9 +52,9 @@ public class TestTermScorer extends Luce
Field.Index.ANALYZED));
writer.addDocument(doc);
}
- indexReader = writer.getReader();
+ indexReader = new SlowMultiReaderWrapper(writer.getReader());
writer.close();
- indexSearcher = new IndexSearcher(SlowMultiReaderWrapper.wrap(indexReader));
+ indexSearcher = new IndexSearcher(indexReader);
}
@Override
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestWildcard.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestWildcard.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestWildcard.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestWildcard.java Mon Dec 6 00:47:16 2010
@@ -24,8 +24,10 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.Field.Index;
+import org.apache.lucene.index.MultiFields;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.Terms;
import org.apache.lucene.queryParser.QueryParser;
import java.io.IOException;
@@ -128,13 +130,13 @@ public class TestWildcard
MultiTermQuery wq = new WildcardQuery(new Term("field", "prefix*"));
assertMatches(searcher, wq, 2);
-
- assertTrue(wq.getTermsEnum(searcher.getIndexReader()) instanceof PrefixTermsEnum);
+ Terms terms = MultiFields.getTerms(searcher.getIndexReader(), "field");
+ assertTrue(wq.getTermsEnum(terms) instanceof PrefixTermsEnum);
wq = new WildcardQuery(new Term("field", "*"));
assertMatches(searcher, wq, 2);
- assertFalse(wq.getTermsEnum(searcher.getIndexReader()) instanceof PrefixTermsEnum);
- assertFalse(wq.getTermsEnum(searcher.getIndexReader()) instanceof AutomatonTermsEnum);
+ assertFalse(wq.getTermsEnum(terms) instanceof PrefixTermsEnum);
+ assertFalse(wq.getTermsEnum(terms) instanceof AutomatonTermsEnum);
searcher.close();
indexStore.close();
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java Mon Dec 6 00:47:16 2010
@@ -122,7 +122,7 @@ public class TestCustomScoreQuery extend
private static class CustomMulAddQuery extends CustomScoreQuery {
// constructor
CustomMulAddQuery(Query q, ValueSourceQuery qValSrc1, ValueSourceQuery qValSrc2) {
- super(q, new ValueSourceQuery[]{qValSrc1, qValSrc2});
+ super(q, qValSrc1, qValSrc2);
}
/*(non-Javadoc) @see org.apache.lucene.search.function.CustomScoreQuery#name() */
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestValueSource.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestValueSource.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestValueSource.java Mon Dec 6 00:47:16 2010
@@ -28,7 +28,7 @@ public class TestValueSource extends Luc
public void testMultiValueSource() throws Exception {
Directory dir = newDirectory();
- IndexWriter w = new IndexWriter(dir, new MockAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED);
+ IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
Document doc = new Document();
Field f = newField("field", "", Field.Store.NO, Field.Index.NOT_ANALYZED);
doc.add(f);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java Mon Dec 6 00:47:16 2010
@@ -127,10 +127,10 @@ public class PayloadHelper {
doc.add(new Field(NO_PAYLOAD_FIELD, English.intToEnglish(i), Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
}
- reader = IndexReader.open(writer);
+ reader = new SlowMultiReaderWrapper(IndexReader.open(writer));
writer.close();
- IndexSearcher searcher = new IndexSearcher(SlowMultiReaderWrapper.wrap(reader));
+ IndexSearcher searcher = new IndexSearcher(reader);
searcher.setSimilarity(similarity);
return searcher;
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java Mon Dec 6 00:47:16 2010
@@ -121,10 +121,10 @@ public class TestPayloadTermQuery extend
doc.add(newField("multiField", English.intToEnglish(i) + " " + English.intToEnglish(i), Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
}
- reader = writer.getReader();
+ reader = new SlowMultiReaderWrapper(writer.getReader());
writer.close();
- searcher = new IndexSearcher(SlowMultiReaderWrapper.wrap(reader));
+ searcher = new IndexSearcher(reader);
searcher.setSimilarity(similarity);
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java Mon Dec 6 00:47:16 2010
@@ -80,7 +80,7 @@ public class TestBasics extends LuceneTe
writer.addDocument(doc);
}
reader = writer.getReader();
- searcher = new IndexSearcher(SlowMultiReaderWrapper.wrap(reader));
+ searcher = new IndexSearcher(reader);
writer.close();
}
@@ -227,7 +227,7 @@ public class TestBasics extends LuceneTe
4, true);
SpanTermQuery term3 = new SpanTermQuery(new Term("field", "forty"));
- SpanOrQuery or = new SpanOrQuery(new SpanQuery[] {term3});
+ SpanOrQuery or = new SpanOrQuery(term3);
SpanNotQuery query = new SpanNotQuery(near, or);
@@ -249,7 +249,7 @@ public class TestBasics extends LuceneTe
SpanTermQuery term4 = new SpanTermQuery(new Term("field", "sixty"));
SpanTermQuery term5 = new SpanTermQuery(new Term("field", "eighty"));
- SpanOrQuery or = new SpanOrQuery(new SpanQuery[] {term3, term4, term5});
+ SpanOrQuery or = new SpanOrQuery(term3, term4, term5);
SpanNotQuery query = new SpanNotQuery(near, or);
@@ -436,7 +436,7 @@ public class TestBasics extends LuceneTe
SpanNearQuery near2 = new SpanNearQuery(new SpanQuery[] {term3, term4},
0, true);
- SpanOrQuery query = new SpanOrQuery(new SpanQuery[] {near1, near2});
+ SpanOrQuery query = new SpanOrQuery(near1, near2);
checkHits(query, new int[]
{33, 47, 133, 147, 233, 247, 333, 347, 433, 447, 533, 547, 633, 647, 733,
@@ -475,8 +475,8 @@ public class TestBasics extends LuceneTe
SpanTermQuery t5 = new SpanTermQuery(new Term("field","seven"));
SpanTermQuery t6 = new SpanTermQuery(new Term("field","six"));
- SpanOrQuery to1 = new SpanOrQuery(new SpanQuery[] {t1, t3});
- SpanOrQuery to2 = new SpanOrQuery(new SpanQuery[] {t5, t6});
+ SpanOrQuery to1 = new SpanOrQuery(t1, t3);
+ SpanOrQuery to2 = new SpanOrQuery(t5, t6);
SpanNearQuery query = new SpanNearQuery(new SpanQuery[] {to1, to2},
10, true);
@@ -505,8 +505,8 @@ public class TestBasics extends LuceneTe
SpanTermQuery t5 = new SpanTermQuery(new Term("field","seven"));
SpanTermQuery t6 = new SpanTermQuery(new Term("field","six"));
- SpanOrQuery to1 = new SpanOrQuery(new SpanQuery[] {tt1, tt2});
- SpanOrQuery to2 = new SpanOrQuery(new SpanQuery[] {t5, t6});
+ SpanOrQuery to1 = new SpanOrQuery(tt1, tt2);
+ SpanOrQuery to2 = new SpanOrQuery(t5, t6);
SpanNearQuery query = new SpanNearQuery(new SpanQuery[] {to1, to2},
100, true);
@@ -524,8 +524,8 @@ public class TestBasics extends LuceneTe
public void testSpansSkipTo() throws Exception {
SpanTermQuery t1 = new SpanTermQuery(new Term("field", "seventy"));
SpanTermQuery t2 = new SpanTermQuery(new Term("field", "seventy"));
- Spans s1 = t1.getSpans(searcher.getIndexReader());
- Spans s2 = t2.getSpans(searcher.getIndexReader());
+ Spans s1 = t1.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
+ Spans s2 = t2.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
assertTrue(s1.next());
assertTrue(s2.next());
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java Mon Dec 6 00:47:16 2010
@@ -112,7 +112,7 @@ public class TestFieldMaskingSpanQuery e
field("last", "jones") }));
reader = writer.getReader();
writer.close();
- searcher = new IndexSearcher(SlowMultiReaderWrapper.wrap(reader));
+ searcher = new IndexSearcher(reader);
}
@Override
@@ -146,9 +146,8 @@ public class TestFieldMaskingSpanQuery e
(new SpanTermQuery(new Term("last", "sally")) {
@Override
public Query rewrite(IndexReader reader) {
- return new SpanOrQuery(new SpanQuery[] {
- new SpanTermQuery(new Term("first", "sally")),
- new SpanTermQuery(new Term("first", "james")) });
+ return new SpanOrQuery(new SpanTermQuery(new Term("first", "sally")),
+ new SpanTermQuery(new Term("first", "james")));
}
}, "first");
@@ -252,11 +251,10 @@ public class TestFieldMaskingSpanQuery e
public void testSpans0() throws Exception {
SpanQuery q1 = new SpanTermQuery(new Term("gender", "female"));
SpanQuery q2 = new SpanTermQuery(new Term("first", "james"));
- SpanQuery q = new SpanOrQuery(new SpanQuery[]
- { q1, new FieldMaskingSpanQuery(q2, "gender")});
+ SpanQuery q = new SpanOrQuery(q1, new FieldMaskingSpanQuery(q2, "gender"));
check(q, new int[] { 0, 1, 2, 3, 4 });
- Spans span = q.getSpans(searcher.getIndexReader());
+ Spans span = q.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
assertEquals(true, span.next());
assertEquals(s(0,0,1), s(span));
@@ -291,14 +289,14 @@ public class TestFieldMaskingSpanQuery e
public void testSpans1() throws Exception {
SpanQuery q1 = new SpanTermQuery(new Term("first", "sally"));
SpanQuery q2 = new SpanTermQuery(new Term("first", "james"));
- SpanQuery qA = new SpanOrQuery(new SpanQuery[] { q1, q2 });
+ SpanQuery qA = new SpanOrQuery(q1, q2);
SpanQuery qB = new FieldMaskingSpanQuery(qA, "id");
check(qA, new int[] { 0, 1, 2, 4 });
check(qB, new int[] { 0, 1, 2, 4 });
- Spans spanA = qA.getSpans(searcher.getIndexReader());
- Spans spanB = qB.getSpans(searcher.getIndexReader());
+ Spans spanA = qA.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
+ Spans spanB = qB.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
while (spanA.next()) {
assertTrue("spanB not still going", spanB.next());
@@ -311,15 +309,14 @@ public class TestFieldMaskingSpanQuery e
public void testSpans2() throws Exception {
SpanQuery qA1 = new SpanTermQuery(new Term("gender", "female"));
SpanQuery qA2 = new SpanTermQuery(new Term("first", "james"));
- SpanQuery qA = new SpanOrQuery(new SpanQuery[]
- { qA1, new FieldMaskingSpanQuery(qA2, "gender")});
+ SpanQuery qA = new SpanOrQuery(qA1, new FieldMaskingSpanQuery(qA2, "gender"));
SpanQuery qB = new SpanTermQuery(new Term("last", "jones"));
SpanQuery q = new SpanNearQuery(new SpanQuery[]
{ new FieldMaskingSpanQuery(qA, "id"),
new FieldMaskingSpanQuery(qB, "id") }, -1, false );
check(q, new int[] { 0, 1, 2, 3 });
- Spans span = q.getSpans(searcher.getIndexReader());
+ Spans span = q.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
assertEquals(true, span.next());
assertEquals(s(0,0,1), s(span));
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java Mon Dec 6 00:47:16 2010
@@ -60,9 +60,9 @@ public class TestNearSpansOrdered extend
doc.add(newField(FIELD, docFields[i], Field.Store.NO, Field.Index.ANALYZED));
writer.addDocument(doc);
}
- reader = writer.getReader();
+ reader = new SlowMultiReaderWrapper(writer.getReader());
writer.close();
- searcher = new IndexSearcher(SlowMultiReaderWrapper.wrap(reader));
+ searcher = new IndexSearcher(reader);
}
protected String[] docFields = {
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java Mon Dec 6 00:47:16 2010
@@ -120,7 +120,7 @@ public class TestPayloadSpans extends Lu
IndexReader reader = writer.getReader();
writer.close();
- checkSpans(snq.getSpans(SlowMultiReaderWrapper.wrap(reader)), 1,new int[]{2});
+ checkSpans(snq.getSpans(new SlowMultiReaderWrapper(reader)), 1,new int[]{2});
reader.close();
directory.close();
}
@@ -261,8 +261,8 @@ public class TestPayloadSpans extends Lu
doc.add(new Field("content", new StringReader("a b c d e f g h i j a k")));
writer.addDocument(doc);
- IndexReader reader = writer.getReader();
- IndexSearcher is = new IndexSearcher(SlowMultiReaderWrapper.wrap(reader));
+ IndexReader reader = new SlowMultiReaderWrapper(writer.getReader());
+ IndexSearcher is = new IndexSearcher(reader);
writer.close();
SpanTermQuery stq1 = new SpanTermQuery(new Term("content", "a"));
@@ -298,8 +298,8 @@ public class TestPayloadSpans extends Lu
Document doc = new Document();
doc.add(new Field("content", new StringReader("a b a d k f a h i k a k")));
writer.addDocument(doc);
- IndexReader reader = writer.getReader();
- IndexSearcher is = new IndexSearcher(SlowMultiReaderWrapper.wrap(reader));
+ IndexReader reader = new SlowMultiReaderWrapper(writer.getReader());
+ IndexSearcher is = new IndexSearcher(reader);
writer.close();
SpanTermQuery stq1 = new SpanTermQuery(new Term("content", "a"));
@@ -334,8 +334,8 @@ public class TestPayloadSpans extends Lu
Document doc = new Document();
doc.add(new Field("content", new StringReader("j k a l f k k p a t a k l k t a")));
writer.addDocument(doc);
- IndexReader reader = writer.getReader();
- IndexSearcher is = new IndexSearcher(SlowMultiReaderWrapper.wrap(reader));
+ IndexReader reader = new SlowMultiReaderWrapper(writer.getReader());
+ IndexSearcher is = new IndexSearcher(reader);
writer.close();
SpanTermQuery stq1 = new SpanTermQuery(new Term("content", "a"));
@@ -376,9 +376,9 @@ public class TestPayloadSpans extends Lu
doc.add(newField(PayloadHelper.FIELD,"xx rr yy mm pp", Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
- IndexReader reader = writer.getReader();
+ IndexReader reader = new SlowMultiReaderWrapper(writer.getReader());
writer.close();
- IndexSearcher searcher = new IndexSearcher(SlowMultiReaderWrapper.wrap(reader));
+ IndexSearcher searcher = new IndexSearcher(reader);
PayloadSpanUtil psu = new PayloadSpanUtil(searcher.getIndexReader());
@@ -440,10 +440,10 @@ public class TestPayloadSpans extends Lu
writer.addDocument(doc);
}
- closeIndexReader = writer.getReader();
+ closeIndexReader = new SlowMultiReaderWrapper(writer.getReader());
writer.close();
- IndexSearcher searcher = new IndexSearcher(SlowMultiReaderWrapper.wrap(closeIndexReader));
+ IndexSearcher searcher = new IndexSearcher(closeIndexReader);
return searcher;
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java Mon Dec 6 00:47:16 2010
@@ -196,7 +196,7 @@ public class TestSpans extends LuceneTes
makeSpanTermQuery("t3") },
slop,
ordered);
- Spans spans = snq.getSpans(SlowMultiReaderWrapper.wrap(searcher.getIndexReader()));
+ Spans spans = snq.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
assertTrue("first range", spans.next());
assertEquals("first doc", 11, spans.doc());
@@ -222,7 +222,7 @@ public class TestSpans extends LuceneTes
makeSpanTermQuery("u2") },
0,
false);
- Spans spans = snq.getSpans(SlowMultiReaderWrapper.wrap(searcher.getIndexReader()));
+ Spans spans = snq.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
assertTrue("Does not have next and it should", spans.next());
assertEquals("doc", 4, spans.doc());
assertEquals("start", 1, spans.start());
@@ -258,7 +258,7 @@ public class TestSpans extends LuceneTes
},
1,
false);
- spans = snq.getSpans(SlowMultiReaderWrapper.wrap(searcher.getIndexReader()));
+ spans = snq.getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
assertTrue("Does not have next and it should", spans.next());
assertEquals("doc", 4, spans.doc());
assertEquals("start", 0, spans.start());
@@ -316,7 +316,7 @@ public class TestSpans extends LuceneTes
for (int i = 0; i < terms.length; i++) {
sqa[i] = makeSpanTermQuery(terms[i]);
}
- return (new SpanOrQuery(sqa)).getSpans(SlowMultiReaderWrapper.wrap(searcher.getIndexReader()));
+ return (new SpanOrQuery(sqa)).getSpans(new SlowMultiReaderWrapper(searcher.getIndexReader()));
}
private void tstNextSpans(Spans spans, int doc, int start, int end)
@@ -331,8 +331,8 @@ public class TestSpans extends LuceneTes
Spans spans = orSpans(new String[0]);
assertFalse("empty next", spans.next());
- SpanOrQuery a = new SpanOrQuery( new SpanQuery[0] );
- SpanOrQuery b = new SpanOrQuery( new SpanQuery[0] );
+ SpanOrQuery a = new SpanOrQuery();
+ SpanOrQuery b = new SpanOrQuery();
assertTrue("empty should equal", a.equals(b));
}
@@ -421,7 +421,7 @@ public class TestSpans extends LuceneTes
}
};
- Scorer spanScorer = snq.weight(searcher).scorer(SlowMultiReaderWrapper.wrap(searcher.getIndexReader()), true, false);
+ Scorer spanScorer = snq.weight(searcher).scorer(new SlowMultiReaderWrapper(searcher.getIndexReader()), true, false);
assertTrue("first doc", spanScorer.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertEquals("first doc number", spanScorer.docID(), 11);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java Mon Dec 6 00:47:16 2010
@@ -80,7 +80,10 @@ public class MockDirectoryWrapper extend
public MockDirectoryWrapper(Random random, Directory delegate) {
this.delegate = delegate;
- this.randomState = random;
+ // must make a private random since our methods are
+ // called from different threads; else test failures may
+ // not be reproducible from the original seed
+ this.randomState = new Random(random.nextInt());
init();
}
@@ -94,17 +97,6 @@ public class MockDirectoryWrapper extend
preventDoubleWrite = value;
}
- @Deprecated
- @Override
- public void sync(String name) throws IOException {
- maybeYield();
- maybeThrowDeterministicException();
- if (crashed)
- throw new IOException("cannot sync after crash");
- unSyncedFiles.remove(name);
- delegate.sync(name);
- }
-
@Override
public synchronized void sync(Collection<String> names) throws IOException {
maybeYield();
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexOutputWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexOutputWrapper.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexOutputWrapper.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexOutputWrapper.java Mon Dec 6 00:47:16 2010
@@ -90,14 +90,19 @@ public class MockIndexOutputWrapper exte
}
if (dir.maxSize != 0 && freeSpace <= len) {
- if (freeSpace > 0 && freeSpace < len) {
+ if (freeSpace > 0) {
realUsage += freeSpace;
delegate.writeBytes(b, offset, (int) freeSpace);
}
if (realUsage > dir.maxUsedSize) {
dir.maxUsedSize = realUsage;
}
- throw new IOException("fake disk full at " + dir.getRecomputedActualSizeInBytes() + " bytes when writing " + name);
+ String message = "fake disk full at " + dir.getRecomputedActualSizeInBytes() + " bytes when writing " + name + " (file length=" + delegate.length();
+ if (freeSpace > 0) {
+ message += "; wrote " + freeSpace + " of " + len + " bytes";
+ }
+ message += ")";
+ throw new IOException(message);
} else {
if (dir.randomState.nextBoolean()) {
final int half = len/2;
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestBufferedIndexInput.java Mon Dec 6 00:47:16 2010
@@ -22,6 +22,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Random;
@@ -243,10 +244,12 @@ public class TestBufferedIndexInput exte
File indexDir = new File(TEMP_DIR, "testSetBufferSize");
MockFSDirectory dir = new MockFSDirectory(indexDir, random);
try {
- IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig(
- TEST_VERSION_CURRENT, new MockAnalyzer())
- .setOpenMode(OpenMode.CREATE));
- ((LogMergePolicy) writer.getConfig().getMergePolicy()).setUseCompoundFile(false);
+ IndexWriter writer = new IndexWriter(
+ dir,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).
+ setOpenMode(OpenMode.CREATE).
+ setMergePolicy(newLogMergePolicy(false))
+ );
for(int i=0;i<37;i++) {
Document doc = new Document();
doc.add(newField("content", "aaa bbb ccc ddd" + i, Field.Store.YES, Field.Index.ANALYZED));
@@ -366,12 +369,13 @@ public class TestBufferedIndexInput exte
{
return dir.listAll();
}
-
+ @Override
+ public void sync(Collection<String> names) throws IOException {
+ dir.sync(names);
+ }
@Override
public long fileLength(String name) throws IOException {
return dir.fileLength(name);
}
-
-
}
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java Mon Dec 6 00:47:16 2010
@@ -44,9 +44,11 @@ public class TestFileSwitchDirectory ext
Directory secondaryDir = new MockDirectoryWrapper(random, new RAMDirectory());
FileSwitchDirectory fsd = new FileSwitchDirectory(fileExtensions, primaryDir, secondaryDir, true);
- IndexWriter writer = new IndexWriter(fsd, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
- ((LogMergePolicy) writer.getConfig().getMergePolicy()).setUseCompoundFile(false);
- ((LogMergePolicy) writer.getConfig().getMergePolicy()).setUseCompoundDocStore(false);
+ IndexWriter writer = new IndexWriter(
+ fsd,
+ new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).
+ setMergePolicy(newLogMergePolicy(false))
+ );
TestIndexWriterReader.createIndexNoClose(true, "ram", writer);
IndexReader reader = IndexReader.open(writer);
assertEquals(100, reader.maxDoc());
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java Mon Dec 6 00:47:16 2010
@@ -17,16 +17,26 @@ package org.apache.lucene.util;
* limitations under the License.
*/
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.Field.TermVector;
-import org.apache.lucene.index.ConcurrentMergeScheduler;
-import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.LogDocMergePolicy;
-import org.apache.lucene.index.LogMergePolicy;
-import org.apache.lucene.index.SerialMergeScheduler;
+import org.apache.lucene.index.*;
import org.apache.lucene.index.codecs.Codec;
import org.apache.lucene.index.codecs.CodecProvider;
import org.apache.lucene.index.codecs.mockintblock.MockFixedIntBlockCodec;
@@ -35,21 +45,15 @@ import org.apache.lucene.index.codecs.mo
import org.apache.lucene.index.codecs.preflex.PreFlexCodec;
import org.apache.lucene.index.codecs.preflexrw.PreFlexRWCodec;
import org.apache.lucene.index.codecs.pulsing.PulsingCodec;
+import org.apache.lucene.index.codecs.simpletext.SimpleTextCodec;
+import org.apache.lucene.index.codecs.standard.StandardCodec;
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.MockDirectoryWrapper;
import org.apache.lucene.util.FieldCacheSanityChecker.Insanity;
-import org.junit.Assume;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.*;
import org.junit.rules.TestWatchman;
import org.junit.runner.Description;
import org.junit.runner.RunWith;
@@ -60,25 +64,6 @@ import org.junit.runners.BlockJUnit4Clas
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.IdentityHashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Random;
-import java.util.TimeZone;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
/**
* Base class for all Lucene unit tests, Junit3 or Junit4 variant.
* <p>
@@ -141,7 +126,7 @@ public abstract class LuceneTestCase ext
// each test case (non-J4 tests) and each test class (J4
// tests)
/** Gets the codec to run tests with. */
- static final String TEST_CODEC = System.getProperty("tests.codec", "random");
+ static final String TEST_CODEC = System.getProperty("tests.codec", "randomPerField");
/** Gets the locale to run tests with */
static final String TEST_LOCALE = System.getProperty("tests.locale", "random");
/** Gets the timezone to run tests with */
@@ -152,6 +137,8 @@ public abstract class LuceneTestCase ext
static final int TEST_ITER = Integer.parseInt(System.getProperty("tests.iter", "1"));
/** Get the random seed for tests */
static final String TEST_SEED = System.getProperty("tests.seed", "random");
+ /** whether or not nightly tests should run */
+ static final boolean TEST_NIGHTLY = Boolean.parseBoolean(System.getProperty("tests.nightly", "false"));
private static final Pattern codecWithParam = Pattern.compile("(.*)\\(\\s*(\\d+)\\s*\\)");
@@ -168,6 +155,21 @@ public abstract class LuceneTestCase ext
/** Used to track if setUp and tearDown are called correctly from subclasses */
private boolean setup;
+ /**
+ * 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.
+ */
+ public static SegmentReader getOnlySegmentReader(IndexReader reader) {
+ if (reader instanceof SegmentReader)
+ return (SegmentReader) reader;
+
+ IndexReader[] subReaders = reader.getSequentialSubReaders();
+ if (subReaders.length != 1)
+ throw new IllegalArgumentException(reader + " has " + subReaders.length + " segments instead of exactly one");
+
+ return (SegmentReader) subReaders[0];
+ }
+
private static class UncaughtExceptionEntry {
public final Thread thread;
public final Throwable exception;
@@ -181,7 +183,10 @@ public abstract class LuceneTestCase ext
// saves default codec: we do this statically as many build indexes in @beforeClass
private static String savedDefaultCodec;
+ // default codec: not set when we use a per-field provider.
private static Codec codec;
+ // default codec provider
+ private static CodecProvider savedCodecProvider;
private static Locale locale;
private static Locale savedLocale;
@@ -192,8 +197,7 @@ public abstract class LuceneTestCase ext
private static final String[] TEST_CODECS = new String[] {"MockSep", "MockFixedIntBlock", "MockVariableIntBlock"};
- private static void swapCodec(Codec c) {
- final CodecProvider cp = CodecProvider.getDefault();
+ private static void swapCodec(Codec c, CodecProvider cp) {
Codec prior = null;
try {
prior = cp.lookup(c.name);
@@ -206,15 +210,16 @@ public abstract class LuceneTestCase ext
}
// returns current default codec
- static Codec installTestCodecs() {
- final CodecProvider cp = CodecProvider.getDefault();
-
- savedDefaultCodec = CodecProvider.getDefaultCodec();
- String codec = TEST_CODEC;
+ static Codec installTestCodecs(String codec, CodecProvider cp) {
+ savedDefaultCodec = cp.getDefaultFieldCodec();
final boolean codecHasParam;
int codecParam = 0;
- if (codec.equals("random")) {
+ if (codec.equals("randomPerField")) {
+ // lie
+ codec = "Standard";
+ codecHasParam = false;
+ } else if (codec.equals("random")) {
codec = pickRandomCodec(random);
codecHasParam = false;
} else {
@@ -229,28 +234,26 @@ public abstract class LuceneTestCase ext
}
}
- CodecProvider.setDefaultCodec(codec);
cp.setDefaultFieldCodec(codec);
if (codec.equals("PreFlex")) {
// If we're running w/ PreFlex codec we must swap in the
// test-only PreFlexRW codec (since core PreFlex can
// only read segments):
- swapCodec(new PreFlexRWCodec());
+ swapCodec(new PreFlexRWCodec(), cp);
}
- swapCodec(new MockSepCodec());
- swapCodec(new PulsingCodec(codecHasParam && "Pulsing".equals(codec) ? codecParam : _TestUtil.nextInt(random, 1, 20)));
- swapCodec(new MockFixedIntBlockCodec(codecHasParam && "MockFixedIntBlock".equals(codec) ? codecParam : _TestUtil.nextInt(random, 1, 2000)));
+ swapCodec(new MockSepCodec(), cp);
+ swapCodec(new PulsingCodec(codecHasParam && "Pulsing".equals(codec) ? codecParam : _TestUtil.nextInt(random, 1, 20)), cp);
+ swapCodec(new MockFixedIntBlockCodec(codecHasParam && "MockFixedIntBlock".equals(codec) ? codecParam : _TestUtil.nextInt(random, 1, 2000)), cp);
// baseBlockSize cannot be over 127:
- swapCodec(new MockVariableIntBlockCodec(codecHasParam && "MockVariableIntBlock".equals(codec) ? codecParam : _TestUtil.nextInt(random, 1, 127)));
+ swapCodec(new MockVariableIntBlockCodec(codecHasParam && "MockVariableIntBlock".equals(codec) ? codecParam : _TestUtil.nextInt(random, 1, 127)), cp);
return cp.lookup(codec);
}
// returns current PreFlex codec
- static void removeTestCodecs(Codec codec) {
- final CodecProvider cp = CodecProvider.getDefault();
+ static void removeTestCodecs(Codec codec, CodecProvider cp) {
if (codec.name.equals("PreFlex")) {
final Codec preFlex = cp.lookup("PreFlex");
if (preFlex != null) {
@@ -261,8 +264,7 @@ public abstract class LuceneTestCase ext
cp.unregister(cp.lookup("MockSep"));
cp.unregister(cp.lookup("MockFixedIntBlock"));
cp.unregister(cp.lookup("MockVariableIntBlock"));
- swapCodec(new PulsingCodec(1));
- CodecProvider.setDefaultCodec(savedDefaultCodec);
+ swapCodec(new PulsingCodec(1), cp);
cp.setDefaultFieldCodec(savedDefaultCodec);
}
@@ -299,7 +301,7 @@ public abstract class LuceneTestCase ext
}
}
- /** @deprecated: until we fix no-fork problems in solr tests */
+ /** @deprecated (4.0) until we fix no-fork problems in solr tests */
@Deprecated
private static List<String> testClassesRun = new ArrayList<String>();
@@ -308,7 +310,17 @@ public abstract class LuceneTestCase ext
staticSeed = "random".equals(TEST_SEED) ? seedRand.nextLong() : TwoLongs.fromString(TEST_SEED).l1;
random.setSeed(staticSeed);
stores = Collections.synchronizedMap(new IdentityHashMap<MockDirectoryWrapper,StackTraceElement[]>());
- codec = installTestCodecs();
+ savedCodecProvider = CodecProvider.getDefault();
+ if ("randomPerField".equals(TEST_CODEC)) {
+ if (random.nextInt(4) == 0) { // preflex-only setup
+ codec = installTestCodecs("PreFlex", CodecProvider.getDefault());
+ } else { // per-field setup
+ CodecProvider.setDefault(new RandomCodecProvider(random));
+ codec = installTestCodecs(TEST_CODEC, CodecProvider.getDefault());
+ }
+ } else { // ordinary setup
+ codec = installTestCodecs(TEST_CODEC, CodecProvider.getDefault());
+ }
savedLocale = Locale.getDefault();
locale = TEST_LOCALE.equals("random") ? randomLocale(random) : localeForName(TEST_LOCALE);
Locale.setDefault(locale);
@@ -320,7 +332,21 @@ public abstract class LuceneTestCase ext
@AfterClass
public static void afterClassLuceneTestCaseJ4() {
- removeTestCodecs(codec);
+ String codecDescription;
+ CodecProvider cp = CodecProvider.getDefault();
+
+ if ("randomPerField".equals(TEST_CODEC)) {
+ if (cp instanceof RandomCodecProvider)
+ codecDescription = cp.toString();
+ else
+ codecDescription = "PreFlex";
+ } else {
+ codecDescription = codec.toString();
+ }
+
+ if (CodecProvider.getDefault() == savedCodecProvider)
+ removeTestCodecs(codec, CodecProvider.getDefault());
+ CodecProvider.setDefault(savedCodecProvider);
Locale.setDefault(savedLocale);
TimeZone.setDefault(savedTimeZone);
System.clearProperty("solr.solr.home");
@@ -335,9 +361,9 @@ public abstract class LuceneTestCase ext
}
}
stores = null;
- // if tests failed, report some information back
- if (testsFailed)
- System.out.println("NOTE: test params are: codec=" + codec +
+ // if verbose or tests failed, report some information back
+ if (VERBOSE || testsFailed)
+ System.out.println("NOTE: test params are: codec=" + codecDescription +
", locale=" + locale +
", timezone=" + (timeZone == null ? "(null)" : timeZone.getID()));
if (testsFailed) {
@@ -510,8 +536,7 @@ public abstract class LuceneTestCase ext
}
}
- // These deprecated methods should be removed soon, when all tests using no Epsilon are fixed:
-
+ // @deprecated (4.0) These deprecated methods should be removed soon, when all tests using no Epsilon are fixed:
@Deprecated
static public void assertEquals(double expected, double actual) {
assertEquals(null, expected, actual);
@@ -575,6 +600,10 @@ public abstract class LuceneTestCase ext
Assume.assumeNoException(e == null ? null : new TestIgnoredException(msg, e));
}
+ public static <T> Set<T> asSet(T... args) {
+ return new HashSet<T>(Arrays.asList(args));
+ }
+
/**
* Convinience method for logging an iterator.
*
@@ -614,13 +643,14 @@ public abstract class LuceneTestCase ext
public static IndexWriterConfig newIndexWriterConfig(Random r, Version v, Analyzer a) {
IndexWriterConfig c = new IndexWriterConfig(v, a);
if (r.nextBoolean()) {
- c.setMergePolicy(new LogDocMergePolicy());
- }
- if (r.nextBoolean()) {
c.setMergeScheduler(new SerialMergeScheduler());
}
if (r.nextBoolean()) {
- c.setMaxBufferedDocs(_TestUtil.nextInt(r, 2, 1000));
+ if (r.nextInt(20) == 17) {
+ c.setMaxBufferedDocs(2);
+ } else {
+ c.setMaxBufferedDocs(_TestUtil.nextInt(r, 2, 1000));
+ }
}
if (r.nextBoolean()) {
c.setTermIndexInterval(_TestUtil.nextInt(r, 1, 1000));
@@ -628,20 +658,52 @@ public abstract class LuceneTestCase ext
if (r.nextBoolean()) {
c.setMaxThreadStates(_TestUtil.nextInt(r, 1, 20));
}
-
- if (c.getMergePolicy() instanceof LogMergePolicy) {
- LogMergePolicy logmp = (LogMergePolicy) c.getMergePolicy();
- logmp.setUseCompoundDocStore(r.nextBoolean());
- logmp.setUseCompoundFile(r.nextBoolean());
- logmp.setCalibrateSizeByDeletes(r.nextBoolean());
- logmp.setMergeFactor(_TestUtil.nextInt(r, 2, 20));
- }
-
+
+ c.setMergePolicy(newLogMergePolicy(r));
+
c.setReaderPooling(r.nextBoolean());
c.setReaderTermsIndexDivisor(_TestUtil.nextInt(r, 1, 4));
return c;
}
+ public static LogMergePolicy newLogMergePolicy() {
+ return newLogMergePolicy(random);
+ }
+
+ public static LogMergePolicy newLogMergePolicy(Random r) {
+ LogMergePolicy logmp = r.nextBoolean() ? new LogDocMergePolicy() : new LogByteSizeMergePolicy();
+ logmp.setUseCompoundDocStore(r.nextBoolean());
+ logmp.setUseCompoundFile(r.nextBoolean());
+ logmp.setCalibrateSizeByDeletes(r.nextBoolean());
+ if (r.nextInt(3) == 2) {
+ logmp.setMergeFactor(2);
+ } else {
+ logmp.setMergeFactor(_TestUtil.nextInt(r, 2, 20));
+ }
+ return logmp;
+ }
+
+ public static LogMergePolicy newLogMergePolicy(boolean useCFS) {
+ LogMergePolicy logmp = newLogMergePolicy();
+ logmp.setUseCompoundFile(useCFS);
+ logmp.setUseCompoundDocStore(useCFS);
+ return logmp;
+ }
+
+ public static LogMergePolicy newLogMergePolicy(boolean useCFS, int mergeFactor) {
+ LogMergePolicy logmp = newLogMergePolicy();
+ logmp.setUseCompoundFile(useCFS);
+ logmp.setUseCompoundDocStore(useCFS);
+ logmp.setMergeFactor(mergeFactor);
+ return logmp;
+ }
+
+ public static LogMergePolicy newLogMergePolicy(int mergeFactor) {
+ LogMergePolicy logmp = newLogMergePolicy();
+ logmp.setMergeFactor(mergeFactor);
+ return logmp;
+ }
+
/**
* Returns a new Dictionary instance. Use this when the test does not
* care about the specific Directory implementation (most tests).
@@ -843,6 +905,14 @@ public abstract class LuceneTestCase ext
private String name = "<unknown>";
+ /**
+ * Annotation for tests that should only be run during nightly builds.
+ */
+ @Documented
+ @Inherited
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface Nightly {}
+
/** optionally filters the tests to be run by TEST_METHOD */
public static class LuceneTestCaseRunner extends BlockJUnit4ClassRunner {
private List<FrameworkMethod> testMethods;
@@ -856,7 +926,7 @@ public abstract class LuceneTestCase ext
for (Method m : getTestClass().getJavaClass().getMethods()) {
// check if the current test's class has methods annotated with @Ignore
final Ignore ignored = m.getAnnotation(Ignore.class);
- if (ignored != null) {
+ if (ignored != null && !m.getName().equals("alwaysIgnoredTestMethod")) {
System.err.println("NOTE: Ignoring test method '" + m.getName() + "': " + ignored.value());
}
// add methods starting with "test"
@@ -872,6 +942,34 @@ public abstract class LuceneTestCase ext
testMethods.add(new FrameworkMethod(m));
}
}
+
+ if (testMethods.isEmpty()) {
+ throw new RuntimeException("No runnable methods!");
+ }
+
+ if (TEST_NIGHTLY == false) {
+ if (getTestClass().getJavaClass().isAnnotationPresent(Nightly.class)) {
+ /* the test class is annotated with nightly, remove all methods */
+ String className = getTestClass().getJavaClass().getSimpleName();
+ System.err.println("NOTE: Ignoring nightly-only test class '" + className + "'");
+ testMethods.clear();
+ } else {
+ /* remove all nightly-only methods */
+ for (int i = 0; i < testMethods.size(); i++) {
+ final FrameworkMethod m = testMethods.get(i);
+ if (m.getAnnotation(Nightly.class) != null) {
+ System.err.println("NOTE: Ignoring nightly-only test method '" + m.getName() + "'");
+ testMethods.remove(i--);
+ }
+ }
+ }
+ /* dodge a possible "no-runnable methods" exception by adding a fake ignored test */
+ if (testMethods.isEmpty()) {
+ try {
+ testMethods.add(new FrameworkMethod(LuceneTestCase.class.getMethod("alwaysIgnoredTestMethod")));
+ } catch (Exception e) { throw new RuntimeException(e); }
+ }
+ }
return testMethods;
}
@@ -901,4 +999,46 @@ public abstract class LuceneTestCase ext
}
}
}
+
+ private static class RandomCodecProvider extends CodecProvider {
+ private List<Codec> knownCodecs = new ArrayList<Codec>();
+ private Map<String,Codec> previousMappings = new HashMap<String,Codec>();
+ private final int perFieldSeed;
+
+ RandomCodecProvider(Random random) {
+ this.perFieldSeed = random.nextInt();
+ register(new StandardCodec());
+ register(new PreFlexCodec());
+ register(new PulsingCodec(1));
+ register(new SimpleTextCodec());
+ Collections.shuffle(knownCodecs, random);
+ }
+
+ public synchronized void register(Codec codec) {
+ if (!codec.name.equals("PreFlex"))
+ knownCodecs.add(codec);
+ super.register(codec);
+ }
+
+ public synchronized void unregister(Codec codec) {
+ knownCodecs.remove(codec);
+ super.unregister(codec);
+ }
+
+ public synchronized String getFieldCodec(String name) {
+ Codec codec = previousMappings.get(name);
+ if (codec == null) {
+ codec = knownCodecs.get(Math.abs(perFieldSeed ^ name.hashCode()) % knownCodecs.size());
+ previousMappings.put(name, codec);
+ }
+ return codec.name;
+ }
+
+ public String toString() {
+ return "RandomCodecProvider: " + previousMappings.toString();
+ }
+ }
+
+ @Ignore("just a hack")
+ public final void alwaysIgnoredTestMethod() {}
}
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestBytesRefHash.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestBytesRefHash.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestBytesRefHash.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestBytesRefHash.java Mon Dec 6 00:47:16 2010
@@ -98,6 +98,7 @@ public class TestBytesRefHash extends Lu
BytesRef scratch = new BytesRef();
for (int j = 0; j < 2 * RANDOM_MULTIPLIER; j++) {
Map<String, Integer> strings = new HashMap<String, Integer>();
+ int uniqueCount = 0;
for (int i = 0; i < 797; i++) {
String str;
do {
@@ -108,7 +109,8 @@ public class TestBytesRefHash extends Lu
int key = hash.add(ref);
if (key >= 0) {
assertNull(strings.put(str, Integer.valueOf(key)));
- assertEquals(i, key);
+ assertEquals(uniqueCount, key);
+ uniqueCount++;
assertEquals(hash.size(), count + 1);
} else {
assertTrue((-key)-1 < count);
@@ -202,6 +204,7 @@ public class TestBytesRefHash extends Lu
BytesRef scratch = new BytesRef();
for (int j = 0; j < 2 * RANDOM_MULTIPLIER; j++) {
Set<String> strings = new HashSet<String>();
+ int uniqueCount = 0;
for (int i = 0; i < 797; i++) {
String str;
do {
@@ -213,8 +216,9 @@ public class TestBytesRefHash extends Lu
if (key >=0) {
assertTrue(strings.add(str));
- assertEquals(i, key);
+ assertEquals(uniqueCount, key);
assertEquals(hash.size(), count + 1);
+ uniqueCount++;
} else {
assertFalse(strings.add(str));
assertTrue((-key)-1 < count);
@@ -262,6 +266,7 @@ public class TestBytesRefHash extends Lu
BytesRefHash offsetHash = newHash(pool);
for (int j = 0; j < 2 * RANDOM_MULTIPLIER; j++) {
Set<String> strings = new HashSet<String>();
+ int uniqueCount = 0;
for (int i = 0; i < 797; i++) {
String str;
do {
@@ -273,11 +278,12 @@ public class TestBytesRefHash extends Lu
if (key >= 0) {
assertTrue(strings.add(str));
- assertEquals(i, key);
+ assertEquals(uniqueCount, key);
assertEquals(hash.size(), count + 1);
int offsetKey = offsetHash.addByPoolOffset(hash.byteStart(key));
- assertEquals(i, offsetKey);
+ assertEquals(uniqueCount, offsetKey);
assertEquals(offsetHash.size(), count + 1);
+ uniqueCount++;
} else {
assertFalse(strings.add(str));
assertTrue((-key)-1 < count);
Modified: lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java?rev=1042501&r1=1042500&r2=1042501&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestFieldCacheSanityChecker.java Mon Dec 6 00:47:16 2010
@@ -70,7 +70,7 @@ public class TestFieldCacheSanityChecker
wB.close();
readerA = IndexReader.open(dirA, true);
readerB = IndexReader.open(dirB, true);
- readerX = new MultiReader(new IndexReader[] { readerA, readerB });
+ readerX = new MultiReader(readerA, readerB);
}
@Override