Author: mduerig
Date: Wed Apr 19 11:44:55 2017
New Revision: 1791902

URL: http://svn.apache.org/viewvc?rev=1791902&view=rev
Log:
OAK-6056: Refactor SegmentStream to reduce buffering
Add test coverage for SegmentStream.skip

Modified:
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java?rev=1791902&r1=1791901&r2=1791902&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/RecordTest.java
 Wed Apr 19 11:44:55 2017
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.segmen
 
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Maps.newHashMap;
+import static java.lang.Math.min;
 import static java.util.Collections.singletonList;
 import static junit.framework.Assert.assertNotNull;
 import static junit.framework.Assert.fail;
@@ -179,19 +180,26 @@ public class RecordTest {
 
         Blob value = writer.writeStream(new ByteArrayInputStream(source));
         InputStream stream = value.getNewStream();
-        try {
+        checkBlob(source, value, 0);
+        checkBlob(source, value, 1);
+        checkBlob(source, value, 42);
+        checkBlob(source, value, 16387);
+        checkBlob(source, value, Integer.MAX_VALUE);
+    }
+
+    private static void checkBlob(byte[] expected, Blob actual, int skip) 
throws IOException {
+        try (InputStream stream = actual.getNewStream()) {
+            stream.skip(skip);
             byte[] b = new byte[349]; // prime number
-            int offset = 0;
+            int offset = min(skip, expected.length);
             for (int n = stream.read(b); n != -1; n = stream.read(b)) {
                 for (int i = 0; i < n; i++) {
-                    assertEquals(source[offset + i], b[i]);
+                    assertEquals(expected[offset + i], b[i]);
                 }
                 offset += n;
             }
-            assertEquals(offset, size);
+            assertEquals(offset, expected.length);
             assertEquals(-1, stream.read());
-        } finally {
-            stream.close();
         }
     }
 


Reply via email to