|
15 | 15 | */ |
16 | 16 | package com.google.cloud.bigtable.data.v2; |
17 | 17 |
|
| 18 | +import static com.google.cloud.bigtable.data.v2.models.Filters.FILTERS; |
18 | 19 | import static com.google.common.truth.Truth.assertThat; |
19 | 20 | import static org.mockito.Matchers.any; |
20 | 21 |
|
|
33 | 34 | import com.google.cloud.bigtable.data.v2.models.BulkMutationBatcher; |
34 | 35 | import com.google.cloud.bigtable.data.v2.models.BulkMutationBatcher.BulkMutationFailure; |
35 | 36 | import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation; |
| 37 | +import com.google.cloud.bigtable.data.v2.models.Filters; |
36 | 38 | import com.google.cloud.bigtable.data.v2.models.InstanceName; |
37 | 39 | import com.google.cloud.bigtable.data.v2.models.KeyOffset; |
38 | 40 | import com.google.cloud.bigtable.data.v2.models.Mutation; |
@@ -138,22 +140,45 @@ public void proxyReadRowStrAsyncTest() { |
138 | 140 | } |
139 | 141 |
|
140 | 142 | @Test |
141 | | - public void readRowQueryAsyncTest() { |
142 | | - Query query = Query.create("fake-table").rowKey("fake-row-key"); |
143 | | - bigtableDataClient.readRowAsync(query); |
| 143 | + public void readRowFilterAsyncTest() { |
| 144 | + // Build the filter expression |
| 145 | + Filters.Filter filter = FILTERS.chain().filter(FILTERS.qualifier().regex("prefix.*")) |
| 146 | + .filter(FILTERS.limit().cellsPerRow(10)); |
| 147 | + |
| 148 | + bigtableDataClient.readRowAsync("fake-table", ByteString.copyFromUtf8("fake-row-key"), filter); |
144 | 149 | ArgumentCaptor<Query> requestCaptor = ArgumentCaptor.forClass(Query.class); |
145 | 150 | Mockito.verify(mockReadRowsCallable.first()).futureCall(requestCaptor.capture()); |
146 | 151 |
|
147 | 152 | RequestContext ctx = |
148 | 153 | RequestContext.create(InstanceName.of("fake-project", "fake-instance"), "fake-profile"); |
149 | 154 | // NOTE: limit(1) is added by the mocked first() call, so it's not tested here |
150 | | - assertThat(requestCaptor.getValue().toProto(ctx)) |
151 | | - .isEqualTo( |
152 | | - ReadRowsRequest.newBuilder() |
153 | | - .setTableName("projects/fake-project/instances/fake-instance/tables/fake-table") |
154 | | - .setAppProfileId("fake-profile") |
155 | | - .setRows(RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("fake-row-key"))) |
156 | | - .build()); |
| 155 | + assertThat(requestCaptor.getValue().toProto(ctx)).isEqualTo(ReadRowsRequest.newBuilder() |
| 156 | + .setTableName("projects/fake-project/instances/fake-instance/tables/fake-table") |
| 157 | + .setAppProfileId("fake-profile") |
| 158 | + .setRows(RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("fake-row-key"))).setFilter( |
| 159 | + FILTERS.chain().filter(FILTERS.qualifier().regex("prefix.*")) |
| 160 | + .filter(FILTERS.limit().cellsPerRow(10)).toProto()).build()); |
| 161 | + } |
| 162 | + |
| 163 | + @Test |
| 164 | + public void readRowFilterStrAsyncTest() { |
| 165 | + // Build the filter expression |
| 166 | + Filters.Filter filter = FILTERS.chain().filter(FILTERS.qualifier().regex("prefix.*")) |
| 167 | + .filter(FILTERS.limit().cellsPerRow(10)); |
| 168 | + |
| 169 | + bigtableDataClient.readRowAsync("fake-table", "fake-row-key", filter); |
| 170 | + ArgumentCaptor<Query> requestCaptor = ArgumentCaptor.forClass(Query.class); |
| 171 | + Mockito.verify(mockReadRowsCallable.first()).futureCall(requestCaptor.capture()); |
| 172 | + |
| 173 | + RequestContext ctx = |
| 174 | + RequestContext.create(InstanceName.of("fake-project", "fake-instance"), "fake-profile"); |
| 175 | + // NOTE: limit(1) is added by the mocked first() call, so it's not tested here |
| 176 | + assertThat(requestCaptor.getValue().toProto(ctx)).isEqualTo(ReadRowsRequest.newBuilder() |
| 177 | + .setTableName("projects/fake-project/instances/fake-instance/tables/fake-table") |
| 178 | + .setAppProfileId("fake-profile") |
| 179 | + .setRows(RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("fake-row-key"))).setFilter( |
| 180 | + FILTERS.chain().filter(FILTERS.qualifier().regex("prefix.*")) |
| 181 | + .filter(FILTERS.limit().cellsPerRow(10)).toProto()).build()); |
157 | 182 | } |
158 | 183 |
|
159 | 184 | @Test |
@@ -201,26 +226,51 @@ public void readRowStrTest() { |
201 | 226 | } |
202 | 227 |
|
203 | 228 | @Test |
204 | | - public void readRowQueryTest() { |
205 | | - Query query = Query.create("fake-table").rowKey("fake-row-key"); |
206 | | - Mockito.when(mockReadRowsCallable.first().futureCall(any(Query.class))) |
207 | | - .thenReturn(ApiFutures.immediateFuture( |
| 229 | + public void readRowFilterTest() { |
| 230 | + // Build the filter expression |
| 231 | + Filters.Filter filter = FILTERS.chain().filter(FILTERS.qualifier().regex("prefix.*")) |
| 232 | + .filter(FILTERS.limit().cellsPerRow(10)); |
| 233 | + Mockito.when(mockReadRowsCallable.first().futureCall(any(Query.class))).thenReturn(ApiFutures |
| 234 | + .immediateFuture( |
208 | 235 | Row.create(ByteString.copyFromUtf8("fake-row-key"), Collections.<RowCell>emptyList()))); |
209 | | - bigtableDataClient.readRow(query); |
| 236 | + bigtableDataClient.readRow("fake-table", ByteString.copyFromUtf8("fake-row-key"), filter); |
210 | 237 |
|
211 | 238 | ArgumentCaptor<Query> requestCaptor = ArgumentCaptor.forClass(Query.class); |
212 | 239 | Mockito.verify(mockReadRowsCallable.first()).futureCall(requestCaptor.capture()); |
213 | 240 |
|
214 | 241 | RequestContext ctx = |
215 | 242 | RequestContext.create(InstanceName.of("fake-project", "fake-instance"), "fake-profile"); |
216 | 243 | // NOTE: limit(1) is added by the mocked first() call, so it's not tested here |
217 | | - assertThat(requestCaptor.getValue().toProto(ctx)) |
218 | | - .isEqualTo( |
219 | | - ReadRowsRequest.newBuilder() |
220 | | - .setTableName("projects/fake-project/instances/fake-instance/tables/fake-table") |
221 | | - .setAppProfileId("fake-profile") |
222 | | - .setRows(RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("fake-row-key"))) |
223 | | - .build()); |
| 244 | + assertThat(requestCaptor.getValue().toProto(ctx)).isEqualTo(ReadRowsRequest.newBuilder() |
| 245 | + .setTableName("projects/fake-project/instances/fake-instance/tables/fake-table") |
| 246 | + .setAppProfileId("fake-profile") |
| 247 | + .setRows(RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("fake-row-key"))).setFilter( |
| 248 | + FILTERS.chain().filter(FILTERS.qualifier().regex("prefix.*")) |
| 249 | + .filter(FILTERS.limit().cellsPerRow(10)).toProto()).build()); |
| 250 | + } |
| 251 | + |
| 252 | + @Test |
| 253 | + public void readRowStrFilterTest() { |
| 254 | + // Build the filter expression |
| 255 | + Filters.Filter filter = FILTERS.chain().filter(FILTERS.qualifier().regex("prefix.*")) |
| 256 | + .filter(FILTERS.limit().cellsPerRow(10)); |
| 257 | + Mockito.when(mockReadRowsCallable.first().futureCall(any(Query.class))).thenReturn(ApiFutures |
| 258 | + .immediateFuture( |
| 259 | + Row.create(ByteString.copyFromUtf8("fake-row-key"), Collections.<RowCell>emptyList()))); |
| 260 | + bigtableDataClient.readRow("fake-table", "fake-row-key", filter); |
| 261 | + |
| 262 | + ArgumentCaptor<Query> requestCaptor = ArgumentCaptor.forClass(Query.class); |
| 263 | + Mockito.verify(mockReadRowsCallable.first()).futureCall(requestCaptor.capture()); |
| 264 | + |
| 265 | + RequestContext ctx = |
| 266 | + RequestContext.create(InstanceName.of("fake-project", "fake-instance"), "fake-profile"); |
| 267 | + // NOTE: limit(1) is added by the mocked first() call, so it's not tested here |
| 268 | + assertThat(requestCaptor.getValue().toProto(ctx)).isEqualTo(ReadRowsRequest.newBuilder() |
| 269 | + .setTableName("projects/fake-project/instances/fake-instance/tables/fake-table") |
| 270 | + .setAppProfileId("fake-profile") |
| 271 | + .setRows(RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("fake-row-key"))).setFilter( |
| 272 | + FILTERS.chain().filter(FILTERS.qualifier().regex("prefix.*")) |
| 273 | + .filter(FILTERS.limit().cellsPerRow(10)).toProto()).build()); |
224 | 274 | } |
225 | 275 |
|
226 | 276 | @Test |
|
0 commit comments