Skip to content

Commit 1f1cfaf

Browse files
chore: promote app_profile_id to request headers (#268)
This will unblock work on some experimental internal routing work
1 parent 67cbcf9 commit 1f1cfaf

File tree

2 files changed

+43
-18
lines changed

2 files changed

+43
-18
lines changed

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java

+17-6
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,9 @@ private <RowT> ServerStreamingCallable<Query, RowT> createReadRowsBaseCallable(
238238
new RequestParamsExtractor<ReadRowsRequest>() {
239239
@Override
240240
public Map<String, String> extract(ReadRowsRequest readRowsRequest) {
241-
return ImmutableMap.of("table_name", readRowsRequest.getTableName());
241+
return ImmutableMap.of(
242+
"table_name", readRowsRequest.getTableName(),
243+
"app_profile_id", readRowsRequest.getAppProfileId());
242244
}
243245
})
244246
.build(),
@@ -296,7 +298,9 @@ private UnaryCallable<String, List<KeyOffset>> createSampleRowKeysCallable() {
296298
@Override
297299
public Map<String, String> extract(
298300
SampleRowKeysRequest sampleRowKeysRequest) {
299-
return ImmutableMap.of("table_name", sampleRowKeysRequest.getTableName());
301+
return ImmutableMap.of(
302+
"table_name", sampleRowKeysRequest.getTableName(),
303+
"app_profile_id", sampleRowKeysRequest.getAppProfileId());
300304
}
301305
})
302306
.build(),
@@ -328,7 +332,9 @@ private UnaryCallable<RowMutation, Void> createMutateRowCallable() {
328332
new RequestParamsExtractor<MutateRowRequest>() {
329333
@Override
330334
public Map<String, String> extract(MutateRowRequest mutateRowRequest) {
331-
return ImmutableMap.of("table_name", mutateRowRequest.getTableName());
335+
return ImmutableMap.of(
336+
"table_name", mutateRowRequest.getTableName(),
337+
"app_profile_id", mutateRowRequest.getAppProfileId());
332338
}
333339
})
334340
.build(),
@@ -449,7 +455,9 @@ private UnaryCallable<MutateRowsRequest, Void> createMutateRowsBaseCallable() {
449455
new RequestParamsExtractor<MutateRowsRequest>() {
450456
@Override
451457
public Map<String, String> extract(MutateRowsRequest mutateRowsRequest) {
452-
return ImmutableMap.of("table_name", mutateRowsRequest.getTableName());
458+
return ImmutableMap.of(
459+
"table_name", mutateRowsRequest.getTableName(),
460+
"app_profile_id", mutateRowsRequest.getAppProfileId());
453461
}
454462
})
455463
.build(),
@@ -490,7 +498,8 @@ private UnaryCallable<ConditionalRowMutation, Boolean> createCheckAndMutateRowCa
490498
public Map<String, String> extract(
491499
CheckAndMutateRowRequest checkAndMutateRowRequest) {
492500
return ImmutableMap.of(
493-
"table_name", checkAndMutateRowRequest.getTableName());
501+
"table_name", checkAndMutateRowRequest.getTableName(),
502+
"app_profile_id", checkAndMutateRowRequest.getAppProfileId());
494503
}
495504
})
496505
.build(),
@@ -522,7 +531,9 @@ private UnaryCallable<ReadModifyWriteRow, Row> createReadModifyWriteRowCallable(
522531
new RequestParamsExtractor<ReadModifyWriteRowRequest>() {
523532
@Override
524533
public Map<String, String> extract(ReadModifyWriteRowRequest request) {
525-
return ImmutableMap.of("table_name", request.getTableName());
534+
return ImmutableMap.of(
535+
"table_name", request.getTableName(),
536+
"app_profile_id", request.getAppProfileId());
526537
}
527538
})
528539
.build(),

google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java

+26-12
Original file line numberDiff line numberDiff line change
@@ -44,34 +44,36 @@ public class ResourceHeaderTest {
4444
private static final String PROJECT_ID = "fake-project";
4545
private static final String INSTANCE_ID = "fake-instance";
4646
private static final String TABLE_ID = "fake-table";
47-
private static final String NAME = "resource-header-test:123";
48-
private static final Pattern EXPECTED_HEADER_PATTERN =
49-
Pattern.compile(".*" + NameUtil.formatTableName(PROJECT_ID, INSTANCE_ID, TABLE_ID) + ".*");
50-
private static final String HEADER_NAME = "x-goog-request-params";
51-
private static final String TEST_HEADER_NAME = "simple-header-name";
47+
private static final String TABLE_NAME =
48+
NameUtil.formatTableName(PROJECT_ID, INSTANCE_ID, TABLE_ID);
49+
private static final String APP_PROFILE_ID = "fake-profile";
50+
51+
private static final String CHANNEL_NAME = "resource-header-test:123";
52+
private static final String X_GOOG_REQUEST_PARAMS_KEY = "x-goog-request-params";
53+
private static final String TEST_HEADER_KEY = "simple-header-name";
5254
private static final String TEST_HEADER_VALUE = "simple-header-value";
53-
private static final Pattern TEST_PATTERN = Pattern.compile(".*" + TEST_HEADER_VALUE + ".*");
5455

5556
private InProcessServer<?> server;
5657
private LocalChannelProvider channelProvider;
5758
private BigtableDataClient client;
5859

5960
@Before
6061
public void setUp() throws Exception {
61-
server = new InProcessServer<>(new BigtableGrpc.BigtableImplBase() {}, NAME);
62+
server = new InProcessServer<>(new BigtableGrpc.BigtableImplBase() {}, CHANNEL_NAME);
6263
server.start();
63-
channelProvider = LocalChannelProvider.create(NAME);
64+
channelProvider = LocalChannelProvider.create(CHANNEL_NAME);
6465

6566
BigtableDataSettings.Builder settings =
6667
BigtableDataSettings.newBuilder()
6768
.setProjectId(PROJECT_ID)
6869
.setInstanceId(INSTANCE_ID)
70+
.setAppProfileId(APP_PROFILE_ID)
6971
.setCredentialsProvider(NoCredentialsProvider.create());
7072

7173
settings
7274
.stubSettings()
7375
.setTransportChannelProvider(channelProvider)
74-
.setHeaderProvider(FixedHeaderProvider.create(TEST_HEADER_NAME, TEST_HEADER_VALUE));
76+
.setHeaderProvider(FixedHeaderProvider.create(TEST_HEADER_KEY, TEST_HEADER_VALUE));
7577

7678
// Force immediate flush
7779
settings
@@ -139,9 +141,21 @@ public void readModifyWriteTest() {
139141
}
140142

141143
private void verifyHeaderSent() {
142-
boolean headerSent = channelProvider.isHeaderSent(HEADER_NAME, EXPECTED_HEADER_PATTERN);
143-
assertWithMessage("Header was sent").that(headerSent).isTrue();
144-
boolean testHeader = channelProvider.isHeaderSent(TEST_HEADER_NAME, TEST_PATTERN);
144+
boolean tableHeaderSent =
145+
channelProvider.isHeaderSent(
146+
X_GOOG_REQUEST_PARAMS_KEY,
147+
Pattern.compile("(^|.*&)table_name=" + TABLE_NAME + "($|&.*)"));
148+
assertWithMessage("Tablename header was sent").that(tableHeaderSent).isTrue();
149+
150+
boolean appProfileHeaderSent =
151+
channelProvider.isHeaderSent(
152+
X_GOOG_REQUEST_PARAMS_KEY,
153+
Pattern.compile("(^|.*&)app_profile_id=" + APP_PROFILE_ID + "($|&.*)"));
154+
assertWithMessage("App profile header was sent").that(appProfileHeaderSent).isTrue();
155+
156+
boolean testHeader =
157+
channelProvider.isHeaderSent(
158+
TEST_HEADER_KEY, Pattern.compile("^" + TEST_HEADER_VALUE + "$"));
145159
assertWithMessage("HeaderProvider's header received in Channel").that(testHeader).isTrue();
146160
}
147161
}

0 commit comments

Comments
 (0)