/** * * * <pre> * The row keys and/or ranges to read. If not specified, reads from all rows. * </pre> * * <code>.google.bigtable.v2.RowSet rows = 2;</code> */ public Builder setRows(com.google.bigtable.v2.RowSet.Builder builderForValue) { if (rowsBuilder_ == null) { rows_ = builderForValue.build(); onChanged(); } else { rowsBuilder_.setMessage(builderForValue.build()); } return this; } /**
@Test public void splitMultipleKeysTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("1-beforeSplit")) .addRowKeys(ByteString.copyFromUtf8("2-onSplit")) .addRowKeys(ByteString.copyFromUtf8("3-afterSplit")) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("2-onSplit")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("1-beforeSplit")) .addRowKeys(ByteString.copyFromUtf8("2-onSplit")) .build(), RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("3-afterSplit")).build()); }
@Test public void multiKeyBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("a")) .addRowKeys(ByteString.copyFromUtf8("d")) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a").endClosed("d")); }
@Test public void rangeRightOfSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("9-row-key")) .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("5-range-start")) .setEndKeyOpen(ByteString.copyFromUtf8("7-range-end"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("3-split")) .build(); verifySplit( rowSet, splitPoints, null, RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("9-row-key")) .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("5-range-start")) .setEndKeyOpen(ByteString.copyFromUtf8("7-range-end"))) .build()); }
@Test public void rangeLeftOfSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("0-key")) .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("1-range-start")) .setEndKeyOpen(ByteString.copyFromUtf8("2-range-end"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("3-split")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("0-key")) .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("1-range-start")) .setEndKeyOpen(ByteString.copyFromUtf8("2-range-end"))) .build(), null); }
@Test public void startOnSplitPointTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setStartKeyClosed(ByteString.copyFromUtf8("3-split"))) .build(); // Inclusive start on a split point should generate 2 segments SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("3-split")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("3-split")) .setEndKeyClosed(ByteString.copyFromUtf8("3-split"))) .build(), RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("3-split"))) .build()); }
@Test public void unboundedRangeLeftOfSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setEndKeyOpen(ByteString.copyFromUtf8("1-range-end"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("5-split")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setEndKeyOpen(ByteString.copyFromUtf8("1-range-end"))) .build(), null); }
@Test public void unboundedRightOfSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("5-range-start"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("3-split")) .build(); verifySplit( rowSet, splitPoints, null, RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("5-range-start"))) .build()); }
@Test public void splitKeysEmptyLeft() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("5-test")) .addRowKeys(ByteString.copyFromUtf8("8-test")) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("0-split")) .add(ByteString.copyFromUtf8("6-split")) .build(); verifySplit( rowSet, splitPoints, null, RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("5-test")).build(), RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("8-test")).build()); }
@Test public void splitKeysEmptyRight() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("0-test")) .addRowKeys(ByteString.copyFromUtf8("2-test")) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("1-split")) .add(ByteString.copyFromUtf8("5-split")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("0-test")).build(), RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("2-test")).build(), null); }
@Test public void splitEmptyTest() { RowSet rowSet = RowSet.newBuilder().build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("a")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setEndKeyClosed(ByteString.copyFromUtf8("a"))) .build(), RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("a"))) .build()); }
@Test public void multipleRangeBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("a")) .setEndKeyOpen(ByteString.copyFromUtf8("m"))) .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("q")) .setEndKeyOpen(ByteString.copyFromUtf8("z"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.create("a", "z")); }
@Test public void noSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("a")) .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("p")) .setEndKeyOpen(ByteString.copyFromUtf8("q"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE).build(); verifySplit(rowSet, splitPoints, rowSet); }
@Test public void singleRangeUnbounded2BoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setEndKeyClosed(ByteString.copyFromUtf8("z"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().endClosed("z")); }
@Test public void singleOpenOpenRangeBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("a")) .setEndKeyOpen(ByteString.copyFromUtf8("b"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startOpen("a").endOpen("b")); }
@Test public void singleClosedOpenRangeBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("a")) .setEndKeyOpen(ByteString.copyFromUtf8("b"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a").endOpen("b")); }
@Test public void singleKeyBoundTest() { RowSet rowSet = RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("a")).build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a").endClosed("a")); }
@Test public void singleRangeUnbounded1BoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setStartKeyClosed(ByteString.copyFromUtf8("a"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a")); }
@Test public void singleClosedClosedRangeBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("a")) .setEndKeyClosed(ByteString.copyFromUtf8("b"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a").endClosed("b")); }
@Test public void singleRangeOpenClosedBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("a")) .setEndKeyClosed(ByteString.copyFromUtf8("b"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startOpen("a").endClosed("b")); }