From ab1acb91cd72b70bf4b689347e0a25b11d14c8f9 Mon Sep 17 00:00:00 2001 From: mpeddada1 Date: Tue, 6 Jan 2026 01:21:35 +0000 Subject: [PATCH 1/9] impl(bigtable): make endpoint options internal --- google/cloud/bigtable/CMakeLists.txt | 1 + .../bigtable/google_cloud_cpp_bigtable.bzl | 1 + .../bigtable/internal/endpoint_options.h | 64 +++++++++++++++++++ google/cloud/bigtable/options.h | 39 ++--------- 4 files changed, 71 insertions(+), 34 deletions(-) create mode 100644 google/cloud/bigtable/internal/endpoint_options.h diff --git a/google/cloud/bigtable/CMakeLists.txt b/google/cloud/bigtable/CMakeLists.txt index d294576aed5f9..799b584a978e8 100644 --- a/google/cloud/bigtable/CMakeLists.txt +++ b/google/cloud/bigtable/CMakeLists.txt @@ -192,6 +192,7 @@ add_library( internal/default_row_reader.h internal/defaults.cc internal/defaults.h + internal/endpoint_options.h internal/google_bytes_traits.cc internal/google_bytes_traits.h internal/legacy_async_bulk_apply.cc diff --git a/google/cloud/bigtable/google_cloud_cpp_bigtable.bzl b/google/cloud/bigtable/google_cloud_cpp_bigtable.bzl index 59b2c36e1e004..12ca8052563b3 100644 --- a/google/cloud/bigtable/google_cloud_cpp_bigtable.bzl +++ b/google/cloud/bigtable/google_cloud_cpp_bigtable.bzl @@ -94,6 +94,7 @@ google_cloud_cpp_bigtable_hdrs = [ "internal/data_tracing_connection.h", "internal/default_row_reader.h", "internal/defaults.h", + "internal/endpoint_options.h", "internal/google_bytes_traits.h", "internal/legacy_async_bulk_apply.h", "internal/legacy_async_row_reader.h", diff --git a/google/cloud/bigtable/internal/endpoint_options.h b/google/cloud/bigtable/internal/endpoint_options.h new file mode 100644 index 0000000000000..53488389aa5ae --- /dev/null +++ b/google/cloud/bigtable/internal/endpoint_options.h @@ -0,0 +1,64 @@ +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H + +#include "google/cloud/bigtable/options.h" +#include +#include + +namespace google { +namespace cloud { +namespace bigtable_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +/** + * The endpoint for data operations. + * + * @deprecated Please use `google::cloud::EndpointOption` instead. + */ +struct DataEndpointOption { + using Type = std::string; +}; + +/** + * The endpoint for table admin operations. + * + * @deprecated Please use `google::cloud::EndpointOption` instead. + */ +struct AdminEndpointOption { + using Type = std::string; +}; + +/** + * The endpoint for instance admin operations. + * + * In most scenarios this should have the same value as `AdminEndpointOption`. + * The most common exception is testing, where the emulator for instance admin + * operations may be different than the emulator for admin and data operations. + * + * @deprecated Please use `google::cloud::EndpointOption` instead. + */ +struct InstanceAdminEndpointOption { + using Type = std::string; +}; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace bigtable_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H + diff --git a/google/cloud/bigtable/options.h b/google/cloud/bigtable/options.h index 865d5c009547e..92e1584217e8b 100644 --- a/google/cloud/bigtable/options.h +++ b/google/cloud/bigtable/options.h @@ -39,6 +39,7 @@ */ #include "google/cloud/bigtable/idempotent_mutation_policy.h" +#include "google/cloud/bigtable/internal/endpoint_options.h" #include "google/cloud/bigtable/retry_policy.h" #include "google/cloud/bigtable/rpc_retry_policy.h" #include "google/cloud/bigtable/version.h" @@ -99,37 +100,6 @@ struct ReverseScanOption { using Type = bool; }; -/** - * The endpoint for data operations. - * - * @deprecated Please use `google::cloud::EndpointOption` instead. - */ -struct DataEndpointOption { - using Type = std::string; -}; - -/** - * The endpoint for table admin operations. - * - * @deprecated Please use `google::cloud::EndpointOption` instead. - */ -struct AdminEndpointOption { - using Type = std::string; -}; - -/** - * The endpoint for instance admin operations. - * - * In most scenarios this should have the same value as `AdminEndpointOption`. - * The most common exception is testing, where the emulator for instance admin - * operations may be different than the emulator for admin and data operations. - * - * @deprecated Please use `google::cloud::EndpointOption` instead. - */ -struct InstanceAdminEndpointOption { - using Type = std::string; -}; - /** * Minimum time in ms to refresh connections. * @@ -207,9 +177,10 @@ struct QueryPlanRefreshFunctionRetryPolicyOption { /// The complete list of options accepted by `bigtable::*Client` using ClientOptionList = - OptionList; + OptionList; /** * Option to configure the retry policy used by `Table`. From d6abe1dfbc49836f3214d75689b732435c55ecdc Mon Sep 17 00:00:00 2001 From: mpeddada1 Date: Tue, 6 Jan 2026 01:26:12 +0000 Subject: [PATCH 2/9] add migration guide --- doc/v3-migration-guide.md | 22 +++++++++++++++++++ .../bigtable/internal/endpoint_options.h | 1 - 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/doc/v3-migration-guide.md b/doc/v3-migration-guide.md index 9421abcddc5fc..56f759bef2d74 100644 --- a/doc/v3-migration-guide.md +++ b/doc/v3-migration-guide.md @@ -121,6 +121,28 @@ auto limit = google::cloud::bigtable::RowReader::NO_ROWS_LIMIT; +
+Removed Endpoint Options + + +The `bigtable::DataEndpointOption`, `bigtable::AdminEndpointOption`, and +`bigtable::InstanceAdminEndpointOption` classes have been removed. Applications +should use `google::cloud::EndpointOption` instead. + +**Before:** + +```cpp +auto options = google::cloud::Options{}.set("..."); +``` + +**After:** + +```cpp +auto options = google::cloud::Options{}.set("..."); +``` + +
+ ### Pubsub ### Spanner diff --git a/google/cloud/bigtable/internal/endpoint_options.h b/google/cloud/bigtable/internal/endpoint_options.h index 53488389aa5ae..51c8b69a1f767 100644 --- a/google/cloud/bigtable/internal/endpoint_options.h +++ b/google/cloud/bigtable/internal/endpoint_options.h @@ -61,4 +61,3 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END } // namespace google #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H - From f4c2ecb099200f1b508bfe5411b8f5cb1c93900e Mon Sep 17 00:00:00 2001 From: mpeddada1 Date: Tue, 6 Jan 2026 01:28:40 +0000 Subject: [PATCH 3/9] modify endpoint_options --- google/cloud/bigtable/internal/endpoint_options.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/google/cloud/bigtable/internal/endpoint_options.h b/google/cloud/bigtable/internal/endpoint_options.h index 51c8b69a1f767..886cc05df8686 100644 --- a/google/cloud/bigtable/internal/endpoint_options.h +++ b/google/cloud/bigtable/internal/endpoint_options.h @@ -15,8 +15,6 @@ #ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H -#include "google/cloud/bigtable/options.h" -#include #include namespace google { From 2b16776c60797667787b12ad94e7ad5c86e450f2 Mon Sep 17 00:00:00 2001 From: mpeddada1 Date: Thu, 8 Jan 2026 16:27:14 +0000 Subject: [PATCH 4/9] fix namespaces --- google/cloud/bigtable/internal/defaults.cc | 53 ++++++++++++++-------- google/cloud/bigtable/options.h | 6 +-- 2 files changed, 36 insertions(+), 23 deletions(-) diff --git a/google/cloud/bigtable/internal/defaults.cc b/google/cloud/bigtable/internal/defaults.cc index c7c1cd041ea86..9544730158bda 100644 --- a/google/cloud/bigtable/internal/defaults.cc +++ b/google/cloud/bigtable/internal/defaults.cc @@ -126,20 +126,24 @@ int DefaultConnectionPoolSize() { } Options HandleUniverseDomain(Options opts) { - if (!opts.has()) { + if (!opts.has<::google::cloud::bigtable_internal::DataEndpointOption>()) { auto ep = google::cloud::internal::UniverseDomainEndpoint( "bigtable.googleapis.com", opts); - opts.set(std::move(ep)); + opts.set<::google::cloud::bigtable_internal::DataEndpointOption>( + std::move(ep)); } - if (!opts.has()) { + if (!opts.has<::google::cloud::bigtable_internal::AdminEndpointOption>()) { auto ep = google::cloud::internal::UniverseDomainEndpoint( "bigtableadmin.googleapis.com", opts); - opts.set(std::move(ep)); + opts.set<::google::cloud::bigtable_internal::AdminEndpointOption>( + std::move(ep)); } - if (!opts.has()) { + if (!opts.has< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()) { auto ep = google::cloud::internal::UniverseDomainEndpoint( "bigtableadmin.googleapis.com", opts); - opts.set(std::move(ep)); + opts.set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + std::move(ep)); } return opts; } @@ -153,14 +157,16 @@ Options DefaultOptions(Options opts) { if (opts.has()) { auto const& ep = opts.get(); - if (!opts.has()) { - opts.set(ep); + if (!opts.has<::google::cloud::bigtable_internal::DataEndpointOption>()) { + opts.set<::google::cloud::bigtable_internal::DataEndpointOption>(ep); } - if (!opts.has()) { - opts.set(ep); + if (!opts.has<::google::cloud::bigtable_internal::AdminEndpointOption>()) { + opts.set<::google::cloud::bigtable_internal::AdminEndpointOption>(ep); } - if (!opts.has()) { - opts.set(ep); + if (!opts.has<::google::cloud::bigtable_internal:: + InstanceAdminEndpointOption>()) { + opts.set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + ep); } } @@ -168,7 +174,7 @@ Options DefaultOptions(Options opts) { GetEnv("GOOGLE_CLOUD_ENABLE_DIRECT_PATH").value_or(""); if (absl::c_any_of(absl::StrSplit(direct_path, ','), [](absl::string_view v) { return v == "bigtable"; })) { - opts.set( + opts.set<::google::cloud::bigtable_internal::DataEndpointOption>( "google-c2p:///directpath-bigtable.googleapis.com") .set("directpath-bigtable.googleapis.com"); @@ -180,15 +186,18 @@ Options DefaultOptions(Options opts) { auto emulator = GetEnv("BIGTABLE_EMULATOR_HOST"); if (emulator) { - opts.set(*emulator); - opts.set(*emulator); - opts.set(*emulator); + opts.set<::google::cloud::bigtable_internal::DataEndpointOption>(*emulator); + opts.set<::google::cloud::bigtable_internal::AdminEndpointOption>( + *emulator); + opts.set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + *emulator); } auto instance_admin_emulator = GetEnv("BIGTABLE_INSTANCE_ADMIN_EMULATOR_HOST"); if (instance_admin_emulator) { - opts.set(*std::move(instance_admin_emulator)); + opts.set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + *std::move(instance_admin_emulator)); } // Handle `UniverseDomainOption`. Note that we have already addressed the @@ -285,17 +294,21 @@ Options DefaultDataOptions(Options opts) { "bigtable.googleapis.com", opts); opts.set(std::move(ep)); } - return opts.set(opts.get()); + return opts.set( + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); } Options DefaultInstanceAdminOptions(Options opts) { opts = DefaultOptions(std::move(opts)); - return opts.set(opts.get()); + return opts.set( + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } Options DefaultTableAdminOptions(Options opts) { opts = DefaultOptions(std::move(opts)); - return opts.set(opts.get()); + return opts.set( + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); } } // namespace internal diff --git a/google/cloud/bigtable/options.h b/google/cloud/bigtable/options.h index 92e1584217e8b..efc2d81ea607c 100644 --- a/google/cloud/bigtable/options.h +++ b/google/cloud/bigtable/options.h @@ -177,9 +177,9 @@ struct QueryPlanRefreshFunctionRetryPolicyOption { /// The complete list of options accepted by `bigtable::*Client` using ClientOptionList = - OptionList; /** From f819577f71a65c3ebf50f4e7b5c3297afd170113 Mon Sep 17 00:00:00 2001 From: mpeddada1 Date: Thu, 8 Jan 2026 18:12:18 +0000 Subject: [PATCH 5/9] fix namespace --- .../cloud/bigtable/internal/defaults_test.cc | 152 ++++++++++++------ 1 file changed, 106 insertions(+), 46 deletions(-) diff --git a/google/cloud/bigtable/internal/defaults_test.cc b/google/cloud/bigtable/internal/defaults_test.cc index 19f666a323504..def9c4257f89b 100644 --- a/google/cloud/bigtable/internal/defaults_test.cc +++ b/google/cloud/bigtable/internal/defaults_test.cc @@ -53,8 +53,11 @@ TEST(OptionsTest, Defaults) { "BIGTABLE_INSTANCE_ADMIN_EMULATOR_HOST", absl::nullopt); auto opts = DefaultOptions(); - EXPECT_EQ("bigtable.googleapis.com", opts.get()); - EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); + EXPECT_EQ("bigtable.googleapis.com", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); EXPECT_EQ(typeid(grpc::GoogleDefaultCredentials()), @@ -94,9 +97,12 @@ TEST(OptionsTest, DefaultOptionsDoesNotOverride) { channel_args.SetString("test-key-1", "value-1"); auto opts = DefaultOptions( Options{} - .set("testdata.googleapis.com") - .set("testadmin.googleapis.com") - .set("testinstanceadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "testdata.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "testadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "testinstanceadmin.googleapis.com") .set(grpc::InsecureChannelCredentials()) .set( TracingOptions{}.SetOptions("single_line_mode=F")) @@ -107,8 +113,11 @@ TEST(OptionsTest, DefaultOptionsDoesNotOverride) { .set({{"test-key-2", "value-2"}}) .set({"test-prefix"})); - EXPECT_EQ("testdata.googleapis.com", opts.get()); - EXPECT_EQ("testadmin.googleapis.com", opts.get()); + EXPECT_EQ("testdata.googleapis.com", + opts.get<::google::cloud::bigtable_internal::>()); + EXPECT_EQ( + "testadmin.googleapis.com", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); EXPECT_EQ("testinstanceadmin.googleapis.com", opts.get()); EXPECT_EQ(typeid(grpc::InsecureChannelCredentials()), @@ -134,21 +143,38 @@ TEST(OptionsTest, EndpointOptionSetsAll) { auto options = Options{}.set("endpoint-option"); options = DefaultOptions(std::move(options)); EXPECT_EQ("endpoint-option", options.get()); - EXPECT_EQ("endpoint-option", options.get()); - EXPECT_EQ("endpoint-option", options.get()); - EXPECT_EQ("endpoint-option", options.get()); + EXPECT_EQ( + "endpoint-option", + options.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "endpoint-option", + options.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "endpoint-option", + options.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(OptionsTest, EndpointOptionOverridden) { - auto options = Options{} - .set("ignored") - .set("data") - .set("table-admin") - .set("instance-admin"); + auto options = + Options{} + .set("ignored") + .set<::google::cloud::bigtable_internal::DataEndpointOption>("data") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "table-admin") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instance-admin"); options = DefaultOptions(std::move(options)); - EXPECT_EQ("data", options.get()); - EXPECT_EQ("table-admin", options.get()); - EXPECT_EQ("instance-admin", options.get()); + EXPECT_EQ( + "data", + options.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "table-admin", + options.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "instance-admin", + options.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(OptionsTest, DefaultDataOptionsEndpoint) { @@ -168,9 +194,12 @@ TEST(OptionsTest, DefaultDataOptionsEndpoint) { TEST(OptionsTest, DefaultInstanceAdminOptions) { auto options = Options{} - .set("data.googleapis.com") - .set("tableadmin.googleapis.com") - .set("instanceadmin.googleapis.com"); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instanceadmin.googleapis.com"); options = DefaultInstanceAdminOptions(std::move(options)); EXPECT_EQ("instanceadmin.googleapis.com", options.get()); @@ -182,9 +211,12 @@ TEST(OptionsTest, DefaultInstanceAdminOptions) { TEST(OptionsTest, DefaultTableAdminOptions) { auto options = Options{} - .set("data.googleapis.com") - .set("tableadmin.googleapis.com") - .set("instanceadmin.googleapis.com"); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instanceadmin.googleapis.com"); options = DefaultTableAdminOptions(std::move(options)); EXPECT_EQ("tableadmin.googleapis.com", options.get()); @@ -285,9 +317,12 @@ TEST(OptionsTest, BigtableEndpointOptionsOverrideUniverseDomain) { auto options = Options{} .set("ud-option.net") - .set("data.googleapis.com") - .set("tableadmin.googleapis.com") - .set("instanceadmin.googleapis.com"); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instanceadmin.googleapis.com"); EXPECT_EQ(DefaultDataOptions(options).get(), "data.googleapis.com"); @@ -304,9 +339,11 @@ TEST(OptionsTest, BigtableEndpointEnvVarsOverrideUniverseDomain) { auto options = Options{} .set("ud-option.net") - .set("ignored-data.googleapis.com") - .set("ignored-tableadmin.googleapis.com") - .set( + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "ignored-data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "ignored-tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( "ignored-instanceadmin.googleapis.com") .set("ignored-endpoint.googleapis.com"); @@ -350,9 +387,15 @@ TEST(EndpointEnvTest, EmulatorEnvOnly) { ScopedEnvironment emulator("BIGTABLE_EMULATOR_HOST", "emulator-host:8000"); auto opts = DefaultOptions(); - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); + EXPECT_EQ("emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, InstanceEmulatorEnvOnly) { @@ -360,8 +403,11 @@ TEST(EndpointEnvTest, InstanceEmulatorEnvOnly) { "instance-emulator-host:9000"); auto opts = DefaultOptions(); - EXPECT_EQ("bigtable.googleapis.com", opts.get()); - EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); + EXPECT_EQ("bigtable.googleapis.com", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); EXPECT_EQ("instance-emulator-host:9000", opts.get()); } @@ -372,8 +418,11 @@ TEST(EndpointEnvTest, InstanceEmulatorEnvOverridesOtherEnv) { "instance-emulator-host:9000"); auto opts = DefaultOptions(); - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); + EXPECT_EQ("emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); EXPECT_EQ("instance-emulator-host:9000", opts.get()); } @@ -384,13 +433,22 @@ TEST(EndpointEnvTest, EmulatorEnvOverridesUserOptions) { auto opts = DefaultOptions( Options{} .set("ignored-any") - .set("ignored-data") - .set("ignored-admin") - .set("ignored-instance-admin")); - - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "ignored-data") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "ignored-admin") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "ignored-instance-admin")); + + EXPECT_EQ("emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, InstanceEmulatorEnvOverridesUserOption) { @@ -431,10 +489,12 @@ TEST(EndpointEnvTest, DirectPathEnabled) { auto opts = DefaultOptions(); EXPECT_EQ("google-c2p:///directpath-bigtable.googleapis.com", - opts.get()); + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); EXPECT_EQ("directpath-bigtable.googleapis.com", opts.get()); // Admin endpoints are not affected. - EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); EXPECT_EQ(1, opts.get()); From 83119b617f1a50704b22df90fd7b9fb852fc1cca Mon Sep 17 00:00:00 2001 From: mpeddada1 Date: Thu, 8 Jan 2026 18:47:29 +0000 Subject: [PATCH 6/9] fix additional namespace issues --- google/cloud/bigtable/internal/defaults_test.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/google/cloud/bigtable/internal/defaults_test.cc b/google/cloud/bigtable/internal/defaults_test.cc index def9c4257f89b..1777e93749b46 100644 --- a/google/cloud/bigtable/internal/defaults_test.cc +++ b/google/cloud/bigtable/internal/defaults_test.cc @@ -180,9 +180,12 @@ TEST(OptionsTest, EndpointOptionOverridden) { TEST(OptionsTest, DefaultDataOptionsEndpoint) { auto options = Options{} - .set("data.googleapis.com") - .set("tableadmin.googleapis.com") - .set("instanceadmin.googleapis.com"); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instanceadmin.googleapis.com"); options = DefaultDataOptions(std::move(options)); EXPECT_EQ("data.googleapis.com", options.get()); From 71a1c6c9045f738b79e72bcc87394ea20ddebe5b Mon Sep 17 00:00:00 2001 From: mpeddada1 Date: Thu, 8 Jan 2026 20:21:53 +0000 Subject: [PATCH 7/9] fix checkers --- .../cloud/bigtable/internal/defaults_test.cc | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/google/cloud/bigtable/internal/defaults_test.cc b/google/cloud/bigtable/internal/defaults_test.cc index 1777e93749b46..aa4e50948c53f 100644 --- a/google/cloud/bigtable/internal/defaults_test.cc +++ b/google/cloud/bigtable/internal/defaults_test.cc @@ -14,6 +14,7 @@ #include "google/cloud/bigtable/internal/defaults.h" #include "google/cloud/bigtable/internal/client_options_defaults.h" +#include "google/cloud/bigtable/internal/endpoint_options.h" #include "google/cloud/bigtable/options.h" #include "google/cloud/common_options.h" #include "google/cloud/grpc_options.h" @@ -58,8 +59,10 @@ TEST(OptionsTest, Defaults) { EXPECT_EQ( "bigtableadmin.googleapis.com", opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); - EXPECT_EQ("bigtableadmin.googleapis.com", - opts.get()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); EXPECT_EQ(typeid(grpc::GoogleDefaultCredentials()), typeid(opts.get())); EXPECT_FALSE(opts.has()); @@ -114,12 +117,14 @@ TEST(OptionsTest, DefaultOptionsDoesNotOverride) { .set({"test-prefix"})); EXPECT_EQ("testdata.googleapis.com", - opts.get<::google::cloud::bigtable_internal::>()); + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); EXPECT_EQ( "testadmin.googleapis.com", opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); - EXPECT_EQ("testinstanceadmin.googleapis.com", - opts.get()); + EXPECT_EQ( + "testinstanceadmin.googleapis.com", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); EXPECT_EQ(typeid(grpc::InsecureChannelCredentials()), typeid(opts.get())); EXPECT_FALSE(opts.get().single_line_mode()); @@ -411,8 +416,10 @@ TEST(EndpointEnvTest, InstanceEmulatorEnvOnly) { EXPECT_EQ( "bigtableadmin.googleapis.com", opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); - EXPECT_EQ("instance-emulator-host:9000", - opts.get()); + EXPECT_EQ( + "instance-emulator-host:9000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, InstanceEmulatorEnvOverridesOtherEnv) { @@ -426,8 +433,10 @@ TEST(EndpointEnvTest, InstanceEmulatorEnvOverridesOtherEnv) { EXPECT_EQ( "emulator-host:8000", opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); - EXPECT_EQ("instance-emulator-host:9000", - opts.get()); + EXPECT_EQ( + "instance-emulator-host:9000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, EmulatorEnvOverridesUserOptions) { @@ -461,10 +470,13 @@ TEST(EndpointEnvTest, InstanceEmulatorEnvOverridesUserOption) { auto opts = DefaultOptions( Options{} .set("ignored-any") - .set("ignored-instance-admin")); + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "ignored-instance-admin")); - EXPECT_EQ("instance-emulator-host:9000", - opts.get()); + EXPECT_EQ( + "instance-emulator-host:9000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, EmulatorEnvDefaultsToInsecureCredentials) { @@ -498,8 +510,10 @@ TEST(EndpointEnvTest, DirectPathEnabled) { EXPECT_EQ( "bigtableadmin.googleapis.com", opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); - EXPECT_EQ("bigtableadmin.googleapis.com", - opts.get()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); EXPECT_EQ(1, opts.get()); } From 133dbbbaf22035aa237261486d73a677302dd124 Mon Sep 17 00:00:00 2001 From: mpeddada1 Date: Thu, 8 Jan 2026 23:20:26 +0000 Subject: [PATCH 8/9] remove unnecessary deprecated comments --- google/cloud/bigtable/internal/endpoint_options.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/google/cloud/bigtable/internal/endpoint_options.h b/google/cloud/bigtable/internal/endpoint_options.h index 886cc05df8686..3eb52ddb2c19f 100644 --- a/google/cloud/bigtable/internal/endpoint_options.h +++ b/google/cloud/bigtable/internal/endpoint_options.h @@ -15,6 +15,7 @@ #ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H +#include "google/cloud/version.h" #include namespace google { @@ -25,7 +26,6 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN /** * The endpoint for data operations. * - * @deprecated Please use `google::cloud::EndpointOption` instead. */ struct DataEndpointOption { using Type = std::string; @@ -34,7 +34,6 @@ struct DataEndpointOption { /** * The endpoint for table admin operations. * - * @deprecated Please use `google::cloud::EndpointOption` instead. */ struct AdminEndpointOption { using Type = std::string; From f8399141e8eb74aa7e0b358bcadb2542cea35c14 Mon Sep 17 00:00:00 2001 From: mpeddada1 Date: Fri, 9 Jan 2026 15:08:54 +0000 Subject: [PATCH 9/9] remove lingering comment --- google/cloud/bigtable/internal/endpoint_options.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/google/cloud/bigtable/internal/endpoint_options.h b/google/cloud/bigtable/internal/endpoint_options.h index 3eb52ddb2c19f..58c1185263dff 100644 --- a/google/cloud/bigtable/internal/endpoint_options.h +++ b/google/cloud/bigtable/internal/endpoint_options.h @@ -45,9 +45,7 @@ struct AdminEndpointOption { * In most scenarios this should have the same value as `AdminEndpointOption`. * The most common exception is testing, where the emulator for instance admin * operations may be different than the emulator for admin and data operations. - * - * @deprecated Please use `google::cloud::EndpointOption` instead. - */ + * */ struct InstanceAdminEndpointOption { using Type = std::string; };