@Test public void testRangePagingBatchSizeOneReverse() { if (!supportsReverse()) { return; } int totalPuts = 100; for (int i = 0 ; i < totalPuts ; i++) { putDirect("row"+i, "col1", "v1", 0); } RangeRequest rangeRequest = RangeRequest.reverseBuilder().batchHint(1).build(); Map<RangeRequest, TokenBackedBasicResultsPage<RowResult<Value>, byte[]>> ranges = keyValueService.getFirstBatchForRanges(TEST_TABLE, Iterables.limit(Iterables.cycle(rangeRequest), 100), 1); assertEquals(1, ranges.keySet().size()); assertEquals(1, ranges.values().iterator().next().getResults().size()); assertEquals("row99", PtBytes.toString(ranges.values().iterator().next().getResults().iterator().next().getRowName())); }
@Test public void testRangeAfterTimestampReverse() { if (!supportsReverse()) { return; } putDirect("row1", "col2", "", 0); putDirect("row2", "col2", "", 0); putDirect("row3", "col2", "", 5); RangeRequest rangeRequest = RangeRequest.reverseBuilder().batchHint(1).build(); Map<RangeRequest, TokenBackedBasicResultsPage<RowResult<Value>, byte[]>> ranges = keyValueService.getFirstBatchForRanges(TEST_TABLE, Collections.singleton(rangeRequest), 1); assertEquals(1, ranges.keySet().size()); TokenBackedBasicResultsPage<RowResult<Value>, byte[]> page = ranges.values().iterator().next(); assertTrue(page.moreResultsAvailable()); }
@Test public void testRangePagingBatchesReverse() { if (!supportsReverse()) { return; } int totalPuts = 101; for (int i = 0 ; i < totalPuts ; i++) { putDirect("row"+i, "col1", "v1", 0); } Map<RangeRequest, TokenBackedBasicResultsPage<RowResult<Value>, byte[]>> ranges = keyValueService.getFirstBatchForRanges(TEST_TABLE, Iterables.limit(Iterables.cycle(RangeRequest.reverseBuilder().batchHint(1000).build()), 100), 1); assertEquals(1, ranges.keySet().size()); assertEquals(totalPuts, ranges.values().iterator().next().getResults().size()); }
private void testGetRangeWithTimestamps(boolean reverse) { putTestDataForMultipleTimestamps(); final RangeRequest range; if (!reverse) { range = RangeRequest.builder().startRowInclusive(row(0)).endRowExclusive(row(1)).build(); } else { range = RangeRequest.reverseBuilder().startRowInclusive(row(0)).build(); } ClosableIterator<RowResult<Set<Long>>> rangeWithHistory = keyValueService.getRangeOfTimestamps( TEST_TABLE, range, TEST_TIMESTAMP + 2); RowResult<Set<Long>> row = rangeWithHistory.next(); assertFalse(rangeWithHistory.hasNext()); rangeWithHistory.close(); assertEquals(1, Iterables.size(row.getCells())); Entry<Cell, Set<Long>> cell0 = row.getCells().iterator().next(); assertEquals(2, cell0.getValue().size()); assertTrue(cell0.getValue().contains(TEST_TIMESTAMP)); assertTrue(cell0.getValue().contains(TEST_TIMESTAMP + 1)); }
@Test public void testKeyValueRangeReverse() { if (!supportsReverse()) { return; } putDirect("row1", "col1", "", 0); putDirect("row2", "col1", "", 0); putDirect("row2", "col2", "", 0); RangeRequest allRange = RangeRequest.reverseBuilder().batchHint(3).build(); ClosableIterator<RowResult<Value>> range = keyValueService.getRange(TEST_TABLE, allRange, 1); ImmutableList<RowResult<Value>> list = ImmutableList.copyOf(range); assertEquals(2, list.size()); assertEquals("row2", PtBytes.toString(list.iterator().next().getRowName())); }
@Test public void withReverseRange() { RangeRequest request = RangeRequest.reverseBuilder().startRowInclusive(END).endRowExclusive(START).build(); WhereClauses whereClauses = WhereClauses.create("i", request); List<String> expectedClauses = ImmutableList.of("i.row_name <= ?", "i.row_name > ?"); assertEquals(whereClauses.getClauses(), expectedClauses); checkWhereArguments(whereClauses, ImmutableList.of(END, START)); }
@Test public void testEmpty() { RangeRequest request = RangeRequest.builder().endRowExclusive(RangeRequests.getFirstRowName()).build(); Assert.assertTrue(request.isEmptyRange()); request = RangeRequest.reverseBuilder().endRowExclusive(RangeRequests.getLastRowName()).build(); Assert.assertTrue(request.isEmptyRange()); }
final RangeRequest allReverse = RangeRequest.reverseBuilder().build(); assertRangeSizeAndOrdering(keyValueService.getRange(TEST_TABLE, allReverse, TEST_TIMESTAMP + 1), 3, final RangeRequest upboundedReverse = RangeRequest.reverseBuilder().endRowExclusive(row(0)).build(); assertRangeSizeAndOrdering(keyValueService.getRange(TEST_TABLE, upboundedReverse, TEST_TIMESTAMP + 1), 2, final RangeRequest downboundedReverse = RangeRequest.reverseBuilder().startRowInclusive(row(1)).build(); assertRangeSizeAndOrdering(keyValueService.getRange(TEST_TABLE, downboundedReverse, TEST_TIMESTAMP + 1), 2, final RangeRequest bothboundedReverse = RangeRequest.reverseBuilder() .startRowInclusive(row(2)) .endRowExclusive(row(1))
@Test public void testRangePagingBatchesReverse() { if (!supportsReverse()) { return; } int totalPuts = 101; for (int i = 0 ; i < totalPuts ; i++) { putDirect("row"+i, "col1", "v1", 0); } Map<RangeRequest, TokenBackedBasicResultsPage<RowResult<Value>, byte[]>> ranges = keyValueService.getFirstBatchForRanges(TEST_TABLE, Iterables.limit(Iterables.cycle(RangeRequest.reverseBuilder().batchHint(1000).build()), 100), 1); assertEquals(1, ranges.keySet().size()); assertEquals(totalPuts, ranges.values().iterator().next().getResults().size()); }
@Test public void testRangePagingBatchSizeOneReverse() { if (!supportsReverse()) { return; } int totalPuts = 100; for (int i = 0 ; i < totalPuts ; i++) { putDirect("row"+i, "col1", "v1", 0); } RangeRequest rangeRequest = RangeRequest.reverseBuilder().batchHint(1).build(); Map<RangeRequest, TokenBackedBasicResultsPage<RowResult<Value>, byte[]>> ranges = keyValueService.getFirstBatchForRanges(TEST_TABLE, Iterables.limit(Iterables.cycle(rangeRequest), 100), 1); assertEquals(1, ranges.keySet().size()); assertEquals(1, ranges.values().iterator().next().getResults().size()); assertEquals("row99", PtBytes.toString(ranges.values().iterator().next().getResults().iterator().next().getRowName())); }
@Test public void testRangeAfterTimestampReverse() { if (!supportsReverse()) { return; } putDirect("row1", "col2", "", 0); putDirect("row2", "col2", "", 0); putDirect("row3", "col2", "", 5); RangeRequest rangeRequest = RangeRequest.reverseBuilder().batchHint(1).build(); Map<RangeRequest, TokenBackedBasicResultsPage<RowResult<Value>, byte[]>> ranges = keyValueService.getFirstBatchForRanges(TEST_TABLE, Collections.singleton(rangeRequest), 1); assertEquals(1, ranges.keySet().size()); TokenBackedBasicResultsPage<RowResult<Value>, byte[]> page = ranges.values().iterator().next(); assertTrue(page.moreResultsAvailable()); }
private void testGetRangeWithTimestamps(boolean reverse) { putTestDataForMultipleTimestamps(); final RangeRequest range; if (!reverse) { range = RangeRequest.builder().startRowInclusive(row(0)).endRowExclusive(row(1)).build(); } else { range = RangeRequest.reverseBuilder().startRowInclusive(row(0)).build(); } ClosableIterator<RowResult<Set<Long>>> rangeWithHistory = keyValueService.getRangeOfTimestamps( TEST_TABLE, range, TEST_TIMESTAMP + 2); RowResult<Set<Long>> row = rangeWithHistory.next(); assertFalse(rangeWithHistory.hasNext()); rangeWithHistory.close(); assertEquals(1, Iterables.size(row.getCells())); Entry<Cell, Set<Long>> cell0 = row.getCells().iterator().next(); assertEquals(2, cell0.getValue().size()); assertTrue(cell0.getValue().contains(TEST_TIMESTAMP)); assertTrue(cell0.getValue().contains(TEST_TIMESTAMP + 1)); }
@Test public void testKeyValueRangeReverse() { if (!supportsReverse()) { return; } putDirect("row1", "col1", "", 0); putDirect("row2", "col1", "", 0); putDirect("row2", "col2", "", 0); RangeRequest allRange = RangeRequest.reverseBuilder().batchHint(3).build(); ClosableIterator<RowResult<Value>> range = keyValueService.getRange(TEST_TABLE, allRange, 1); ImmutableList<RowResult<Value>> list = ImmutableList.copyOf(range); assertEquals(2, list.size()); assertEquals("row2", PtBytes.toString(list.iterator().next().getRowName())); }
final RangeRequest allReverse = RangeRequest.reverseBuilder().build(); assertRangeSizeAndOrdering(keyValueService.getRange(TEST_TABLE, allReverse, TEST_TIMESTAMP + 1), 3, final RangeRequest upboundedReverse = RangeRequest.reverseBuilder().endRowExclusive(row(0)).build(); assertRangeSizeAndOrdering(keyValueService.getRange(TEST_TABLE, upboundedReverse, TEST_TIMESTAMP + 1), 2, final RangeRequest downboundedReverse = RangeRequest.reverseBuilder().startRowInclusive(row(1)).build(); assertRangeSizeAndOrdering(keyValueService.getRange(TEST_TABLE, downboundedReverse, TEST_TIMESTAMP + 1), 2, final RangeRequest bothboundedReverse = RangeRequest.reverseBuilder() .startRowInclusive(row(2)) .endRowExclusive(row(1))