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;
+ }
}