From ee3fd425c9899284ee1a04920c7d8e47d2d47dae Mon Sep 17 00:00:00 2001 From: Kristen O'Leary Date: Fri, 8 May 2020 17:30:18 -0400 Subject: [PATCH 1/2] fix: set x-goog-api-client as internal header --- .../bigtable/data/v2/stub/EnhancedBigtableStubSettings.java | 3 ++- .../com/google/cloud/bigtable/data/v2/stub/HeadersTest.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java index d653542ac..ce8b4bb2b 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java @@ -519,7 +519,8 @@ private Builder() { setTransportChannelProvider(defaultTransportChannelProvider()); setStreamWatchdogCheckInterval(baseDefaults.getStreamWatchdogCheckInterval()); setStreamWatchdogProvider(baseDefaults.getStreamWatchdogProvider()); - setHeaderProvider(BigtableStubSettings.defaultApiClientHeaderProviderBuilder().build()); + setInternalHeaderProvider( + BigtableStubSettings.defaultApiClientHeaderProviderBuilder().build()); setTracerFactory( new OpencensusTracerFactory( diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java index 32c7eb353..e5af2deed 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java @@ -18,6 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import com.google.api.gax.batching.Batcher; +import com.google.api.gax.rpc.NoHeaderProvider; import com.google.bigtable.v2.BigtableGrpc; import com.google.bigtable.v2.CheckAndMutateRowRequest; import com.google.bigtable.v2.CheckAndMutateRowResponse; @@ -104,6 +105,11 @@ public void setUp() throws Exception { .setElementCountThreshold(1L) .build()); + // getInternalHeaderProvider is a protected method so we can't call it, instead ensure that + // headers were not set here. the test will assert the full header later on + if (!(settings.stubSettings().getHeaderProvider() instanceof NoHeaderProvider)) { + throw new AssertionError("header provider should not be set"); + } client = BigtableDataClient.create(settings.build()); } From 2e68125a23ce495a0a82ba2b874c22e953255958 Mon Sep 17 00:00:00 2001 From: Kristen O'Leary Date: Fri, 8 May 2020 17:44:14 -0400 Subject: [PATCH 2/2] review feedback --- .../bigtable/data/v2/stub/HeadersTest.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java index e5af2deed..c6c5740d8 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/HeadersTest.java @@ -18,7 +18,8 @@ import static com.google.common.truth.Truth.assertThat; import com.google.api.gax.batching.Batcher; -import com.google.api.gax.rpc.NoHeaderProvider; +import com.google.api.gax.rpc.FixedHeaderProvider; +import com.google.api.gax.rpc.HeaderProvider; import com.google.bigtable.v2.BigtableGrpc; import com.google.bigtable.v2.CheckAndMutateRowRequest; import com.google.bigtable.v2.CheckAndMutateRowResponse; @@ -62,11 +63,14 @@ public class HeadersTest { private static final String TABLE_NAME = NameUtil.formatTableName(PROJECT_ID, INSTANCE_ID, TABLE_ID); private static final String APP_PROFILE_ID = "fake-profile"; + private static final String TEST_FIXED_HEADER_STRING = "test_fixed_header"; private static final Metadata.Key X_GOOG_REQUEST_PARAMS_KEY = Metadata.Key.of("x-goog-request-params", Metadata.ASCII_STRING_MARSHALLER); private static final Metadata.Key API_CLIENT_HEADER_KEY = Metadata.Key.of("x-goog-api-client", Metadata.ASCII_STRING_MARSHALLER); + private static final Metadata.Key TEST_FIXED_HEADER = + Metadata.Key.of(TEST_FIXED_HEADER_STRING, Metadata.ASCII_STRING_MARSHALLER); private Server server; private BlockingQueue sentMetadata = new ArrayBlockingQueue<>(10); @@ -92,9 +96,13 @@ public void setUp() throws Exception { .setInstanceId(INSTANCE_ID) .setAppProfileId(APP_PROFILE_ID); + HeaderProvider headerProvider = + FixedHeaderProvider.create(TEST_FIXED_HEADER_STRING, "test_header_value"); + // Force immediate flush settings .stubSettings() + .setHeaderProvider(headerProvider) .bulkMutateRowsSettings() .setBatchingSettings( settings @@ -105,11 +113,6 @@ public void setUp() throws Exception { .setElementCountThreshold(1L) .build()); - // getInternalHeaderProvider is a protected method so we can't call it, instead ensure that - // headers were not set here. the test will assert the full header later on - if (!(settings.stubSettings().getHeaderProvider() instanceof NoHeaderProvider)) { - throw new AssertionError("header provider should not be set"); - } client = BigtableDataClient.create(settings.build()); } @@ -178,6 +181,9 @@ private void verifyHeaderSent() { assertThat(apiClientValue).containsMatch("gl-java/[.\\d_]+"); assertThat(apiClientValue).containsMatch("gax/[.\\d_]+"); assertThat(apiClientValue).containsMatch("grpc/[.\\d_]+"); + + String fixedHeader = metadata.get(TEST_FIXED_HEADER); + assertThat(fixedHeader).isEqualTo("test_header_value"); } private class MetadataInterceptor implements ServerInterceptor {