You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by bl...@apache.org on 2015/08/11 17:02:16 UTC

cassandra git commit: Fix RowAndDeletionMergeIteratorTest

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 0997ad6ff -> dea15092e


Fix RowAndDeletionMergeIteratorTest

patch by Daniel Chia; reviewed by Benjamin Lerer for CASSANDRA-10003


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

Branch: refs/heads/cassandra-3.0
Commit: dea15092e5470b72786868d23413290068644c21
Parents: 0997ad6
Author: Daniel Chia <da...@gmail.com>
Authored: Tue Aug 11 17:00:05 2015 +0200
Committer: blerer <be...@datastax.com>
Committed: Tue Aug 11 17:00:05 2015 +0200

----------------------------------------------------------------------
 .../rows/RowAndDeletionMergeIteratorTest.java   | 105 +++++++++++--------
 1 file changed, 63 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dea15092/test/unit/org/apache/cassandra/db/rows/RowAndDeletionMergeIteratorTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/rows/RowAndDeletionMergeIteratorTest.java b/test/unit/org/apache/cassandra/db/rows/RowAndDeletionMergeIteratorTest.java
index 54bb344..84bbc57 100644
--- a/test/unit/org/apache/cassandra/db/rows/RowAndDeletionMergeIteratorTest.java
+++ b/test/unit/org/apache/cassandra/db/rows/RowAndDeletionMergeIteratorTest.java
@@ -94,7 +94,7 @@ public class RowAndDeletionMergeIteratorTest
     public void testWithOnlyRangeTombstones()
     {
         int delTime = nowInSeconds + 1;
-        long timestamp = delTime * 1000;
+        long timestamp = toMillis(delTime);
 
         Iterator<RangeTombstone> rangeTombstoneIterator = createRangeTombstoneIterator(rt(1, false, 3, false, timestamp, delTime),
                                                                                        atLeast(4, timestamp, delTime));
@@ -121,7 +121,7 @@ public class RowAndDeletionMergeIteratorTest
         Iterator<Row> rowIterator = createRowIterator();
 
         int delTime = nowInSeconds + 1;
-        long timestamp = delTime * 1000;
+        long timestamp = toMillis(delTime);
 
         Iterator<RangeTombstone> rangeTombstoneIterator = createRangeTombstoneIterator(atMost(0, timestamp, delTime));
 
@@ -131,9 +131,6 @@ public class RowAndDeletionMergeIteratorTest
         assertRtMarker(iterator.next(), Bound.BOTTOM);
 
         assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 0);
-
-        assertTrue(iterator.hasNext());
         assertRtMarker(iterator.next(), ClusteringPrefix.Kind.INCL_END_BOUND, 0);
 
         assertTrue(iterator.hasNext());
@@ -157,7 +154,7 @@ public class RowAndDeletionMergeIteratorTest
         Iterator<Row> rowIterator = createRowIterator();
 
         int delTime = nowInSeconds + 1;
-        long timestamp = delTime * 1000;
+        long timestamp = toMillis(delTime);
 
         Iterator<RangeTombstone> rangeTombstoneIterator = createRangeTombstoneIterator(greaterThan(2, timestamp, delTime));
 
@@ -176,12 +173,6 @@ public class RowAndDeletionMergeIteratorTest
         assertRtMarker(iterator.next(), ClusteringPrefix.Kind.EXCL_START_BOUND, 2);
 
         assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 3);
-
-        assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 4);
-
-        assertTrue(iterator.hasNext());
         assertRtMarker(iterator.next(), Bound.TOP);
 
         assertFalse(iterator.hasNext());
@@ -193,7 +184,7 @@ public class RowAndDeletionMergeIteratorTest
         Iterator<Row> rowIterator = createRowIterator();
 
         int delTime = nowInSeconds + 1;
-        long timestamp = delTime * 1000;
+        long timestamp = toMillis(delTime);
 
         Iterator<RangeTombstone> rangeTombstoneIterator = createRangeTombstoneIterator(atMost(0, timestamp, delTime),
                                                                                        greaterThan(2, timestamp, delTime));
@@ -204,9 +195,6 @@ public class RowAndDeletionMergeIteratorTest
         assertRtMarker(iterator.next(), Bound.BOTTOM);
 
         assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 0);
-
-        assertTrue(iterator.hasNext());
         assertRtMarker(iterator.next(), ClusteringPrefix.Kind.INCL_END_BOUND, 0);
 
         assertTrue(iterator.hasNext());
@@ -219,12 +207,6 @@ public class RowAndDeletionMergeIteratorTest
         assertRtMarker(iterator.next(), ClusteringPrefix.Kind.EXCL_START_BOUND, 2);
 
         assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 3);
-
-        assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 4);
-
-        assertTrue(iterator.hasNext());
         assertRtMarker(iterator.next(), Bound.TOP);
 
         assertFalse(iterator.hasNext());
@@ -243,7 +225,7 @@ public class RowAndDeletionMergeIteratorTest
         Iterator<Row> rowIterator = createRowIterator();
 
         int delTime = nowInSeconds + 1;
-        long timestamp = delTime * 1000;
+        long timestamp = toMillis(delTime);
 
         Iterator<RangeTombstone> rangeTombstoneIterator = createRangeTombstoneIterator(atMost(2, timestamp, delTime),
                                                                                        greaterThan(2, timestamp, delTime));
@@ -254,22 +236,32 @@ public class RowAndDeletionMergeIteratorTest
         assertRtMarker(iterator.next(), Bound.BOTTOM);
 
         assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 0);
+        assertRtMarker(iterator.next(), ClusteringPrefix.Kind.INCL_END_EXCL_START_BOUNDARY, 2);
 
         assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 1);
+        assertRtMarker(iterator.next(), Bound.TOP);
 
-        assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 2);
+        assertFalse(iterator.hasNext());
+    }
 
-        assertTrue(iterator.hasNext());
-        assertRtMarker(iterator.next(), ClusteringPrefix.Kind.INCL_END_EXCL_START_BOUNDARY, 2);
+    @Test
+    public void testWithExcludingEndIncludingStartMarker()
+    {
+        Iterator<Row> rowIterator = createRowIterator();
+
+        int delTime = nowInSeconds + 1;
+        long timestamp = toMillis(delTime);
+
+        Iterator<RangeTombstone> rangeTombstoneIterator = createRangeTombstoneIterator(lessThan(2, timestamp, delTime),
+                                                                                       atLeast(2, timestamp, delTime));
+
+        UnfilteredRowIterator iterator = createMergeIterator(rowIterator, rangeTombstoneIterator, false);
 
         assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 3);
+        assertRtMarker(iterator.next(), Bound.BOTTOM);
 
         assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 4);
+        assertRtMarker(iterator.next(), ClusteringPrefix.Kind.EXCL_END_INCL_START_BOUNDARY, 2);
 
         assertTrue(iterator.hasNext());
         assertRtMarker(iterator.next(), Bound.TOP);
@@ -278,15 +270,11 @@ public class RowAndDeletionMergeIteratorTest
     }
 
     @Test
-    public void testWithExcludingEndIncludingStartMarker()
+    public void testNonShadowingTombstone()
     {
         Iterator<Row> rowIterator = createRowIterator();
 
-        int delTime = nowInSeconds + 1;
-        long timestamp = delTime * 1000;
-
-        Iterator<RangeTombstone> rangeTombstoneIterator = createRangeTombstoneIterator(lessThan(2, timestamp, delTime),
-                                                                                       atLeast(2, timestamp, delTime));
+        Iterator<RangeTombstone> rangeTombstoneIterator = createRangeTombstoneIterator(atMost(0, -1L, 0));
 
         UnfilteredRowIterator iterator = createMergeIterator(rowIterator, rangeTombstoneIterator, false);
 
@@ -297,10 +285,10 @@ public class RowAndDeletionMergeIteratorTest
         assertRow(iterator.next(), 0);
 
         assertTrue(iterator.hasNext());
-        assertRow(iterator.next(), 1);
+        assertRtMarker(iterator.next(), ClusteringPrefix.Kind.INCL_END_BOUND, 0);
 
         assertTrue(iterator.hasNext());
-        assertRtMarker(iterator.next(), ClusteringPrefix.Kind.EXCL_END_INCL_START_BOUNDARY, 2);
+        assertRow(iterator.next(), 1);
 
         assertTrue(iterator.hasNext());
         assertRow(iterator.next(), 2);
@@ -311,12 +299,32 @@ public class RowAndDeletionMergeIteratorTest
         assertTrue(iterator.hasNext());
         assertRow(iterator.next(), 4);
 
-        assertTrue(iterator.hasNext());
-        assertRtMarker(iterator.next(), Bound.TOP);
+        assertFalse(iterator.hasNext());
+    }
+
+    @Test
+    public void testWithPartitionLevelTombstone()
+    {
+        Iterator<Row> rowIterator = createRowIterator();
+
+        int delTime = nowInSeconds - 1;
+        long timestamp = toMillis(delTime);
+
+        Iterator<RangeTombstone> rangeTombstoneIterator = createRangeTombstoneIterator(atMost(0, timestamp, delTime),
+                                                                                       greaterThan(2, timestamp, delTime));
+
+        int partitionDelTime = nowInSeconds + 1;
+        long partitionTimestamp = toMillis(partitionDelTime);
+
+        UnfilteredRowIterator iterator = createMergeIterator(rowIterator,
+                                                             rangeTombstoneIterator,
+                                                             new DeletionTime(partitionTimestamp, partitionDelTime),
+                                                             false);
 
         assertFalse(iterator.hasNext());
     }
 
+
     private void assertRtMarker(Unfiltered unfiltered, Bound bound)
     {
         assertEquals(Unfiltered.Kind.RANGE_TOMBSTONE_MARKER, unfiltered.kind());
@@ -350,9 +358,17 @@ public class RowAndDeletionMergeIteratorTest
 
     private UnfilteredRowIterator createMergeIterator(Iterator<Row> rows, Iterator<RangeTombstone> tombstones, boolean reversed)
     {
+        return createMergeIterator(rows, tombstones, DeletionTime.LIVE, reversed);
+    }
+
+    private UnfilteredRowIterator createMergeIterator(Iterator<Row> rows,
+                                                      Iterator<RangeTombstone> tombstones,
+                                                      DeletionTime deletionTime,
+                                                      boolean reversed)
+    {
         return new RowAndDeletionMergeIterator(cfm,
                                                Util.dk("k"),
-                                               DeletionTime.LIVE,
+                                               deletionTime,
                                                ColumnFilter.all(cfm),
                                                Rows.EMPTY_STATIC_ROW,
                                                reversed,
@@ -404,4 +420,9 @@ public class RowAndDeletionMergeIteratorTest
     {
         return ByteBufferUtil.bytes(i);
     }
+
+    private long toMillis(int timeInSeconds)
+    {
+        return timeInSeconds * 1000L;
+    }
 }