junit test finished for frame tuple appender.

Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/1ecdb321
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/1ecdb321
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/1ecdb321

Branch: refs/heads/ecarm002/interval_join_merge
Commit: 1ecdb3212f421994239916146e194c36b189fdc9
Parents: 23eab43
Author: Preston Carman <prest...@apache.org>
Authored: Sun Sep 25 10:53:32 2016 -0700
Committer: Preston Carman <prest...@apache.org>
Committed: Sun Sep 25 10:53:32 2016 -0700

----------------------------------------------------------------------
 .../sort/util/DeletableFrameTupleAppender.java  |  7 +-
 .../util/DeletableFrameTupleAppenderTest.java   | 69 ++++++++++----------
 2 files changed, 40 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/1ecdb321/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppender.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppender.java
 
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppender.java
index d242daa..e5f0bce2 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppender.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppender.java
@@ -343,8 +343,11 @@ public class DeletableFrameTupleAppender implements 
IAppendDeletableFrameTupleAc
     @Override
     public int getTupleLength(int tupleIndex) {
         int endOffset = getTupleEndOffset(tupleIndex);
-        assert endOffset > 0;
-        return endOffset - getTupleStartOffset(tupleIndex);
+        if (endOffset > 0) {
+            return endOffset - getTupleStartOffset(tupleIndex);
+        } else {
+            return endOffset + getTupleStartOffset(tupleIndex);
+        }
     }
 
     private void setTupleOffsets(int tupleIndex, int start, int length) {

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/1ecdb321/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppenderTest.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppenderTest.java
 
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppenderTest.java
index af3cdfc..f8edce6 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppenderTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppenderTest.java
@@ -31,8 +31,8 @@ import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import 
org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import 
org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
-import org.apache.hyracks.util.IntSerDeUtils;
 import org.apache.hyracks.dataflow.std.sort.Utility;
+import org.apache.hyracks.util.IntSerDeUtils;
 import org.apache.hyracks.util.string.UTF8StringUtil;
 import org.junit.Before;
 import org.junit.Test;
@@ -44,6 +44,8 @@ public class DeletableFrameTupleAppenderTest {
     private static final int META_DATA_SIZE = 4 + 4 + 4 + 4;
     private static final int SLOT_SIZE = 4 + 4;
     private static final char TEST_CH = 'x';
+    private static final int TEST_TUPLE_COUNT = 8;
+    private static final int TEST_FRAME_SIZE = 256;
 
     DeletableFrameTupleAppender appender;
     ISerializerDeserializer[] fields = new ISerializerDeserializer[] { 
IntegerSerializerDeserializer.INSTANCE,
@@ -51,8 +53,6 @@ public class DeletableFrameTupleAppenderTest {
     RecordDescriptor recordDescriptor = new RecordDescriptor(fields);
     ArrayTupleBuilder builder = new 
ArrayTupleBuilder(recordDescriptor.getFieldCount());
 
-    int cap = 256;
-
     @Before
     public void initial() throws HyracksDataException {
         appender = new DeletableFrameTupleAppender(recordDescriptor);
@@ -60,12 +60,12 @@ public class DeletableFrameTupleAppenderTest {
 
     @Test
     public void testClear() throws Exception {
-        ByteBuffer buffer = ByteBuffer.allocate(cap);
+        ByteBuffer buffer = ByteBuffer.allocate(TEST_FRAME_SIZE);
         appender.clear(buffer);
         assertTrue(appender.getBuffer() == buffer);
         assertTrue(appender.getTupleCount() == 0);
-        assertTrue(appender.getTotalFreeSpace() == cap - META_DATA_SIZE);
-        assertTrue(appender.getContiguousFreeSpace() == cap - META_DATA_SIZE);
+        assertTrue(appender.getTotalFreeSpace() == TEST_FRAME_SIZE - 
META_DATA_SIZE);
+        assertTrue(appender.getContiguousFreeSpace() == TEST_FRAME_SIZE - 
META_DATA_SIZE);
     }
 
     ByteBuffer makeAFrame(int capacity, int count, int deletedBytes) throws 
HyracksDataException {
@@ -109,52 +109,52 @@ public class DeletableFrameTupleAppenderTest {
         builder.addField(fields[1], Utility.repeatString(TEST_CH, i + 1));
     }
 
-    int assertTupleIsExpected(int i, int dataOffset) {
-        int lenStrMeta = UTF8StringUtil.getNumBytesToStoreLength(i);
-        int tupleLength = 2 * 4 + 4 + lenStrMeta + i + 1;
+    int assertTupleIsExpected(int i, int dataOffset, int testString) {
+        int lenStrMeta = UTF8StringUtil.getNumBytesToStoreLength(testString);
+        int tupleLength = 2 * 4 + 4 + lenStrMeta + testString + 1;
         assertEquals(dataOffset, appender.getTupleStartOffset(i));
         assertEquals(tupleLength, appender.getTupleLength(i));
 
         assertEquals(dataOffset + 2 * 4, 
appender.getAbsoluteFieldStartOffset(i, 0));
         assertEquals(4, appender.getFieldLength(i, 0));
-        assertEquals(i + 1,
+        assertEquals(testString + 1,
                 IntSerDeUtils.getInt(appender.getBuffer().array(), 
appender.getAbsoluteFieldStartOffset(i, 0)));
         assertEquals(dataOffset + 2 * 4 + 4, 
appender.getAbsoluteFieldStartOffset(i, 1));
-        assertEquals(lenStrMeta + i + 1, appender.getFieldLength(i, 1));
+        assertEquals(lenStrMeta + testString + 1, appender.getFieldLength(i, 
1));
         return tupleLength;
     }
 
     @Test
     public void testReset() throws Exception {
-        ByteBuffer buffer = ByteBuffer.allocate(cap);
+        ByteBuffer buffer = ByteBuffer.allocate(TEST_FRAME_SIZE);
         appender.reset(buffer);
         assertTrue(appender.getBuffer() == buffer);
         assertTrue(appender.getTupleCount() == 0);
-        assertTrue(appender.getContiguousFreeSpace() == cap - META_DATA_SIZE);
+        assertTrue(appender.getContiguousFreeSpace() == TEST_FRAME_SIZE - 
META_DATA_SIZE);
 
-        int count = 8;
+        int count = TEST_TUPLE_COUNT;
         int deleted = 7;
-        buffer = makeAFrame(cap, count, deleted);
+        buffer = makeAFrame(TEST_FRAME_SIZE, count, deleted);
         int pos = buffer.position();
         appender.reset(buffer);
         assertTrue(appender.getBuffer() == buffer);
         assertTrue(appender.getTupleCount() == count);
-        assertTrue(appender.getContiguousFreeSpace() == cap - META_DATA_SIZE - 
count * SLOT_SIZE - pos);
+        assertTrue(appender.getContiguousFreeSpace() == TEST_FRAME_SIZE - 
META_DATA_SIZE - count * SLOT_SIZE - pos);
         assertTrue(appender.getTotalFreeSpace() == 
appender.getContiguousFreeSpace() + deleted);
 
         int dataOffset = 0;
         for (int i = 0; i < count; i++) {
-            dataOffset += assertTupleIsExpected(i, dataOffset);
+            dataOffset += assertTupleIsExpected(i, dataOffset, i);
         }
     }
 
     @Test
     public void testAppend() throws Exception {
-        int count = 8;
-        ByteBuffer bufferRead = makeAFrame(cap, count, 0);
+        int count = TEST_TUPLE_COUNT;
+        ByteBuffer bufferRead = makeAFrame(TEST_FRAME_SIZE, count, 0);
         DeletableFrameTupleAppender accessor = new 
DeletableFrameTupleAppender(recordDescriptor);
         accessor.reset(bufferRead);
-        ByteBuffer bufferWrite = ByteBuffer.allocate(cap);
+        ByteBuffer bufferWrite = ByteBuffer.allocate(TEST_FRAME_SIZE);
         appender.clear(bufferWrite);
         for (int i = 0; i < accessor.getTupleCount(); i++) {
             appender.append(accessor, i);
@@ -166,9 +166,9 @@ public class DeletableFrameTupleAppenderTest {
 
     @Test
     public void testDelete() throws Exception {
-        int count = 8;
+        int count = TEST_TUPLE_COUNT;
         int deleteSpace = 0;
-        ByteBuffer buffer = makeAFrame(cap, count, deleteSpace);
+        ByteBuffer buffer = makeAFrame(TEST_FRAME_SIZE, count, deleteSpace);
         appender.reset(buffer);
 
         int freeSpace = appender.getContiguousFreeSpace();
@@ -176,7 +176,7 @@ public class DeletableFrameTupleAppenderTest {
             deleteSpace += assertDeleteSucceed(i, freeSpace, deleteSpace);
             int innerOffset = deleteSpace;
             for (int j = i + 1; j < appender.getTupleCount(); j++) {
-                innerOffset += assertTupleIsExpected(j, innerOffset);
+                innerOffset += assertTupleIsExpected(j, innerOffset, j);
             }
         }
     }
@@ -185,7 +185,8 @@ public class DeletableFrameTupleAppenderTest {
     public void testResetAfterDelete() throws Exception {
         testDelete();
         appender.reset(appender.getBuffer());
-        assertEquals(cap - appender.getTupleCount() * SLOT_SIZE - 
META_DATA_SIZE, appender.getTotalFreeSpace());
+        assertEquals(TEST_FRAME_SIZE - appender.getTupleCount() * SLOT_SIZE - 
META_DATA_SIZE,
+                appender.getTotalFreeSpace());
 
     }
 
@@ -207,14 +208,14 @@ public class DeletableFrameTupleAppenderTest {
     @Test
     public void testAppendAndDelete() throws Exception {
         int cap = 1024;
-        int count = 8;
+        int count = TEST_TUPLE_COUNT;
         int deleteSpace = 0;
         ByteBuffer buffer = makeAFrame(cap, count, deleteSpace);
         int dataOffset = buffer.position();
         appender.reset(buffer);
 
         int freeSpace = appender.getContiguousFreeSpace();
-        int[] deleteSet = new int[] { 1, 3, 5 };
+        int[] deleteSet = new int[] { 1, 3, 5, 7 };
         for (int i = 0; i < deleteSet.length; i++) {
             deleteSpace += assertDeleteSucceed(deleteSet[i], freeSpace, 
deleteSpace);
         }
@@ -223,28 +224,28 @@ public class DeletableFrameTupleAppenderTest {
         DeletableFrameTupleAppender accessor = new 
DeletableFrameTupleAppender(recordDescriptor);
         accessor.reset(bufferRead);
 
+        int[] appendSet = new int[] { 1, 3, 5, 7, 8, 9, 10, 11 };
         for (int i = count; i < accessor.getTupleCount(); i++) {
             int id = appender.append(accessor, i);
-            dataOffset += assertTupleIsExpected(i, dataOffset);
-            assertEquals(i, id);
+            dataOffset += assertTupleIsExpected(id, dataOffset, i);
+            assertEquals(appendSet[i - count], id);
         }
 
         appender.reOrganizeBuffer();
         dataOffset = 0;
+        int[] appendOrder = new int[] { 0, 2, 4, 6, 1, 3, 5, 7, 8, 9, 10, 11 };
+        int[] stringSize = new int[] { 0, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 
15 };
         for (int i = 0; i < appender.getTupleCount(); i++) {
-            if (ArrayUtils.contains(deleteSet, i)) {
-                continue;
-            }
-            dataOffset += assertTupleIsExpected(i, dataOffset);
+            dataOffset += assertTupleIsExpected(appendOrder[i], dataOffset, 
stringSize[i]);
         }
     }
 
     @Test
     public void testReOrganizeBuffer() throws Exception {
-        int count = 8;
+        int count = TEST_TUPLE_COUNT;
         testDelete();
         appender.reOrganizeBuffer();
-        ByteBuffer bufferRead = makeAFrame(cap, count, 0);
+        ByteBuffer bufferRead = makeAFrame(TEST_FRAME_SIZE, count, 0);
         DeletableFrameTupleAppender accessor = new 
DeletableFrameTupleAppender(recordDescriptor);
         accessor.reset(bufferRead);
         for (int i = 0; i < accessor.getTupleCount(); i++) {

Reply via email to