You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2021/08/19 15:16:01 UTC
[lucene-solr] 01/02: LUCENE-10052: first cut at LTC.newBytesRef
methods, and switching a few test cases over (#245)
This is an automated email from the ASF dual-hosted git repository.
mikemccand pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit b48f8ad6472fe8d109e00e1f84e654033365c905
Author: Michael McCandless <mi...@apache.org>
AuthorDate: Tue Aug 17 16:18:40 2021 -0400
LUCENE-10052: first cut at LTC.newBytesRef methods, and switching a few test cases over (#245)
* LUCENE-10052: first cut at LTC.newBytesRef methods, to randomize the offset/length of a BytesRef, and switching a few test cases over
---
.../java/org/apache/lucene/util/PagedBytes.java | 3 +-
.../lucene/index/TestBinaryDocValuesUpdates.java | 31 +-
.../org/apache/lucene/index/TestIndexSorting.java | 85 ++---
.../org/apache/lucene/index/TestIndexWriter.java | 103 ++++---
.../apache/lucene/index/TestIndexableField.java | 6 +-
.../lucene/index/BaseDocValuesFormatTestCase.java | 342 +++++++++++----------
.../index/BaseTermVectorsFormatTestCase.java | 133 +++++---
.../org/apache/lucene/util/LuceneTestCase.java | 84 +++++
8 files changed, 468 insertions(+), 319 deletions(-)
diff --git a/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java b/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java
index 8538805..16574dc 100644
--- a/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java
+++ b/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java
@@ -376,7 +376,8 @@ public final class PagedBytes implements Accountable {
@Override
public void writeBytes(byte[] b, int offset, int length) {
- assert b.length >= offset + length;
+ assert b.length >= offset + length
+ : "b.length=" + b.length + " offset=" + offset + " length=" + length;
if (length == 0) {
return;
}
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
index bd88099..fe83e73 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestBinaryDocValuesUpdates.java
@@ -70,14 +70,17 @@ public class TestBinaryDocValuesUpdates extends LuceneTestCase {
// encodes a long into a BytesRef as VLong so that we get varying number of bytes when we update
static BytesRef toBytes(long value) {
-// long orig = value;
- BytesRef bytes = new BytesRef(10); // negative longs may take 10 bytes
+ // long orig = value;
+ BytesRef bytes = newBytesRef(10); // negative longs may take 10 bytes
+ int upto = 0;
while ((value & ~0x7FL) != 0L) {
- bytes.bytes[bytes.length++] = (byte) ((value & 0x7FL) | 0x80L);
+ bytes.bytes[bytes.offset + upto++] = (byte) ((value & 0x7FL) | 0x80L);
value >>>= 7;
}
- bytes.bytes[bytes.length++] = (byte) value;
-// System.err.println("[" + Thread.currentThread().getName() + "] value=" + orig + ", bytes=" + bytes);
+ bytes.bytes[bytes.offset + upto++] = (byte) value;
+ bytes.length = upto;
+ // System.err.println("[" + Thread.currentThread().getName() + "] value=" + orig + ", bytes="
+ // + bytes);
return bytes;
}
@@ -330,10 +333,10 @@ public class TestBinaryDocValuesUpdates extends LuceneTestCase {
Document doc = new Document();
doc.add(new StringField("dvUpdateKey", "dv", Store.NO));
doc.add(new NumericDocValuesField("ndv", i));
- doc.add(new BinaryDocValuesField("bdv", new BytesRef(Integer.toString(i))));
- doc.add(new SortedDocValuesField("sdv", new BytesRef(Integer.toString(i))));
- doc.add(new SortedSetDocValuesField("ssdv", new BytesRef(Integer.toString(i))));
- doc.add(new SortedSetDocValuesField("ssdv", new BytesRef(Integer.toString(i * 2))));
+ doc.add(new BinaryDocValuesField("bdv", newBytesRef(Integer.toString(i))));
+ doc.add(new SortedDocValuesField("sdv", newBytesRef(Integer.toString(i))));
+ doc.add(new SortedSetDocValuesField("ssdv", newBytesRef(Integer.toString(i))));
+ doc.add(new SortedSetDocValuesField("ssdv", newBytesRef(Integer.toString(i * 2))));
writer.addDocument(doc);
}
writer.commit();
@@ -354,8 +357,8 @@ public class TestBinaryDocValuesUpdates extends LuceneTestCase {
assertEquals(i, bdv.nextDoc());
assertEquals(17, getValue(bdv));
assertEquals(i, sdv.nextDoc());
- BytesRef term = sdv.binaryValue();
- assertEquals(new BytesRef(Integer.toString(i)), term);
+ BytesRef term = sdv.lookupOrd(sdv.ordValue());
+ assertEquals(newBytesRef(Integer.toString(i)), term);
assertEquals(i, ssdv.nextDoc());
long ord = ssdv.nextOrd();
term = ssdv.lookupOrd(ord);
@@ -481,7 +484,7 @@ public class TestBinaryDocValuesUpdates extends LuceneTestCase {
Document doc = new Document();
doc.add(new StringField("key", "doc", Store.NO));
doc.add(new BinaryDocValuesField("bdv", toBytes(5L)));
- doc.add(new SortedDocValuesField("sorted", new BytesRef("value")));
+ doc.add(new SortedDocValuesField("sorted", newBytesRef("value")));
writer.addDocument(doc); // flushed document
writer.commit();
writer.addDocument(doc); // in-memory document
@@ -497,8 +500,8 @@ public class TestBinaryDocValuesUpdates extends LuceneTestCase {
assertEquals(i, bdv.nextDoc());
assertEquals(17, getValue(bdv));
assertEquals(i, sdv.nextDoc());
- BytesRef term = sdv.binaryValue();
- assertEquals(new BytesRef("value"), term);
+ BytesRef term = sdv.lookupOrd(sdv.ordValue());
+ assertEquals(newBytesRef("value"), term);
}
reader.close();
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
index 042e2a8..07463bc 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
@@ -78,7 +78,6 @@ import org.apache.lucene.search.TopFieldCollector;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.FixedBitSet;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LuceneTestCase;
@@ -235,8 +234,9 @@ public class TestIndexSorting extends LuceneTestCase {
}
public void testStringAlreadySorted() throws Exception {
- assertNeedsIndexSortMerge(new SortField("foo", SortField.Type.STRING),
- (doc) -> doc.add(new SortedDocValuesField("foo", new BytesRef("default"))),
+ assertNeedsIndexSortMerge(
+ new SortField("foo", SortField.Type.STRING),
+ (doc) -> doc.add(new SortedDocValuesField("foo", newBytesRef("default"))),
(doc) -> doc.add(new SortedDocValuesField("foo", TestUtil.randomBinaryTerm(random()))));
}
@@ -260,7 +260,7 @@ public class TestIndexSorting extends LuceneTestCase {
public void testMultiValuedStringAlreadySorted() throws Exception {
assertNeedsIndexSortMerge(new SortedSetSortField("foo", false),
(doc) -> {
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("")));
int num = random().nextInt(5);
for (int j = 0; j < num; j++) {
doc.add(new SortedSetDocValuesField("foo", TestUtil.randomBinaryTerm(random())));
@@ -281,18 +281,18 @@ public class TestIndexSorting extends LuceneTestCase {
iwc.setIndexSort(indexSort);
IndexWriter w = new IndexWriter(dir, iwc);
Document doc = new Document();
- doc.add(new SortedDocValuesField("foo", new BytesRef("zzz")));
+ doc.add(new SortedDocValuesField("foo", newBytesRef("zzz")));
w.addDocument(doc);
// so we get more than one segment, so that forceMerge actually does merge, since we only get a sorted segment by merging:
w.commit();
doc = new Document();
- doc.add(new SortedDocValuesField("foo", new BytesRef("aaa")));
+ doc.add(new SortedDocValuesField("foo", newBytesRef("aaa")));
w.addDocument(doc);
w.commit();
doc = new Document();
- doc.add(new SortedDocValuesField("foo", new BytesRef("mmm")));
+ doc.add(new SortedDocValuesField("foo", newBytesRef("mmm")));
w.addDocument(doc);
w.forceMerge(1);
@@ -319,23 +319,23 @@ public class TestIndexSorting extends LuceneTestCase {
IndexWriter w = new IndexWriter(dir, iwc);
Document doc = new Document();
doc.add(new NumericDocValuesField("id", 3));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("zzz")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("zzz")));
w.addDocument(doc);
// so we get more than one segment, so that forceMerge actually does merge, since we only get a sorted segment by merging:
w.commit();
doc = new Document();
doc.add(new NumericDocValuesField("id", 1));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("aaa")));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("zzz")));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("bcg")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("aaa")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("zzz")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("bcg")));
w.addDocument(doc);
w.commit();
doc = new Document();
doc.add(new NumericDocValuesField("id", 2));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("mmm")));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("pppp")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("mmm")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("pppp")));
w.addDocument(doc);
w.forceMerge(1);
@@ -364,7 +364,7 @@ public class TestIndexSorting extends LuceneTestCase {
iwc.setIndexSort(indexSort);
IndexWriter w = new IndexWriter(dir, iwc);
Document doc = new Document();
- doc.add(new SortedDocValuesField("foo", new BytesRef("zzz")));
+ doc.add(new SortedDocValuesField("foo", newBytesRef("zzz")));
w.addDocument(doc);
// so we get more than one segment, so that forceMerge actually does merge, since we only get a sorted segment by merging:
w.commit();
@@ -374,7 +374,7 @@ public class TestIndexSorting extends LuceneTestCase {
w.commit();
doc = new Document();
- doc.add(new SortedDocValuesField("foo", new BytesRef("mmm")));
+ doc.add(new SortedDocValuesField("foo", newBytesRef("mmm")));
w.addDocument(doc);
w.forceMerge(1);
@@ -411,9 +411,9 @@ public class TestIndexSorting extends LuceneTestCase {
IndexWriter w = new IndexWriter(dir, iwc);
Document doc = new Document();
doc.add(new NumericDocValuesField("id", 3));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("zzz")));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("zzza")));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("zzzd")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("zzz")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("zzza")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("zzzd")));
w.addDocument(doc);
// so we get more than one segment, so that forceMerge actually does merge, since we only get a sorted segment by merging:
w.commit();
@@ -426,8 +426,8 @@ public class TestIndexSorting extends LuceneTestCase {
doc = new Document();
doc.add(new NumericDocValuesField("id", 2));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("mmm")));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("nnnn")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("mmm")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("nnnn")));
w.addDocument(doc);
w.forceMerge(1);
@@ -466,7 +466,7 @@ public class TestIndexSorting extends LuceneTestCase {
iwc.setIndexSort(indexSort);
IndexWriter w = new IndexWriter(dir, iwc);
Document doc = new Document();
- doc.add(new SortedDocValuesField("foo", new BytesRef("zzz")));
+ doc.add(new SortedDocValuesField("foo", newBytesRef("zzz")));
w.addDocument(doc);
// so we get more than one segment, so that forceMerge actually does merge, since we only get a sorted segment by merging:
w.commit();
@@ -476,7 +476,7 @@ public class TestIndexSorting extends LuceneTestCase {
w.commit();
doc = new Document();
- doc.add(new SortedDocValuesField("foo", new BytesRef("mmm")));
+ doc.add(new SortedDocValuesField("foo", newBytesRef("mmm")));
w.addDocument(doc);
w.forceMerge(1);
@@ -513,8 +513,8 @@ public class TestIndexSorting extends LuceneTestCase {
IndexWriter w = new IndexWriter(dir, iwc);
Document doc = new Document();
doc.add(new NumericDocValuesField("id", 2));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("zzz")));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("zzzd")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("zzz")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("zzzd")));
w.addDocument(doc);
// so we get more than one segment, so that forceMerge actually does merge, since we only get a sorted segment by merging:
w.commit();
@@ -527,8 +527,8 @@ public class TestIndexSorting extends LuceneTestCase {
doc = new Document();
doc.add(new NumericDocValuesField("id", 1));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("mmm")));
- doc.add(new SortedSetDocValuesField("foo", new BytesRef("ppp")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("mmm")));
+ doc.add(new SortedSetDocValuesField("foo", newBytesRef("ppp")));
w.addDocument(doc);
w.forceMerge(1);
@@ -1912,7 +1912,7 @@ public class TestIndexSorting extends LuceneTestCase {
iwc.setIndexSort(indexSort);
IndexWriter w = new IndexWriter(dir, iwc);
Document doc = new Document();
- doc.add(new StringField("id", new BytesRef("0"), Store.NO));
+ doc.add(new StringField("id", newBytesRef("0"), Store.NO));
doc.add(new NumericDocValuesField("foo", random().nextInt()));
w.addDocument(doc);
w.commit();
@@ -2218,7 +2218,7 @@ public class TestIndexSorting extends LuceneTestCase {
clearAttributes();
term.append("#all#");
- payload.setPayload(new BytesRef(Integer.toString(pos)));
+ payload.setPayload(newBytesRef(Integer.toString(pos)));
offset.setOffset(off, off);
--pos;
++off;
@@ -2263,10 +2263,13 @@ public class TestIndexSorting extends LuceneTestCase {
String value = IntStream.range(0, id).mapToObj(k -> Integer.toString(id)).collect(Collectors.joining(" "));
TextField norms = new TextField("norms", value, Store.NO);
doc.add(norms);
- doc.add(new BinaryDocValuesField("binary", new BytesRef(Integer.toString(id))));
- doc.add(new SortedDocValuesField("sorted", new BytesRef(Integer.toString(id))));
- doc.add(new SortedSetDocValuesField("multi_valued_string", new BytesRef(Integer.toString(id))));
- doc.add(new SortedSetDocValuesField("multi_valued_string", new BytesRef(Integer.toString(id + 1))));
+ doc.add(new BinaryDocValuesField("binary", newBytesRef(Integer.toString(id))));
+ doc.add(new SortedDocValuesField("sorted", newBytesRef(Integer.toString(id))));
+ doc.add(
+ new SortedSetDocValuesField("multi_valued_string", newBytesRef(Integer.toString(id))));
+ doc.add(
+ new SortedSetDocValuesField(
+ "multi_valued_string", newBytesRef(Integer.toString(id + 1))));
doc.add(new SortedNumericDocValuesField("multi_valued_numeric", id));
doc.add(new SortedNumericDocValuesField("multi_valued_numeric", id + 1));
doc.add(new Field("term_vectors", Integer.toString(id), TERM_VECTORS_TYPE));
@@ -2497,7 +2500,7 @@ public class TestIndexSorting extends LuceneTestCase {
System.out.println(" long=" + docValues.longValue);
System.out.println(" float=" + docValues.floatValue);
System.out.println(" double=" + docValues.doubleValue);
- System.out.println(" bytes=" + new BytesRef(docValues.bytesValue));
+ System.out.println(" bytes=" + newBytesRef(docValues.bytesValue));
System.out.println(" mvf=" + Arrays.toString(docValues.floatValues));
}
@@ -2508,7 +2511,7 @@ public class TestIndexSorting extends LuceneTestCase {
doc.add(new NumericDocValuesField("long", docValues.longValue));
doc.add(new DoubleDocValuesField("double", docValues.doubleValue));
doc.add(new FloatDocValuesField("float", docValues.floatValue));
- doc.add(new SortedDocValuesField("bytes", new BytesRef(docValues.bytesValue)));
+ doc.add(new SortedDocValuesField("bytes", newBytesRef(docValues.bytesValue)));
for (int value : docValues.intValues) {
doc.add(new SortedNumericDocValuesField("multi_valued_int", value));
@@ -2527,7 +2530,7 @@ public class TestIndexSorting extends LuceneTestCase {
}
for (byte[] value : docValues.bytesValues) {
- doc.add(new SortedSetDocValuesField("multi_valued_bytes", new BytesRef(value)));
+ doc.add(new SortedSetDocValuesField("multi_valued_bytes", newBytesRef(value)));
}
w1.addDocument(doc);
@@ -2615,7 +2618,7 @@ public class TestIndexSorting extends LuceneTestCase {
} else {
value = "bar1";
}
- doc.add(new SortedDocValuesField("foo", new BytesRef(value)));
+ doc.add(new SortedDocValuesField("foo", newBytesRef(value)));
w.addDocument(doc);
if (id == 500) {
w.commit();
@@ -2648,7 +2651,7 @@ public class TestIndexSorting extends LuceneTestCase {
doc.add(new NumericDocValuesField("dense_int", i));
if (i < 64) {
doc.add(new NumericDocValuesField("sparse_int", i));
- doc.add(new BinaryDocValuesField("sparse_binary", new BytesRef(Integer.toString(i))));
+ doc.add(new BinaryDocValuesField("sparse_binary", newBytesRef(Integer.toString(i))));
textField.setStringValue("foo");
doc.add(textField);
}
@@ -2673,8 +2676,8 @@ public class TestIndexSorting extends LuceneTestCase {
assertTrue(sparseBinaryValues.advanceExact(docID));
assertTrue(normsValues.advanceExact(docID));
assertEquals(1, normsValues.longValue());
- assertEquals(127-docID, (int) sparseValues.longValue());
- assertEquals(new BytesRef(Integer.toString(127-docID)), sparseBinaryValues.binaryValue());
+ assertEquals(127 - docID, (int) sparseValues.longValue());
+ assertEquals(newBytesRef(Integer.toString(127 - docID)), sparseBinaryValues.binaryValue());
} else {
assertFalse(sparseBinaryValues.advanceExact(docID));
assertFalse(sparseValues.advanceExact(docID));
@@ -2719,8 +2722,8 @@ public class TestIndexSorting extends LuceneTestCase {
public void testWrongSortFieldType() throws Exception {
Directory dir = newDirectory();
List<Field> dvs = new ArrayList<>();
- dvs.add(new SortedDocValuesField("field", new BytesRef("")));
- dvs.add(new SortedSetDocValuesField("field", new BytesRef("")));
+ dvs.add(new SortedDocValuesField("field", newBytesRef("")));
+ dvs.add(new SortedSetDocValuesField("field", newBytesRef("")));
dvs.add(new NumericDocValuesField("field", 42));
dvs.add(new SortedNumericDocValuesField("field", 42));
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
index b94411b..20711fb 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
@@ -481,11 +481,8 @@ public class TestIndexWriter extends LuceneTestCase {
assertEquals(1, reader.numDocs());
Term t = new Term("field", "a");
assertEquals(1, reader.docFreq(t));
- PostingsEnum td = TestUtil.docs(random(), reader,
- "field",
- new BytesRef("a"),
- null,
- PostingsEnum.FREQS);
+ PostingsEnum td =
+ TestUtil.docs(random(), reader, "field", newBytesRef("a"), null, PostingsEnum.FREQS);
td.nextDoc();
assertEquals(128*1024, td.freq());
reader.close();
@@ -675,9 +672,9 @@ public class TestIndexWriter extends LuceneTestCase {
DirectoryReader reader = DirectoryReader.open(dir);
LeafReader subreader = getOnlyLeafReader(reader);
TermsEnum te = subreader.terms("").iterator();
- assertEquals(new BytesRef("a"), te.next());
- assertEquals(new BytesRef("b"), te.next());
- assertEquals(new BytesRef("c"), te.next());
+ assertEquals(newBytesRef("a"), te.next());
+ assertEquals(newBytesRef("b"), te.next());
+ assertEquals(newBytesRef("c"), te.next());
assertNull(te.next());
reader.close();
dir.close();
@@ -696,10 +693,10 @@ public class TestIndexWriter extends LuceneTestCase {
DirectoryReader reader = DirectoryReader.open(dir);
LeafReader subreader = getOnlyLeafReader(reader);
TermsEnum te = subreader.terms("").iterator();
- assertEquals(new BytesRef(""), te.next());
- assertEquals(new BytesRef("a"), te.next());
- assertEquals(new BytesRef("b"), te.next());
- assertEquals(new BytesRef("c"), te.next());
+ assertEquals(newBytesRef(""), te.next());
+ assertEquals(newBytesRef("a"), te.next());
+ assertEquals(newBytesRef("b"), te.next());
+ assertEquals(newBytesRef("c"), te.next());
assertNull(te.next());
reader.close();
dir.close();
@@ -893,22 +890,22 @@ public class TestIndexWriter extends LuceneTestCase {
Document doc = new Document();
doc.add(newStringField(random, "id", "500", Field.Store.NO));
doc.add(newField(random, "field", "some prepackaged text contents", storedTextType));
- doc.add(new BinaryDocValuesField("binarydv", new BytesRef("500")));
+ doc.add(new BinaryDocValuesField("binarydv", newBytesRef("500")));
doc.add(new NumericDocValuesField("numericdv", 500));
- doc.add(new SortedDocValuesField("sorteddv", new BytesRef("500")));
- doc.add(new SortedSetDocValuesField("sortedsetdv", new BytesRef("one")));
- doc.add(new SortedSetDocValuesField("sortedsetdv", new BytesRef("two")));
+ doc.add(new SortedDocValuesField("sorteddv", newBytesRef("500")));
+ doc.add(new SortedSetDocValuesField("sortedsetdv", newBytesRef("one")));
+ doc.add(new SortedSetDocValuesField("sortedsetdv", newBytesRef("two")));
doc.add(new SortedNumericDocValuesField("sortednumericdv", 4));
doc.add(new SortedNumericDocValuesField("sortednumericdv", 3));
w.addDocument(doc);
doc = new Document();
doc.add(newStringField(random, "id", "501", Field.Store.NO));
doc.add(newField(random, "field", "some more contents", storedTextType));
- doc.add(new BinaryDocValuesField("binarydv", new BytesRef("501")));
+ doc.add(new BinaryDocValuesField("binarydv", newBytesRef("501")));
doc.add(new NumericDocValuesField("numericdv", 501));
- doc.add(new SortedDocValuesField("sorteddv", new BytesRef("501")));
- doc.add(new SortedSetDocValuesField("sortedsetdv", new BytesRef("two")));
- doc.add(new SortedSetDocValuesField("sortedsetdv", new BytesRef("three")));
+ doc.add(new SortedDocValuesField("sorteddv", newBytesRef("501")));
+ doc.add(new SortedSetDocValuesField("sortedsetdv", newBytesRef("two")));
+ doc.add(new SortedSetDocValuesField("sortedsetdv", newBytesRef("three")));
doc.add(new SortedNumericDocValuesField("sortednumericdv", 6));
doc.add(new SortedNumericDocValuesField("sortednumericdv", 1));
w.addDocument(doc);
@@ -962,10 +959,10 @@ public class TestIndexWriter extends LuceneTestCase {
Document doc = new Document();
Field idField = newStringField(random, "id", "", Field.Store.NO);
- Field binaryDVField = new BinaryDocValuesField("binarydv", new BytesRef());
+ Field binaryDVField = new BinaryDocValuesField("binarydv", newBytesRef());
Field numericDVField = new NumericDocValuesField("numericdv", 0);
- Field sortedDVField = new SortedDocValuesField("sorteddv", new BytesRef());
- Field sortedSetDVField = new SortedSetDocValuesField("sortedsetdv", new BytesRef());
+ Field sortedDVField = new SortedDocValuesField("sorteddv", newBytesRef());
+ Field sortedSetDVField = new SortedSetDocValuesField("sortedsetdv", newBytesRef());
doc.add(idField);
doc.add(newField(random, "field", "some text contents", storedTextType));
doc.add(binaryDVField);
@@ -975,10 +972,10 @@ public class TestIndexWriter extends LuceneTestCase {
for(int i=0;i<100;i++) {
//log.println("\nTEST: i=" + i);
idField.setStringValue(Integer.toString(i));
- binaryDVField.setBytesValue(new BytesRef(idField.stringValue()));
+ binaryDVField.setBytesValue(newBytesRef(idField.stringValue()));
numericDVField.setLongValue(i);
- sortedDVField.setBytesValue(new BytesRef(idField.stringValue()));
- sortedSetDVField.setBytesValue(new BytesRef(idField.stringValue()));
+ sortedDVField.setBytesValue(newBytesRef(idField.stringValue()));
+ sortedSetDVField.setBytesValue(newBytesRef(idField.stringValue()));
int action = random.nextInt(100);
if (action == 17) {
w.addIndexes(adder);
@@ -1209,12 +1206,30 @@ public class TestIndexWriter extends LuceneTestCase {
// test that the terms were indexed.
- assertTrue(TestUtil.docs(random(), ir, "binary", new BytesRef("doc1field1"), null, PostingsEnum.NONE).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
- assertTrue(TestUtil.docs(random(), ir, "binary", new BytesRef("doc2field1"), null, PostingsEnum.NONE).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
- assertTrue(TestUtil.docs(random(), ir, "binary", new BytesRef("doc3field1"), null, PostingsEnum.NONE).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
- assertTrue(TestUtil.docs(random(), ir, "string", new BytesRef("doc1field2"), null, PostingsEnum.NONE).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
- assertTrue(TestUtil.docs(random(), ir, "string", new BytesRef("doc2field2"), null, PostingsEnum.NONE).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
- assertTrue(TestUtil.docs(random(), ir, "string", new BytesRef("doc3field2"), null, PostingsEnum.NONE).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
+ assertTrue(
+ TestUtil.docs(random(), ir, "binary", newBytesRef("doc1field1"), null, PostingsEnum.NONE)
+ .nextDoc()
+ != DocIdSetIterator.NO_MORE_DOCS);
+ assertTrue(
+ TestUtil.docs(random(), ir, "binary", newBytesRef("doc2field1"), null, PostingsEnum.NONE)
+ .nextDoc()
+ != DocIdSetIterator.NO_MORE_DOCS);
+ assertTrue(
+ TestUtil.docs(random(), ir, "binary", newBytesRef("doc3field1"), null, PostingsEnum.NONE)
+ .nextDoc()
+ != DocIdSetIterator.NO_MORE_DOCS);
+ assertTrue(
+ TestUtil.docs(random(), ir, "string", newBytesRef("doc1field2"), null, PostingsEnum.NONE)
+ .nextDoc()
+ != DocIdSetIterator.NO_MORE_DOCS);
+ assertTrue(
+ TestUtil.docs(random(), ir, "string", newBytesRef("doc2field2"), null, PostingsEnum.NONE)
+ .nextDoc()
+ != DocIdSetIterator.NO_MORE_DOCS);
+ assertTrue(
+ TestUtil.docs(random(), ir, "string", newBytesRef("doc3field2"), null, PostingsEnum.NONE)
+ .nextDoc()
+ != DocIdSetIterator.NO_MORE_DOCS);
ir.close();
dir.close();
@@ -2322,11 +2337,13 @@ public class TestIndexWriter extends LuceneTestCase {
iwc.setMergePolicy(newLogMergePolicy());
IndexWriter iwriter = new IndexWriter(directory, iwc);
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("foo!")));
- doc.add(new SortedDocValuesField("dv", new BytesRef("bar!")));
- expectThrows(IllegalArgumentException.class, () -> {
- iwriter.addDocument(doc);
- });
+ doc.add(new SortedDocValuesField("dv", newBytesRef("foo!")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("bar!")));
+ expectThrows(
+ IllegalArgumentException.class,
+ () -> {
+ iwriter.addDocument(doc);
+ });
iwriter.commit();
assertFalse(iwriter.hasUncommittedChanges());
@@ -2338,7 +2355,7 @@ public class TestIndexWriter extends LuceneTestCase {
Directory dir = newDirectory();
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("foo!")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("foo!")));
w.addDocument(doc);
w.close();
// Close again should have no effect
@@ -2350,7 +2367,7 @@ public class TestIndexWriter extends LuceneTestCase {
Directory dir = newDirectory();
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("foo!")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("foo!")));
w.addDocument(doc);
w.rollback();
// Close after rollback should have no effect
@@ -2362,7 +2379,7 @@ public class TestIndexWriter extends LuceneTestCase {
Directory dir = newDirectory();
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random())));
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("foo!")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("foo!")));
w.addDocument(doc);
w.close();
// Rollback after close should have no effect
@@ -2417,7 +2434,7 @@ public class TestIndexWriter extends LuceneTestCase {
});
IndexWriter w = new IndexWriter(dir, iwc);
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("foo!")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("foo!")));
w.addDocument(doc);
w.commit();
w.addDocument(doc);
@@ -3594,7 +3611,7 @@ public class TestIndexWriter extends LuceneTestCase {
IndexWriter w = new IndexWriter(d, newIndexWriterConfig(new MockAnalyzer(random())));
Document doc = new Document();
Token token = new Token("bar", 0, 3);
- BytesRef evil = new BytesRef(new byte[1024]);
+ BytesRef evil = newBytesRef(new byte[1024]);
evil.offset = 1000; // offset + length is now out of bounds.
token.setPayload(evil);
doc.add(new TextField("foo", new CannedTokenStream(token)));
@@ -3685,7 +3702,7 @@ public class TestIndexWriter extends LuceneTestCase {
Bits liveDocs = sr.getLiveDocs();
for (Integer dId : uniqueDocs) {
boolean mustBeHardDeleted = dId % 2 == 0;
- if (iterator.seekExact(new BytesRef(dId.toString()))) {
+ if (iterator.seekExact(newBytesRef(dId.toString()))) {
PostingsEnum postings = iterator.postings(null);
while (postings.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) {
if (liveDocs.get(postings.docID())) {
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java
index f71d6a2..0c839d8 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java
@@ -128,7 +128,7 @@ public class TestIndexableField extends LuceneTestCase {
for(int idx=0;idx<bytes.length;idx++) {
bytes[idx] = (byte) (counter+idx);
}
- return new BytesRef(bytes, 0, bytes.length);
+ return newBytesRef(bytes, 0, bytes.length);
} else {
return null;
}
@@ -282,14 +282,14 @@ public class TestIndexableField extends LuceneTestCase {
final Terms tfv = r.getTermVectors(docID).terms(name);
assertNotNull(tfv);
TermsEnum termsEnum = tfv.iterator();
- assertEquals(new BytesRef(""+counter), termsEnum.next());
+ assertEquals(newBytesRef("" + counter), termsEnum.next());
assertEquals(1, termsEnum.totalTermFreq());
PostingsEnum dpEnum = termsEnum.postings(null, PostingsEnum.ALL);
assertTrue(dpEnum.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
assertEquals(1, dpEnum.freq());
assertEquals(1, dpEnum.nextPosition());
- assertEquals(new BytesRef("text"), termsEnum.next());
+ assertEquals(newBytesRef("text"), termsEnum.next());
assertEquals(1, termsEnum.totalTermFreq());
dpEnum = termsEnum.postings(dpEnum, PostingsEnum.ALL);
assertTrue(dpEnum.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java
index 5af847d..bbacf41 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java
@@ -87,12 +87,15 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
protected void addRandomFields(Document doc) {
if (usually()) {
doc.add(new NumericDocValuesField("ndv", random().nextInt(1 << 12)));
- doc.add(new BinaryDocValuesField("bdv", new BytesRef(TestUtil.randomSimpleString(random()))));
- doc.add(new SortedDocValuesField("sdv", new BytesRef(TestUtil.randomSimpleString(random(), 2))));
+ doc.add(new BinaryDocValuesField("bdv", newBytesRef(TestUtil.randomSimpleString(random()))));
+ doc.add(
+ new SortedDocValuesField("sdv", newBytesRef(TestUtil.randomSimpleString(random(), 2))));
}
int numValues = random().nextInt(5);
for (int i = 0; i < numValues; ++i) {
- doc.add(new SortedSetDocValuesField("ssdv", new BytesRef(TestUtil.randomSimpleString(random(), 2))));
+ doc.add(
+ new SortedSetDocValuesField(
+ "ssdv", newBytesRef(TestUtil.randomSimpleString(random(), 2))));
}
numValues = random().nextInt(5);
for (int i = 0; i < numValues; ++i) {
@@ -214,8 +217,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
String longTerm = "longtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongterm";
String text = "This is the text to be indexed. " + longTerm;
doc.add(newTextField("fieldname", text, Field.Store.YES));
- doc.add(new BinaryDocValuesField("dv1", new BytesRef(longTerm)));
- doc.add(new BinaryDocValuesField("dv2", new BytesRef(text)));
+ doc.add(new BinaryDocValuesField("dv1", newBytesRef(longTerm)));
+ doc.add(new BinaryDocValuesField("dv2", newBytesRef(text)));
iwriter.addDocument(doc);
iwriter.close();
@@ -236,11 +239,11 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv1");
assertEquals(hitDocID, dv.advance(hitDocID));
BytesRef scratch = dv.binaryValue();
- assertEquals(new BytesRef(longTerm), scratch);
+ assertEquals(newBytesRef(longTerm), scratch);
dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv2");
assertEquals(hitDocID, dv.advance(hitDocID));
scratch = dv.binaryValue();
- assertEquals(new BytesRef(text), scratch);
+ assertEquals(newBytesRef(text), scratch);
}
ireader.close();
@@ -265,7 +268,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
for (int j = 0; j < value.length; j++) {
value[j] = (byte) random().nextInt(vocabRange);
}
- BytesRef bytesRef = new BytesRef(value);
+ BytesRef bytesRef = newBytesRef(value);
writtenValues.put(i, bytesRef);
doc.add(newTextField("id", Integer.toString(i), Field.Store.YES));
doc.add(new BinaryDocValuesField("dv1", bytesRef));
@@ -306,7 +309,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
String text = "This is the text to be indexed. " + longTerm;
doc.add(newTextField("fieldname", text, Field.Store.YES));
doc.add(new NumericDocValuesField("dv1", 5));
- doc.add(new BinaryDocValuesField("dv2", new BytesRef("hello world")));
+ doc.add(new BinaryDocValuesField("dv2", newBytesRef("hello world")));
iwriter.addDocument(doc);
iwriter.close();
@@ -329,7 +332,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(5, dv.longValue());
BinaryDocValues dv2 = ireader.leaves().get(0).reader().getBinaryDocValues("dv2");
assertEquals(docID, dv2.advance(docID));
- assertEquals(new BytesRef("hello world"), dv2.binaryValue());
+ assertEquals(newBytesRef("hello world"), dv2.binaryValue());
}
ireader.close();
@@ -343,9 +346,9 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
String longTerm = "longtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongterm";
String text = "This is the text to be indexed. " + longTerm;
doc.add(newTextField("fieldname", text, Field.Store.YES));
- doc.add(new SortedDocValuesField("dv1", new BytesRef("hello hello")));
+ doc.add(new SortedDocValuesField("dv1", newBytesRef("hello hello")));
doc.add(new NumericDocValuesField("dv2", 5));
- doc.add(new BinaryDocValuesField("dv3", new BytesRef("hello world")));
+ doc.add(new BinaryDocValuesField("dv3", newBytesRef("hello world")));
iwriter.addDocument(doc);
iwriter.close();
@@ -367,13 +370,13 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(docID, dv.advance(docID));
int ord = dv.ordValue();
BytesRef scratch = dv.lookupOrd(ord);
- assertEquals(new BytesRef("hello hello"), scratch);
+ assertEquals(newBytesRef("hello hello"), scratch);
NumericDocValues dv2 = ireader.leaves().get(0).reader().getNumericDocValues("dv2");
assertEquals(docID, dv2.advance(docID));
assertEquals(5, dv2.longValue());
BinaryDocValues dv3 = ireader.leaves().get(0).reader().getBinaryDocValues("dv3");
assertEquals(docID, dv3.advance(docID));
- assertEquals(new BytesRef("hello world"), dv3.binaryValue());
+ assertEquals(newBytesRef("hello world"), dv3.binaryValue());
}
ireader.close();
@@ -387,8 +390,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
String longTerm = "longtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongterm";
String text = "This is the text to be indexed. " + longTerm;
doc.add(newTextField("fieldname", text, Field.Store.YES));
- doc.add(new BinaryDocValuesField("dv1", new BytesRef("hello world")));
- doc.add(new SortedDocValuesField("dv2", new BytesRef("hello hello")));
+ doc.add(new BinaryDocValuesField("dv1", newBytesRef("hello world")));
+ doc.add(new SortedDocValuesField("dv2", newBytesRef("hello hello")));
doc.add(new NumericDocValuesField("dv3", 5));
iwriter.addDocument(doc);
iwriter.close();
@@ -401,7 +404,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Query query = new TermQuery(new Term("fieldname", "text"));
TopDocs hits = isearcher.search(query, 1);
assertEquals(1, hits.totalHits.value);
- BytesRef scratch = new BytesRef();
+ BytesRef scratch = newBytesRef();
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
int docID = hits.scoreDocs[i].doc;
@@ -412,13 +415,13 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(docID, dv.advance(docID));
int ord = dv.ordValue();
scratch = dv.lookupOrd(ord);
- assertEquals(new BytesRef("hello hello"), scratch);
+ assertEquals(newBytesRef("hello hello"), scratch);
NumericDocValues dv2 = ireader.leaves().get(0).reader().getNumericDocValues("dv3");
assertEquals(docID, dv2.advance(docID));
assertEquals(5, dv2.longValue());
BinaryDocValues dv3 = ireader.leaves().get(0).reader().getBinaryDocValues("dv1");
assertEquals(docID, dv3.advance(docID));
- assertEquals(new BytesRef("hello world"), dv3.binaryValue());
+ assertEquals(newBytesRef("hello world"), dv3.binaryValue());
}
ireader.close();
@@ -561,7 +564,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
String longTerm = "longtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongterm";
String text = "This is the text to be indexed. " + longTerm;
doc.add(newTextField("fieldname", text, Field.Store.YES));
- doc.add(new BinaryDocValuesField("dv", new BytesRef("hello world")));
+ doc.add(new BinaryDocValuesField("dv", newBytesRef("hello world")));
iwriter.addDocument(doc);
iwriter.close();
@@ -581,7 +584,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
assertEquals(hitDocID, dv.advance(hitDocID));
- assertEquals(new BytesRef("hello world"), dv.binaryValue());
+ assertEquals(newBytesRef("hello world"), dv.binaryValue());
}
ireader.close();
@@ -597,12 +600,12 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
doc.add(newField("id", "0", StringField.TYPE_STORED));
- doc.add(new BinaryDocValuesField("dv", new BytesRef("hello world 1")));
+ doc.add(new BinaryDocValuesField("dv", newBytesRef("hello world 1")));
iwriter.addDocument(doc);
iwriter.commit();
doc = new Document();
doc.add(newField("id", "1", StringField.TYPE_STORED));
- doc.add(new BinaryDocValuesField("dv", new BytesRef("hello 2")));
+ doc.add(new BinaryDocValuesField("dv", newBytesRef("hello 2")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
iwriter.close();
@@ -639,7 +642,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.addDocument(doc);
doc = new Document();
doc.add(new StringField("id", "1", Field.Store.NO));
- doc.add(new BinaryDocValuesField("field", new BytesRef("hi")));
+ doc.add(new BinaryDocValuesField("field", newBytesRef("hi")));
iwriter.addDocument(doc);
iwriter.commit();
iwriter.deleteDocuments(new Term("id", "1"));
@@ -665,7 +668,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
String longTerm = "longtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongtermlongterm";
String text = "This is the text to be indexed. " + longTerm;
doc.add(newTextField("fieldname", text, Field.Store.YES));
- doc.add(new SortedDocValuesField("dv", new BytesRef("hello world")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("hello world")));
iwriter.addDocument(doc);
iwriter.close();
@@ -677,7 +680,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Query query = new TermQuery(new Term("fieldname", "text"));
TopDocs hits = isearcher.search(query, 1);
assertEquals(1, hits.totalHits.value);
- BytesRef scratch = new BytesRef();
+ BytesRef scratch = newBytesRef();
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
int docID = hits.scoreDocs[i].doc;
@@ -687,7 +690,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
assertEquals(docID, dv.advance(docID));
scratch = dv.lookupOrd(dv.ordValue());
- assertEquals(new BytesRef("hello world"), scratch);
+ assertEquals(newBytesRef("hello world"), scratch);
}
ireader.close();
@@ -702,10 +705,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
conf.setMergePolicy(newLogMergePolicy());
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("hello world 1")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("hello world 1")));
iwriter.addDocument(doc);
doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("hello world 2")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("hello world 2")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
iwriter.close();
@@ -714,7 +717,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- BytesRef scratch = new BytesRef();
+ BytesRef scratch = newBytesRef();
assertEquals(0, dv.nextDoc());
scratch = dv.lookupOrd(dv.ordValue());
assertEquals("hello world 1", scratch.utf8ToString());
@@ -734,13 +737,13 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
conf.setMergePolicy(newLogMergePolicy());
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("hello world 1")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("hello world 1")));
iwriter.addDocument(doc);
doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("hello world 2")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("hello world 2")));
iwriter.addDocument(doc);
doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("hello world 1")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("hello world 1")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
iwriter.close();
@@ -774,12 +777,12 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
doc.add(newField("id", "0", StringField.TYPE_STORED));
- doc.add(new SortedDocValuesField("dv", new BytesRef("hello world 1")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("hello world 1")));
iwriter.addDocument(doc);
iwriter.commit();
doc = new Document();
doc.add(newField("id", "1", StringField.TYPE_STORED));
- doc.add(new SortedDocValuesField("dv", new BytesRef("hello world 2")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("hello world 2")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
iwriter.close();
@@ -790,11 +793,11 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
assertEquals(2, dv.getValueCount()); // 2 ords
assertEquals(0, dv.nextDoc());
- BytesRef scratch = dv.binaryValue();
- assertEquals(new BytesRef("hello world 1"), scratch);
+ BytesRef scratch = dv.lookupOrd(dv.ordValue());
+ assertEquals(newBytesRef("hello world 1"), scratch);
scratch = dv.lookupOrd(1);
- assertEquals(new BytesRef("hello world 2"), scratch);
- for(int i=0;i<2;i++) {
+ assertEquals(newBytesRef("hello world 2"), scratch);
+ for (int i = 0; i < 2; i++) {
Document doc2 = ireader.leaves().get(0).reader().document(i);
String expected;
if (doc2.get("id").equals("0")) {
@@ -825,7 +828,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.addDocument(doc);
doc = new Document();
doc.add(new StringField("id", "1", Field.Store.NO));
- doc.add(new SortedDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
iwriter.commit();
iwriter.deleteDocuments(new Term("id", "1"));
@@ -849,7 +852,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
conf.setMergePolicy(newLogMergePolicy());
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
- doc.add(new BinaryDocValuesField("dv", new BytesRef("hello\nworld\r1")));
+ doc.add(new BinaryDocValuesField("dv", newBytesRef("hello\nworld\r1")));
iwriter.addDocument(doc);
iwriter.close();
@@ -858,7 +861,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
assertEquals(0, dv.nextDoc());
- assertEquals(new BytesRef("hello\nworld\r1"), dv.binaryValue());
+ assertEquals(newBytesRef("hello\nworld\r1"), dv.binaryValue());
ireader.close();
directory.close();
@@ -872,7 +875,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
conf.setMergePolicy(newLogMergePolicy());
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("hello world 2")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("hello world 2")));
iwriter.addDocument(doc);
// 2nd doc missing the DV field
iwriter.addDocument(new Document());
@@ -884,7 +887,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
assertEquals(0, dv.nextDoc());
BytesRef scratch = dv.lookupOrd(dv.ordValue());
- assertEquals(new BytesRef("hello world 2"), scratch);
+ assertEquals(newBytesRef("hello world 2"), scratch);
assertEquals(NO_MORE_DOCS, dv.nextDoc());
ireader.close();
directory.close();
@@ -898,15 +901,15 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, iwconfig);
Document doc = new Document();
- doc.add(new SortedDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
doc = new Document();
- doc.add(new SortedDocValuesField("field", new BytesRef("world")));
+ doc.add(new SortedDocValuesField("field", newBytesRef("world")));
iwriter.addDocument(doc);
doc = new Document();
- doc.add(new SortedDocValuesField("field", new BytesRef("beer")));
+ doc.add(new SortedDocValuesField("field", newBytesRef("beer")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
@@ -927,27 +930,27 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(2, termsEnum.ord());
// seekCeil()
- assertEquals(SeekStatus.NOT_FOUND, termsEnum.seekCeil(new BytesRef("ha!")));
+ assertEquals(SeekStatus.NOT_FOUND, termsEnum.seekCeil(newBytesRef("ha!")));
assertEquals("hello", termsEnum.term().utf8ToString());
assertEquals(1, termsEnum.ord());
- assertEquals(SeekStatus.FOUND, termsEnum.seekCeil(new BytesRef("beer")));
+ assertEquals(SeekStatus.FOUND, termsEnum.seekCeil(newBytesRef("beer")));
assertEquals("beer", termsEnum.term().utf8ToString());
assertEquals(0, termsEnum.ord());
- assertEquals(SeekStatus.END, termsEnum.seekCeil(new BytesRef("zzz")));
- assertEquals(SeekStatus.NOT_FOUND, termsEnum.seekCeil(new BytesRef("aba")));
+ assertEquals(SeekStatus.END, termsEnum.seekCeil(newBytesRef("zzz")));
+ assertEquals(SeekStatus.NOT_FOUND, termsEnum.seekCeil(newBytesRef("aba")));
assertEquals(0, termsEnum.ord());
// seekExact()
- assertTrue(termsEnum.seekExact(new BytesRef("beer")));
+ assertTrue(termsEnum.seekExact(newBytesRef("beer")));
assertEquals("beer", termsEnum.term().utf8ToString());
assertEquals(0, termsEnum.ord());
- assertTrue(termsEnum.seekExact(new BytesRef("hello")));
+ assertTrue(termsEnum.seekExact(newBytesRef("hello")));
assertEquals(Codec.getDefault().toString(), "hello", termsEnum.term().utf8ToString());
assertEquals(1, termsEnum.ord());
- assertTrue(termsEnum.seekExact(new BytesRef("world")));
+ assertTrue(termsEnum.seekExact(newBytesRef("world")));
assertEquals("world", termsEnum.term().utf8ToString());
assertEquals(2, termsEnum.ord());
- assertFalse(termsEnum.seekExact(new BytesRef("bogus")));
+ assertFalse(termsEnum.seekExact(newBytesRef("bogus")));
// seek(ord)
termsEnum.seekExact(0);
@@ -986,10 +989,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
conf.setMergePolicy(newLogMergePolicy());
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("")));
iwriter.addDocument(doc);
doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
iwriter.close();
@@ -1017,10 +1020,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
conf.setMergePolicy(newLogMergePolicy());
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
- doc.add(new BinaryDocValuesField("dv", new BytesRef("")));
+ doc.add(new BinaryDocValuesField("dv", newBytesRef("")));
iwriter.addDocument(doc);
doc = new Document();
- doc.add(new BinaryDocValuesField("dv", new BytesRef("")));
+ doc.add(new BinaryDocValuesField("dv", newBytesRef("")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
iwriter.close();
@@ -1047,8 +1050,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
byte bytes[] = new byte[32766];
- BytesRef b = new BytesRef(bytes);
random().nextBytes(bytes);
+ BytesRef b = newBytesRef(bytes);
doc.add(new BinaryDocValuesField("dv", b));
iwriter.addDocument(doc);
iwriter.close();
@@ -1058,7 +1061,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
assertEquals(0, dv.nextDoc());
- assertEquals(new BytesRef(bytes), dv.binaryValue());
+ assertEquals(newBytesRef(bytes), dv.binaryValue());
ireader.close();
directory.close();
@@ -1073,8 +1076,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
byte bytes[] = new byte[32766];
- BytesRef b = new BytesRef(bytes);
random().nextBytes(bytes);
+ BytesRef b = newBytesRef(bytes);
doc.add(new SortedDocValuesField("dv", b));
iwriter.addDocument(doc);
iwriter.close();
@@ -1084,7 +1087,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assert ireader.leaves().size() == 1;
BinaryDocValues dv = DocValues.getBinary(ireader.leaves().get(0).reader(), "dv");
assertEquals(0, dv.nextDoc());
- assertEquals(new BytesRef(bytes), dv.binaryValue());
+ assertEquals(newBytesRef(bytes), dv.lookupOrd(dv.ordValue()));
ireader.close();
directory.close();
}
@@ -1097,7 +1100,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
conf.setMergePolicy(newLogMergePolicy());
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
- doc.add(new BinaryDocValuesField("dv", new BytesRef("boo!")));
+ doc.add(new BinaryDocValuesField("dv", newBytesRef("boo!")));
iwriter.addDocument(doc);
iwriter.close();
@@ -1120,7 +1123,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
conf.setMergePolicy(newLogMergePolicy());
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("boo!")));
+ doc.add(new SortedDocValuesField("dv", newBytesRef("boo!")));
iwriter.addDocument(doc);
iwriter.close();
@@ -1194,7 +1197,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Document doc = new Document();
doc.add(newTextField("id", "" + i, Field.Store.YES));
String string = TestUtil.randomRealisticUnicodeString(random(), 1, maxLength);
- BytesRef br = new BytesRef(string);
+ BytesRef br = newBytesRef(string);
doc.add(new SortedDocValuesField("field", br));
hash.add(br);
docToString.put("" + i, string);
@@ -1217,7 +1220,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
String id = "" + i + numDocs;
doc.add(newTextField("id", id, Field.Store.YES));
String string = TestUtil.randomRealisticUnicodeString(random(), 1, maxLength);
- BytesRef br = new BytesRef(string);
+ BytesRef br = newBytesRef(string);
hash.add(br);
docToString.put(id, string);
doc.add(new SortedDocValuesField("field", br));
@@ -1227,7 +1230,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
IndexReader reader = w.getReader();
SortedDocValues docValues = MultiDocValues.getSortedValues(reader, "field");
int[] sort = hash.sort();
- BytesRef expected = new BytesRef();
+ BytesRef expected = newBytesRef();
assertEquals(hash.size(), docValues.getValueCount());
for (int i = 0; i < hash.size(); i++) {
hash.get(sort[i], expected);
@@ -1240,9 +1243,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
for (Entry<String, String> entry : entrySet) {
// pk lookup
- PostingsEnum termPostingsEnum = TestUtil.docs(random(), reader, "id", new BytesRef(entry.getKey()), null, 0);
+ PostingsEnum termPostingsEnum =
+ TestUtil.docs(random(), reader, "id", newBytesRef(entry.getKey()), null, 0);
int docId = termPostingsEnum.nextDoc();
- expected = new BytesRef(entry.getValue());
+ expected = newBytesRef(entry.getValue());
docValues = MultiDocValues.getSortedValues(reader, "field");
assertEquals(docId, docValues.advance(docId));
final BytesRef actual = docValues.binaryValue();
@@ -1476,7 +1480,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Document doc = new Document();
Field idField = new StringField("id", "", Field.Store.NO);
Field storedField = new StoredField("stored", new byte[0]);
- Field dvField = new BinaryDocValuesField("dv", new BytesRef());
+ Field dvField = new BinaryDocValuesField("dv", newBytesRef());
doc.add(idField);
doc.add(storedField);
doc.add(dvField);
@@ -1598,7 +1602,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Document doc = new Document();
Field idField = new StringField("id", "", Field.Store.NO);
Field storedField = new StoredField("stored", new byte[0]);
- Field dvField = new SortedDocValuesField("dv", new BytesRef());
+ Field dvField = new SortedDocValuesField("dv", newBytesRef());
doc.add(idField);
doc.add(storedField);
doc.add(dvField);
@@ -1716,7 +1720,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory);
Document doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
DirectoryReader ireader = iwriter.getReader();
@@ -1728,7 +1732,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("hello"), bytes);
+ assertEquals(newBytesRef("hello"), bytes);
ireader.close();
directory.close();
@@ -1739,8 +1743,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory);
Document doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
- doc.add(new SortedSetDocValuesField("field2", new BytesRef("world")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field2", newBytesRef("world")));
iwriter.addDocument(doc);
DirectoryReader ireader = iwriter.getReader();
@@ -1753,8 +1757,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("hello"), bytes);
-
+ assertEquals(newBytesRef("hello"), bytes);
+
dv = getOnlyLeafReader(ireader).getSortedSetDocValues("field2");
assertEquals(0, dv.nextDoc());
@@ -1762,8 +1766,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("world"), bytes);
-
+ assertEquals(newBytesRef("world"), bytes);
+
ireader.close();
directory.close();
}
@@ -1776,12 +1780,12 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, iwconfig);
Document doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
iwriter.commit();
doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("world")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("world")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
@@ -1796,14 +1800,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("hello"), bytes);
-
+ assertEquals(newBytesRef("hello"), bytes);
+
assertEquals(1, dv.nextDoc());
assertEquals(1, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
bytes = dv.lookupOrd(1);
- assertEquals(new BytesRef("world"), bytes);
+ assertEquals(newBytesRef("world"), bytes);
ireader.close();
directory.close();
@@ -1814,8 +1818,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory);
Document doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
- doc.add(new SortedSetDocValuesField("field", new BytesRef("world")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("world")));
iwriter.addDocument(doc);
DirectoryReader ireader = iwriter.getReader();
@@ -1829,10 +1833,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("hello"), bytes);
-
+ assertEquals(newBytesRef("hello"), bytes);
+
bytes = dv.lookupOrd(1);
- assertEquals(new BytesRef("world"), bytes);
+ assertEquals(newBytesRef("world"), bytes);
ireader.close();
directory.close();
@@ -1843,8 +1847,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory);
Document doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("world")));
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("world")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
DirectoryReader ireader = iwriter.getReader();
@@ -1858,10 +1862,10 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("hello"), bytes);
-
+ assertEquals(newBytesRef("hello"), bytes);
+
bytes = dv.lookupOrd(1);
- assertEquals(new BytesRef("world"), bytes);
+ assertEquals(newBytesRef("world"), bytes);
ireader.close();
directory.close();
@@ -1875,14 +1879,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, iwconfig);
Document doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
- doc.add(new SortedSetDocValuesField("field", new BytesRef("world")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("world")));
iwriter.addDocument(doc);
iwriter.commit();
doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
- doc.add(new SortedSetDocValuesField("field", new BytesRef("beer")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("beer")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
@@ -1903,13 +1907,13 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("beer"), bytes);
-
+ assertEquals(newBytesRef("beer"), bytes);
+
bytes = dv.lookupOrd(1);
- assertEquals(new BytesRef("hello"), bytes);
-
+ assertEquals(newBytesRef("hello"), bytes);
+
bytes = dv.lookupOrd(2);
- assertEquals(new BytesRef("world"), bytes);
+ assertEquals(newBytesRef("world"), bytes);
ireader.close();
directory.close();
@@ -1923,7 +1927,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, iwconfig);
Document doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
doc = new Document();
@@ -1940,8 +1944,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("hello"), bytes);
-
+ assertEquals(newBytesRef("hello"), bytes);
+
ireader.close();
directory.close();
}
@@ -1954,7 +1958,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, iwconfig);
Document doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
iwriter.commit();
@@ -1973,8 +1977,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("hello"), bytes);
-
+ assertEquals(newBytesRef("hello"), bytes);
+
ireader.close();
directory.close();
}
@@ -1990,7 +1994,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.addDocument(doc);
doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
@@ -2005,8 +2009,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("hello"), bytes);
-
+ assertEquals(newBytesRef("hello"), bytes);
+
ireader.close();
directory.close();
}
@@ -2023,7 +2027,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.commit();
doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
iwriter.forceMerge(1);
@@ -2038,8 +2042,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(NO_MORE_ORDS, dv.nextOrd());
BytesRef bytes = dv.lookupOrd(0);
- assertEquals(new BytesRef("hello"), bytes);
-
+ assertEquals(newBytesRef("hello"), bytes);
+
ireader.close();
directory.close();
}
@@ -2056,7 +2060,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iwriter.addDocument(doc);
doc = new Document();
doc.add(new StringField("id", "1", Field.Store.NO));
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
iwriter.commit();
iwriter.deleteDocuments(new Term("id", "1"));
@@ -2080,9 +2084,9 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, iwconfig);
Document doc = new Document();
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
- doc.add(new SortedSetDocValuesField("field", new BytesRef("world")));
- doc.add(new SortedSetDocValuesField("field", new BytesRef("beer")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("world")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("beer")));
iwriter.addDocument(doc);
DirectoryReader ireader = iwriter.getReader();
@@ -2102,25 +2106,25 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
assertEquals(2, termsEnum.ord());
// seekCeil()
- assertEquals(SeekStatus.NOT_FOUND, termsEnum.seekCeil(new BytesRef("ha!")));
+ assertEquals(SeekStatus.NOT_FOUND, termsEnum.seekCeil(newBytesRef("ha!")));
assertEquals("hello", termsEnum.term().utf8ToString());
assertEquals(1, termsEnum.ord());
- assertEquals(SeekStatus.FOUND, termsEnum.seekCeil(new BytesRef("beer")));
+ assertEquals(SeekStatus.FOUND, termsEnum.seekCeil(newBytesRef("beer")));
assertEquals("beer", termsEnum.term().utf8ToString());
assertEquals(0, termsEnum.ord());
- assertEquals(SeekStatus.END, termsEnum.seekCeil(new BytesRef("zzz")));
-
+ assertEquals(SeekStatus.END, termsEnum.seekCeil(newBytesRef("zzz")));
+
// seekExact()
- assertTrue(termsEnum.seekExact(new BytesRef("beer")));
+ assertTrue(termsEnum.seekExact(newBytesRef("beer")));
assertEquals("beer", termsEnum.term().utf8ToString());
assertEquals(0, termsEnum.ord());
- assertTrue(termsEnum.seekExact(new BytesRef("hello")));
+ assertTrue(termsEnum.seekExact(newBytesRef("hello")));
assertEquals("hello", termsEnum.term().utf8ToString());
assertEquals(1, termsEnum.ord());
- assertTrue(termsEnum.seekExact(new BytesRef("world")));
+ assertTrue(termsEnum.seekExact(newBytesRef("world")));
assertEquals("world", termsEnum.term().utf8ToString());
assertEquals(2, termsEnum.ord());
- assertFalse(termsEnum.seekExact(new BytesRef("bogus")));
+ assertFalse(termsEnum.seekExact(newBytesRef("bogus")));
// seek(ord)
termsEnum.seekExact(0);
@@ -2187,7 +2191,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
ArrayList<String> unordered = new ArrayList<>(values);
Collections.shuffle(unordered, random());
for (String v : unordered) {
- doc.add(new SortedSetDocValuesField("dv", new BytesRef(v)));
+ doc.add(new SortedSetDocValuesField("dv", newBytesRef(v)));
}
writer.addDocument(doc);
@@ -2516,7 +2520,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iw = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
doc.add(new StringField("id", "0", Field.Store.YES));
- doc.add(new BinaryDocValuesField("dv1", new BytesRef()));
+ doc.add(new BinaryDocValuesField("dv1", newBytesRef()));
iw.addDocument(doc);
doc = new Document();
doc.add(new StringField("id", "1", Field.Store.YES));
@@ -2529,7 +2533,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
LeafReader ar = ir.leaves().get(0).reader();
BinaryDocValues dv = ar.getBinaryDocValues("dv1");
assertEquals(0, dv.nextDoc());
- assertEquals(new BytesRef(), dv.binaryValue());
+ assertEquals(newBytesRef(), dv.binaryValue());
assertEquals(NO_MORE_DOCS, dv.nextDoc());
ir.close();
directory.close();
@@ -2542,7 +2546,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iw = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
doc.add(new StringField("id", "0", Field.Store.YES));
- doc.add(new BinaryDocValuesField("dv1", new BytesRef()));
+ doc.add(new BinaryDocValuesField("dv1", newBytesRef()));
iw.addDocument(doc);
iw.commit();
doc = new Document();
@@ -2556,7 +2560,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
LeafReader ar = ir.leaves().get(0).reader();
BinaryDocValues dv = ar.getBinaryDocValues("dv1");
assertEquals(0, dv.nextDoc());
- assertEquals(new BytesRef(), dv.binaryValue());
+ assertEquals(newBytesRef(), dv.binaryValue());
assertEquals(NO_MORE_DOCS, dv.nextDoc());
ir.close();
directory.close();
@@ -2569,7 +2573,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iw = new RandomIndexWriter(random(), directory, conf);
Document doc = new Document();
doc.add(new StringField("id", "0", Field.Store.YES));
- doc.add(new BinaryDocValuesField("dv1", new BytesRef()));
+ doc.add(new BinaryDocValuesField("dv1", newBytesRef()));
iw.addDocument(doc);
doc = new Document();
doc.add(new StringField("id", "1", Field.Store.YES));
@@ -2577,7 +2581,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
iw.commit();
doc = new Document();
doc.add(new StringField("id", "2", Field.Store.YES));
- doc.add(new BinaryDocValuesField("dv1", new BytesRef("boo")));
+ doc.add(new BinaryDocValuesField("dv1", newBytesRef("boo")));
iw.addDocument(doc);
iw.forceMerge(1);
iw.close();
@@ -2587,9 +2591,9 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
LeafReader ar = ir.leaves().get(0).reader();
BinaryDocValues dv = ar.getBinaryDocValues("dv1");
assertEquals(0, dv.nextDoc());
- assertEquals(new BytesRef(), dv.binaryValue());
+ assertEquals(newBytesRef(), dv.binaryValue());
assertEquals(2, dv.nextDoc());
- assertEquals(new BytesRef("boo"), dv.binaryValue());
+ assertEquals(newBytesRef("boo"), dv.binaryValue());
assertEquals(NO_MORE_DOCS, dv.nextDoc());
ir.close();
directory.close();
@@ -2603,8 +2607,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Document doc = new Document();
Field idField = new StringField("id", "", Field.Store.NO);
Field storedBinField = new StoredField("storedBin", new byte[0]);
- Field dvBinField = new BinaryDocValuesField("dvBin", new BytesRef());
- Field dvSortedField = new SortedDocValuesField("dvSorted", new BytesRef());
+ Field dvBinField = new BinaryDocValuesField("dvBin", newBytesRef());
+ Field dvSortedField = new SortedDocValuesField("dvSorted", newBytesRef());
Field storedNumericField = new StoredField("storedNum", "");
Field dvNumericField = new NumericDocValuesField("dvNum", 0);
doc.add(idField);
@@ -2695,8 +2699,8 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter writer = new RandomIndexWriter(random(), dir, conf);
Field idField = new StringField("id", "", Field.Store.NO);
Field storedBinField = new StoredField("storedBin", new byte[0]);
- Field dvBinField = new BinaryDocValuesField("dvBin", new BytesRef());
- Field dvSortedField = new SortedDocValuesField("dvSorted", new BytesRef());
+ Field dvBinField = new BinaryDocValuesField("dvBin", newBytesRef());
+ Field dvSortedField = new SortedDocValuesField("dvSorted", newBytesRef());
Field storedNumericField = new StoredField("storedNum", "");
Field dvNumericField = new NumericDocValuesField("dvNum", 0);
@@ -2730,7 +2734,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
values.add(TestUtil.randomSimpleString(random()));
}
for (String v : values) {
- doc.add(new SortedSetDocValuesField("dvSortedSet", new BytesRef(v)));
+ doc.add(new SortedSetDocValuesField("dvSortedSet", newBytesRef(v)));
doc.add(new StoredField("storedSortedSet", v));
}
int numSortedNumericFields = random().nextInt(3);
@@ -2852,12 +2856,17 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Document doc = new Document();
for (int j = 0; j < numSortedSets; j++) {
- doc.add(new SortedSetDocValuesField("ss" + j, new BytesRef(TestUtil.randomSimpleString(random()))));
- doc.add(new SortedSetDocValuesField("ss" + j, new BytesRef(TestUtil.randomSimpleString(random()))));
+ doc.add(
+ new SortedSetDocValuesField(
+ "ss" + j, newBytesRef(TestUtil.randomSimpleString(random()))));
+ doc.add(
+ new SortedSetDocValuesField(
+ "ss" + j, newBytesRef(TestUtil.randomSimpleString(random()))));
}
for (int j = 0; j < numBinaries; j++) {
- doc.add(new BinaryDocValuesField("b" + j, new BytesRef(TestUtil.randomSimpleString(random()))));
+ doc.add(
+ new BinaryDocValuesField("b" + j, newBytesRef(TestUtil.randomSimpleString(random()))));
}
for (int j = 0; j < numSortedNums; j++) {
@@ -2916,17 +2925,15 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
Directory dir = newDirectory();
RandomIndexWriter w = new RandomIndexWriter(random(), dir);
- BytesRef bytes = new BytesRef();
- bytes.bytes = new byte[1<<i];
- bytes.length = 1<<i;
- for(int j=0;j<4;j++) {
+ BytesRef bytes = newBytesRef(new byte[1 << i], 0, 1 << i);
+ for (int j = 0; j < 4; j++) {
Document doc = new Document();
doc.add(new BinaryDocValuesField("field", bytes));
w.addDocument(doc);
}
Document doc = new Document();
doc.add(new StoredField("id", "5"));
- doc.add(new BinaryDocValuesField("field", new BytesRef()));
+ doc.add(new BinaryDocValuesField("field", newBytesRef()));
w.addDocument(doc);
IndexReader r = w.getReader();
w.close();
@@ -3146,12 +3153,12 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, iwconfig);
Document doc = new Document();
- SortedDocValuesField field = new SortedDocValuesField("field", new BytesRef("2"));
+ SortedDocValuesField field = new SortedDocValuesField("field", newBytesRef("2"));
doc.add(field);
iwriter.addDocument(doc);
- field.setBytesValue(new BytesRef("1"));
+ field.setBytesValue(newBytesRef("1"));
iwriter.addDocument(doc);
- field.setBytesValue(new BytesRef("3"));
+ field.setBytesValue(newBytesRef("3"));
iwriter.addDocument(doc);
iwriter.commit();
@@ -3175,14 +3182,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, iwconfig);
Document doc = new Document();
- SortedSetDocValuesField field1 = new SortedSetDocValuesField("field", new BytesRef("2"));
- SortedSetDocValuesField field2 = new SortedSetDocValuesField("field", new BytesRef("3"));
+ SortedSetDocValuesField field1 = new SortedSetDocValuesField("field", newBytesRef("2"));
+ SortedSetDocValuesField field2 = new SortedSetDocValuesField("field", newBytesRef("3"));
doc.add(field1);
doc.add(field2);
iwriter.addDocument(doc);
- field1.setBytesValue(new BytesRef("1"));
+ field1.setBytesValue(newBytesRef("1"));
iwriter.addDocument(doc);
- field2.setBytesValue(new BytesRef("2"));
+ field2.setBytesValue(newBytesRef("2"));
iwriter.addDocument(doc);
iwriter.commit();
@@ -3284,7 +3291,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Document doc = new Document();
doc.add(new StringField("id", "1", Field.Store.NO));
- doc.add(new SortedDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
final int numEmptyDocs = atLeast(1024);
for (int i = 0; i < numEmptyDocs; ++i) {
@@ -3314,7 +3321,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Document doc = new Document();
doc.add(new StringField("id", "1", Field.Store.NO));
- doc.add(new SortedSetDocValuesField("field", new BytesRef("hello")));
+ doc.add(new SortedSetDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
final int numEmptyDocs = atLeast(1024);
for (int i = 0; i < numEmptyDocs; ++i) {
@@ -3404,7 +3411,7 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
Document doc = new Document();
doc.add(new StringField("id", "1", Field.Store.NO));
- doc.add(new BinaryDocValuesField("field", new BytesRef("hello")));
+ doc.add(new BinaryDocValuesField("field", newBytesRef("hello")));
iwriter.addDocument(doc);
final int numEmptyDocs = atLeast(1024);
for (int i = 0; i < numEmptyDocs; ++i) {
@@ -3445,13 +3452,14 @@ public abstract class BaseDocValuesFormatTestCase extends BaseIndexFileFormatTes
}
public void testRandomAdvanceBinary() throws IOException {
- doTestRandomAdvance(new FieldCreator() {
- @Override
- public Field next() {
- byte[] bytes = new byte[random().nextInt(10)];
- random().nextBytes(bytes);
- return new BinaryDocValuesField("field", new BytesRef(bytes));
- }
+ doTestRandomAdvance(
+ new FieldCreator() {
+ @Override
+ public Field next() {
+ byte[] bytes = new byte[random().nextInt(10)];
+ random().nextBytes(bytes);
+ return new BinaryDocValuesField("field", newBytesRef(bytes));
+ }
@Override
public DocIdSetIterator iterator(IndexReader r) throws IOException {
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseTermVectorsFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseTermVectorsFormatTestCase.java
index 0955996..a4c62bf 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseTermVectorsFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseTermVectorsFormatTestCase.java
@@ -273,7 +273,8 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
final BytesRef payload = new BytesRef(len);
random().nextBytes(payload.bytes);
payload.length = len;
- return payload;
+
+ return newBytesRef(payload);
}
public boolean hasPayloads() {
@@ -383,7 +384,7 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
termBytes = new BytesRef[disctinctTerms];
for (int i = 0; i < disctinctTerms; ++i) {
terms[i] = TestUtil.randomRealisticUnicodeString(random());
- termBytes[i] = new BytesRef(terms[i]);
+ termBytes[i] = newBytesRef(terms[i]);
}
}
@@ -762,8 +763,8 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
Terms terms = getOnlyLeafReader(reader).getTermVector(0, "foo");
TermsEnum termsEnum = terms.iterator();
assertNotNull(termsEnum);
- assertEquals(new BytesRef("bar"), termsEnum.next());
-
+ assertEquals(newBytesRef("bar"), termsEnum.next());
+
// simple use (FREQS)
PostingsEnum postings = termsEnum.postings(null);
assertEquals(-1, postings.docID());
@@ -843,8 +844,8 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
Terms terms = getOnlyLeafReader(reader).getTermVector(0, "foo");
TermsEnum termsEnum = terms.iterator();
assertNotNull(termsEnum);
- assertEquals(new BytesRef("bar"), termsEnum.next());
-
+ assertEquals(newBytesRef("bar"), termsEnum.next());
+
// simple use (FREQS)
PostingsEnum postings = termsEnum.postings(null);
assertEquals(-1, postings.docID());
@@ -1022,8 +1023,8 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
Terms terms = getOnlyLeafReader(reader).getTermVector(0, "foo");
TermsEnum termsEnum = terms.iterator();
assertNotNull(termsEnum);
- assertEquals(new BytesRef("bar"), termsEnum.next());
-
+ assertEquals(newBytesRef("bar"), termsEnum.next());
+
// simple usage (FREQS)
PostingsEnum postings = termsEnum.postings(null);
assertEquals(-1, postings.docID());
@@ -1208,8 +1209,8 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
Terms terms = getOnlyLeafReader(reader).getTermVector(0, "foo");
TermsEnum termsEnum = terms.iterator();
assertNotNull(termsEnum);
- assertEquals(new BytesRef("bar"), termsEnum.next());
-
+ assertEquals(newBytesRef("bar"), termsEnum.next());
+
// simple usage (FREQS)
PostingsEnum postings = termsEnum.postings(null);
assertEquals(-1, postings.docID());
@@ -1380,9 +1381,9 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
IndexWriter iw = new IndexWriter(dir, iwc);
Document doc = new Document();
Token token1 = new Token("bar", 0, 3);
- token1.setPayload(new BytesRef("pay1"));
+ token1.setPayload(newBytesRef("pay1"));
Token token2 = new Token("bar", 4, 7);
- token2.setPayload(new BytesRef("pay2"));
+ token2.setPayload(newBytesRef("pay2"));
FieldType ft = new FieldType(TextField.TYPE_NOT_STORED);
ft.setStoreTermVectors(true);
ft.setStoreTermVectorPositions(true);
@@ -1394,8 +1395,8 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
Terms terms = getOnlyLeafReader(reader).getTermVector(0, "foo");
TermsEnum termsEnum = terms.iterator();
assertNotNull(termsEnum);
- assertEquals(new BytesRef("bar"), termsEnum.next());
-
+ assertEquals(newBytesRef("bar"), termsEnum.next());
+
// sugar method (FREQS)
PostingsEnum postings = termsEnum.postings(null);
assertEquals(-1, postings.docID());
@@ -1438,12 +1439,16 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(-1, docsAndPositionsEnum.startOffset());
assertEquals(-1, docsAndPositionsEnum.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum.getPayload() == null || new BytesRef("pay1").equals(docsAndPositionsEnum.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum.getPayload() == null
+ || newBytesRef("pay1").equals(docsAndPositionsEnum.getPayload()));
assertEquals(1, docsAndPositionsEnum.nextPosition());
assertEquals(-1, docsAndPositionsEnum.startOffset());
assertEquals(-1, docsAndPositionsEnum.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum.getPayload() == null || new BytesRef("pay2").equals(docsAndPositionsEnum.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum.getPayload() == null
+ || newBytesRef("pay2").equals(docsAndPositionsEnum.getPayload()));
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum.nextDoc());
// now reuse the positions
@@ -1455,12 +1460,16 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(-1, docsAndPositionsEnum2.startOffset());
assertEquals(-1, docsAndPositionsEnum2.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum2.getPayload() == null || new BytesRef("pay1").equals(docsAndPositionsEnum2.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum2.getPayload() == null
+ || newBytesRef("pay1").equals(docsAndPositionsEnum2.getPayload()));
assertEquals(1, docsAndPositionsEnum2.nextPosition());
assertEquals(-1, docsAndPositionsEnum2.startOffset());
assertEquals(-1, docsAndPositionsEnum2.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum2.getPayload() == null || new BytesRef("pay2").equals(docsAndPositionsEnum2.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum2.getPayload() == null
+ || newBytesRef("pay2").equals(docsAndPositionsEnum2.getPayload()));
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum2.nextDoc());
// payloads
@@ -1472,11 +1481,11 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(0, docsAndPositionsEnum.nextPosition());
assertEquals(-1, docsAndPositionsEnum.startOffset());
assertEquals(-1, docsAndPositionsEnum.endOffset());
- assertEquals(new BytesRef("pay1"), docsAndPositionsEnum.getPayload());
+ assertEquals(newBytesRef("pay1"), docsAndPositionsEnum.getPayload());
assertEquals(1, docsAndPositionsEnum.nextPosition());
assertEquals(-1, docsAndPositionsEnum.startOffset());
assertEquals(-1, docsAndPositionsEnum.endOffset());
- assertEquals(new BytesRef("pay2"), docsAndPositionsEnum.getPayload());
+ assertEquals(newBytesRef("pay2"), docsAndPositionsEnum.getPayload());
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum.nextDoc());
// reuse
docsAndPositionsEnum2 = termsEnum.postings(docsAndPositionsEnum, PostingsEnum.PAYLOADS);
@@ -1486,11 +1495,11 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(0, docsAndPositionsEnum2.nextPosition());
assertEquals(-1, docsAndPositionsEnum2.startOffset());
assertEquals(-1, docsAndPositionsEnum2.endOffset());
- assertEquals(new BytesRef("pay1"), docsAndPositionsEnum2.getPayload());
+ assertEquals(newBytesRef("pay1"), docsAndPositionsEnum2.getPayload());
assertEquals(1, docsAndPositionsEnum2.nextPosition());
assertEquals(-1, docsAndPositionsEnum2.startOffset());
assertEquals(-1, docsAndPositionsEnum2.endOffset());
- assertEquals(new BytesRef("pay2"), docsAndPositionsEnum2.getPayload());
+ assertEquals(newBytesRef("pay2"), docsAndPositionsEnum2.getPayload());
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum2.nextDoc());
docsAndPositionsEnum = termsEnum.postings(null, PostingsEnum.OFFSETS);
@@ -1502,12 +1511,16 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(-1, docsAndPositionsEnum.startOffset());
assertEquals(-1, docsAndPositionsEnum.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum.getPayload() == null || new BytesRef("pay1").equals(docsAndPositionsEnum.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum.getPayload() == null
+ || newBytesRef("pay1").equals(docsAndPositionsEnum.getPayload()));
assertEquals(1, docsAndPositionsEnum.nextPosition());
assertEquals(-1, docsAndPositionsEnum.startOffset());
assertEquals(-1, docsAndPositionsEnum.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum.getPayload() == null || new BytesRef("pay2").equals(docsAndPositionsEnum.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum.getPayload() == null
+ || newBytesRef("pay2").equals(docsAndPositionsEnum.getPayload()));
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum.nextDoc());
// reuse
docsAndPositionsEnum2 = termsEnum.postings(docsAndPositionsEnum, PostingsEnum.OFFSETS);
@@ -1518,12 +1531,16 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(-1, docsAndPositionsEnum2.startOffset());
assertEquals(-1, docsAndPositionsEnum2.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum2.getPayload() == null || new BytesRef("pay1").equals(docsAndPositionsEnum2.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum2.getPayload() == null
+ || newBytesRef("pay1").equals(docsAndPositionsEnum2.getPayload()));
assertEquals(1, docsAndPositionsEnum2.nextPosition());
assertEquals(-1, docsAndPositionsEnum2.startOffset());
assertEquals(-1, docsAndPositionsEnum2.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum2.getPayload() == null || new BytesRef("pay2").equals(docsAndPositionsEnum2.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum2.getPayload() == null
+ || newBytesRef("pay2").equals(docsAndPositionsEnum2.getPayload()));
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum2.nextDoc());
docsAndPositionsEnum = termsEnum.postings(null, PostingsEnum.ALL);
@@ -1534,11 +1551,11 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(0, docsAndPositionsEnum.nextPosition());
assertEquals(-1, docsAndPositionsEnum.startOffset());
assertEquals(-1, docsAndPositionsEnum.endOffset());
- assertEquals(new BytesRef("pay1"), docsAndPositionsEnum.getPayload());
+ assertEquals(newBytesRef("pay1"), docsAndPositionsEnum.getPayload());
assertEquals(1, docsAndPositionsEnum.nextPosition());
assertEquals(-1, docsAndPositionsEnum.startOffset());
assertEquals(-1, docsAndPositionsEnum.endOffset());
- assertEquals(new BytesRef("pay2"), docsAndPositionsEnum.getPayload());
+ assertEquals(newBytesRef("pay2"), docsAndPositionsEnum.getPayload());
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum.nextDoc());
docsAndPositionsEnum2 = termsEnum.postings(docsAndPositionsEnum, PostingsEnum.ALL);
assertEquals(-1, docsAndPositionsEnum2.docID());
@@ -1547,11 +1564,11 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(0, docsAndPositionsEnum2.nextPosition());
assertEquals(-1, docsAndPositionsEnum2.startOffset());
assertEquals(-1, docsAndPositionsEnum2.endOffset());
- assertEquals(new BytesRef("pay1"), docsAndPositionsEnum2.getPayload());
+ assertEquals(newBytesRef("pay1"), docsAndPositionsEnum2.getPayload());
assertEquals(1, docsAndPositionsEnum2.nextPosition());
assertEquals(-1, docsAndPositionsEnum2.startOffset());
assertEquals(-1, docsAndPositionsEnum2.endOffset());
- assertEquals(new BytesRef("pay2"), docsAndPositionsEnum2.getPayload());
+ assertEquals(newBytesRef("pay2"), docsAndPositionsEnum2.getPayload());
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum2.nextDoc());
iw.close();
@@ -1565,9 +1582,9 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
IndexWriter iw = new IndexWriter(dir, iwc);
Document doc = new Document();
Token token1 = new Token("bar", 0, 3);
- token1.setPayload(new BytesRef("pay1"));
+ token1.setPayload(newBytesRef("pay1"));
Token token2 = new Token("bar", 4, 7);
- token2.setPayload(new BytesRef("pay2"));
+ token2.setPayload(newBytesRef("pay2"));
FieldType ft = new FieldType(TextField.TYPE_NOT_STORED);
ft.setStoreTermVectors(true);
ft.setStoreTermVectorPositions(true);
@@ -1580,8 +1597,8 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
Terms terms = getOnlyLeafReader(reader).getTermVector(0, "foo");
TermsEnum termsEnum = terms.iterator();
assertNotNull(termsEnum);
- assertEquals(new BytesRef("bar"), termsEnum.next());
-
+ assertEquals(newBytesRef("bar"), termsEnum.next());
+
// sugar method (FREQS)
PostingsEnum postings = termsEnum.postings(null);
assertEquals(-1, postings.docID());
@@ -1625,13 +1642,17 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertTrue(docsAndPositionsEnum.startOffset() == -1 || docsAndPositionsEnum.startOffset() == 0);
assertTrue(docsAndPositionsEnum.endOffset() == -1 || docsAndPositionsEnum.endOffset() == 3);
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum.getPayload() == null || new BytesRef("pay1").equals(docsAndPositionsEnum.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum.getPayload() == null
+ || newBytesRef("pay1").equals(docsAndPositionsEnum.getPayload()));
assertEquals(1, docsAndPositionsEnum.nextPosition());
// we don't define what it is, but if its something else, we should look into it?
assertTrue(docsAndPositionsEnum.startOffset() == -1 || docsAndPositionsEnum.startOffset() == 4);
assertTrue(docsAndPositionsEnum.endOffset() == -1 || docsAndPositionsEnum.endOffset() == 7);
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum.getPayload() == null || new BytesRef("pay2").equals(docsAndPositionsEnum.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum.getPayload() == null
+ || newBytesRef("pay2").equals(docsAndPositionsEnum.getPayload()));
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum.nextDoc());
// now reuse the positions
@@ -1644,13 +1665,17 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertTrue(docsAndPositionsEnum2.startOffset() == -1 || docsAndPositionsEnum2.startOffset() == 0);
assertTrue(docsAndPositionsEnum2.endOffset() == -1 || docsAndPositionsEnum2.endOffset() == 3);
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum2.getPayload() == null || new BytesRef("pay1").equals(docsAndPositionsEnum2.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum2.getPayload() == null
+ || newBytesRef("pay1").equals(docsAndPositionsEnum2.getPayload()));
assertEquals(1, docsAndPositionsEnum2.nextPosition());
// we don't define what it is, but if its something else, we should look into it?
assertTrue(docsAndPositionsEnum2.startOffset() == -1 || docsAndPositionsEnum2.startOffset() == 4);
assertTrue(docsAndPositionsEnum2.endOffset() == -1 || docsAndPositionsEnum2.endOffset() == 7);
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum2.getPayload() == null || new BytesRef("pay2").equals(docsAndPositionsEnum2.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum2.getPayload() == null
+ || newBytesRef("pay2").equals(docsAndPositionsEnum2.getPayload()));
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum2.nextDoc());
// payloads
@@ -1663,12 +1688,12 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
// we don't define what it is, but if its something else, we should look into it?
assertTrue(docsAndPositionsEnum.startOffset() == -1 || docsAndPositionsEnum.startOffset() == 0);
assertTrue(docsAndPositionsEnum.endOffset() == -1 || docsAndPositionsEnum.endOffset() == 3);
- assertEquals(new BytesRef("pay1"), docsAndPositionsEnum.getPayload());
+ assertEquals(newBytesRef("pay1"), docsAndPositionsEnum.getPayload());
assertEquals(1, docsAndPositionsEnum.nextPosition());
// we don't define what it is, but if its something else, we should look into it?
assertTrue(docsAndPositionsEnum.startOffset() == -1 || docsAndPositionsEnum.startOffset() == 4);
assertTrue(docsAndPositionsEnum.endOffset() == -1 || docsAndPositionsEnum.endOffset() == 7);
- assertEquals(new BytesRef("pay2"), docsAndPositionsEnum.getPayload());
+ assertEquals(newBytesRef("pay2"), docsAndPositionsEnum.getPayload());
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum.nextDoc());
// reuse
docsAndPositionsEnum2 = termsEnum.postings(docsAndPositionsEnum, PostingsEnum.PAYLOADS);
@@ -1679,12 +1704,12 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
// we don't define what it is, but if its something else, we should look into it?
assertTrue(docsAndPositionsEnum2.startOffset() == -1 || docsAndPositionsEnum2.startOffset() == 0);
assertTrue(docsAndPositionsEnum2.endOffset() == -1 || docsAndPositionsEnum2.endOffset() == 3);
- assertEquals(new BytesRef("pay1"), docsAndPositionsEnum2.getPayload());
+ assertEquals(newBytesRef("pay1"), docsAndPositionsEnum2.getPayload());
assertEquals(1, docsAndPositionsEnum2.nextPosition());
// we don't define what it is, but if its something else, we should look into it?
assertTrue(docsAndPositionsEnum2.startOffset() == -1 || docsAndPositionsEnum2.startOffset() == 4);
assertTrue(docsAndPositionsEnum2.endOffset() == -1 || docsAndPositionsEnum2.endOffset() == 7);
- assertEquals(new BytesRef("pay2"), docsAndPositionsEnum2.getPayload());
+ assertEquals(newBytesRef("pay2"), docsAndPositionsEnum2.getPayload());
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum2.nextDoc());
docsAndPositionsEnum = termsEnum.postings(null, PostingsEnum.OFFSETS);
@@ -1696,12 +1721,16 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(0, docsAndPositionsEnum.startOffset());
assertEquals(3, docsAndPositionsEnum.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum.getPayload() == null || new BytesRef("pay1").equals(docsAndPositionsEnum.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum.getPayload() == null
+ || newBytesRef("pay1").equals(docsAndPositionsEnum.getPayload()));
assertEquals(1, docsAndPositionsEnum.nextPosition());
assertEquals(4, docsAndPositionsEnum.startOffset());
assertEquals(7, docsAndPositionsEnum.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum.getPayload() == null || new BytesRef("pay2").equals(docsAndPositionsEnum.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum.getPayload() == null
+ || newBytesRef("pay2").equals(docsAndPositionsEnum.getPayload()));
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum.nextDoc());
// reuse
docsAndPositionsEnum2 = termsEnum.postings(docsAndPositionsEnum, PostingsEnum.OFFSETS);
@@ -1712,12 +1741,16 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(0, docsAndPositionsEnum2.startOffset());
assertEquals(3, docsAndPositionsEnum2.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum2.getPayload() == null || new BytesRef("pay1").equals(docsAndPositionsEnum2.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum2.getPayload() == null
+ || newBytesRef("pay1").equals(docsAndPositionsEnum2.getPayload()));
assertEquals(1, docsAndPositionsEnum2.nextPosition());
assertEquals(4, docsAndPositionsEnum2.startOffset());
assertEquals(7, docsAndPositionsEnum2.endOffset());
// we don't define what it is, but if its something else, we should look into it?
- assertTrue(docsAndPositionsEnum2.getPayload() == null || new BytesRef("pay2").equals(docsAndPositionsEnum2.getPayload()));
+ assertTrue(
+ docsAndPositionsEnum2.getPayload() == null
+ || newBytesRef("pay2").equals(docsAndPositionsEnum2.getPayload()));
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum2.nextDoc());
docsAndPositionsEnum = termsEnum.postings(null, PostingsEnum.ALL);
@@ -1728,11 +1761,11 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(0, docsAndPositionsEnum.nextPosition());
assertEquals(0, docsAndPositionsEnum.startOffset());
assertEquals(3, docsAndPositionsEnum.endOffset());
- assertEquals(new BytesRef("pay1"), docsAndPositionsEnum.getPayload());
+ assertEquals(newBytesRef("pay1"), docsAndPositionsEnum.getPayload());
assertEquals(1, docsAndPositionsEnum.nextPosition());
assertEquals(4, docsAndPositionsEnum.startOffset());
assertEquals(7, docsAndPositionsEnum.endOffset());
- assertEquals(new BytesRef("pay2"), docsAndPositionsEnum.getPayload());
+ assertEquals(newBytesRef("pay2"), docsAndPositionsEnum.getPayload());
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum.nextDoc());
docsAndPositionsEnum2 = termsEnum.postings(docsAndPositionsEnum, PostingsEnum.ALL);
assertEquals(-1, docsAndPositionsEnum2.docID());
@@ -1741,11 +1774,11 @@ public abstract class BaseTermVectorsFormatTestCase extends BaseIndexFileFormatT
assertEquals(0, docsAndPositionsEnum2.nextPosition());
assertEquals(0, docsAndPositionsEnum2.startOffset());
assertEquals(3, docsAndPositionsEnum2.endOffset());
- assertEquals(new BytesRef("pay1"), docsAndPositionsEnum2.getPayload());
+ assertEquals(newBytesRef("pay1"), docsAndPositionsEnum2.getPayload());
assertEquals(1, docsAndPositionsEnum2.nextPosition());
assertEquals(4, docsAndPositionsEnum2.startOffset());
assertEquals(7, docsAndPositionsEnum2.endOffset());
- assertEquals(new BytesRef("pay2"), docsAndPositionsEnum2.getPayload());
+ assertEquals(newBytesRef("pay2"), docsAndPositionsEnum2.getPayload());
assertEquals(DocIdSetIterator.NO_MORE_DOCS, docsAndPositionsEnum2.nextDoc());
iw.close();
diff --git a/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
index e8940f9..6b6b222 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.lucene.util;
import java.io.Closeable;
@@ -30,6 +31,7 @@ import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.net.URI;
+import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystem;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
@@ -3022,4 +3024,86 @@ public abstract class LuceneTestCase extends Assert {
}
return conf;
}
+
+ /**
+ * Creates a {@link BytesRef} holding UTF-8 bytes for the incoming String, that sometimes uses a
+ * non-zero {@code offset}, and non-zero end-padding, to tickle latent bugs that fail to look at
+ * {@code BytesRef.offset}.
+ */
+ public static BytesRef newBytesRef(String s) {
+ return newBytesRef(s.getBytes(StandardCharsets.UTF_8));
+ }
+
+ /**
+ * Creates a copy of the incoming {@link BytesRef} that sometimes uses a non-zero {@code offset},
+ * and non-zero end-padding, to tickle latent bugs that fail to look at {@code BytesRef.offset}.
+ */
+ public static BytesRef newBytesRef(BytesRef b) {
+ assert b.isValid();
+ return newBytesRef(b.bytes, b.offset, b.length);
+ }
+
+ /**
+ * Creates a random BytesRef from the incoming bytes that sometimes uses a non-zero {@code
+ * offset}, and non-zero end-padding, to tickle latent bugs that fail to look at {@code
+ * BytesRef.offset}.
+ */
+ public static BytesRef newBytesRef(byte[] b) {
+ return newBytesRef(b, 0, b.length);
+ }
+
+ /**
+ * Creates a random empty BytesRef that sometimes uses a non-zero {@code offset}, and non-zero
+ * end-padding, to tickle latent bugs that fail to look at {@code BytesRef.offset}.
+ */
+ public static BytesRef newBytesRef() {
+ return newBytesRef(new byte[0], 0, 0);
+ }
+
+ /**
+ * Creates a random empty BytesRef, with at least the requested length of bytes free, that
+ * sometimes uses a non-zero {@code offset}, and non-zero end-padding, to tickle latent bugs that
+ * fail to look at {@code BytesRef.offset}.
+ */
+ public static BytesRef newBytesRef(int byteLength) {
+ return newBytesRef(new byte[byteLength], 0, byteLength);
+ }
+
+ /**
+ * Creates a copy of the incoming bytes slice that sometimes uses a non-zero {@code offset}, and
+ * non-zero end-padding, to tickle latent bugs that fail to look at {@code BytesRef.offset}.
+ */
+ public static BytesRef newBytesRef(byte[] bytesIn, int offset, int length) {
+ // System.out.println("LTC.newBytesRef! bytesIn.length=" + bytesIn.length + " offset=" + offset
+ // + " length=" + length);
+
+ assert bytesIn.length >= offset + length
+ : "got offset=" + offset + " length=" + length + " bytesIn.length=" + bytesIn.length;
+
+ // randomly set a non-zero offset
+ int startOffset;
+ if (random().nextBoolean()) {
+ startOffset = RandomNumbers.randomIntBetween(random(), 1, 20);
+ } else {
+ startOffset = 0;
+ }
+
+ // also randomly set an end padding:
+ int endPadding;
+ if (random().nextBoolean()) {
+ endPadding = RandomNumbers.randomIntBetween(random(), 1, 20);
+ } else {
+ endPadding = 0;
+ }
+
+ byte[] bytes = new byte[startOffset + length + endPadding];
+
+ System.arraycopy(bytesIn, offset, bytes, startOffset, length);
+ // System.out.println("LTC: return bytes.length=" + bytes.length + " startOffset=" +
+ // startOffset + " length=" + bytesIn.length);
+
+ BytesRef it = new BytesRef(bytes, startOffset, bytesIn.length);
+ assert it.isValid();
+ return it;
+ }
}