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 2012/03/14 23:09:34 UTC

svn commit: r1300753 - in /lucene/dev/trunk/lucene/core/src: java/org/apache/lucene/util/PagedBytes.java test/org/apache/lucene/util/TestPagedBytes.java

Author: mikemccand
Date: Wed Mar 14 22:09:34 2012
New Revision: 1300753

URL: http://svn.apache.org/viewvc?rev=1300753&view=rev
Log:
LUCENE-3841: add direct test for prefix-coded byte[] spanning two pages

Modified:
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java?rev=1300753&r1=1300752&r2=1300753&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java Wed Mar 14 22:09:34 2012
@@ -214,8 +214,6 @@ public final class PagedBytes {
       // VarDerefBytesImpl.finishInternal does its own
       // prefix + byte[] writing which can span two blocks,
       // so we support that here on decode:
-      // we could some day relax that and span two blocks:
-      
       if (blockSize - offset >= length) {
         // Within block
         b.offset = offset;

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java?rev=1300753&r1=1300752&r2=1300753&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java Wed Mar 14 22:09:34 2012
@@ -107,4 +107,27 @@ public class TestPagedBytes extends Luce
       }
     }
   }
+
+  // LUCENE-3841: even though
+  // copyUsingLengthPrefix will never span two blocks, make
+  // sure if caller writes their own prefix followed by the
+  // bytes, it still works:
+  public void testLengthPrefixAcrossTwoBlocks() throws Exception {
+    final PagedBytes p = new PagedBytes(10);
+    final DataOutput out = p.getDataOutput();
+    final byte[] bytes1 = new byte[1000];
+    random.nextBytes(bytes1);
+    out.writeBytes(bytes1, 0, bytes1.length);
+    out.writeByte((byte) 40);
+    final byte[] bytes2 = new byte[40];
+    random.nextBytes(bytes2);
+    out.writeBytes(bytes2, 0, bytes2.length);
+
+    final PagedBytes.Reader reader = p.freeze(random.nextBoolean());
+    BytesRef answer = reader.fillSliceWithPrefix(new BytesRef(), 1000);
+    assertEquals(40, answer.length);
+    for(int i=0;i<40;i++) {
+      assertEquals(bytes2[i], answer.bytes[answer.offset + i]);
+    }
+  }
 }