diff --git a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/transports/base.py.j2 b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/transports/base.py.j2 index 9c93aaea9c1d..c92f85240e71 100644 --- a/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/transports/base.py.j2 +++ b/packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/transports/base.py.j2 @@ -162,6 +162,10 @@ class {{ service.name }}Transport(abc.ABC): host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2 b/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2 index 136319c7ced0..b2caae9d084e 100644 --- a/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2 +++ b/packages/gapic-generator/gapic/templates/tests/unit/gapic/%name_%version/%sub/test_%service.py.j2 @@ -2489,9 +2489,18 @@ def test_{{ service.name|snake_case }}_base_transport_wrap_method_modern_api_cor # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.{{ service.name }}Transport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.{{ service.name }}Transport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/base.py b/packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/base.py index 515c173224af..7ef7a0e4e885 100755 --- a/packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/base.py @@ -133,6 +133,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/asset/tests/unit/gapic/asset_v1/test_asset_service.py b/packages/gapic-generator/tests/integration/goldens/asset/tests/unit/gapic/asset_v1/test_asset_service.py index 17fc4c8a5c07..fd8a79e7aef9 100755 --- a/packages/gapic-generator/tests/integration/goldens/asset/tests/unit/gapic/asset_v1/test_asset_service.py +++ b/packages/gapic-generator/tests/integration/goldens/asset/tests/unit/gapic/asset_v1/test_asset_service.py @@ -18424,9 +18424,18 @@ def test_asset_service_base_transport_wrap_method_modern_api_core(monkeypatch): # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.AssetServiceTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.AssetServiceTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/services/iam_credentials/transports/base.py b/packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/services/iam_credentials/transports/base.py index 9ad2c974a10c..5c7092980c25 100755 --- a/packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/services/iam_credentials/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/credentials/google/iam/credentials_v1/services/iam_credentials/transports/base.py @@ -130,6 +130,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/credentials/tests/unit/gapic/credentials_v1/test_iam_credentials.py b/packages/gapic-generator/tests/integration/goldens/credentials/tests/unit/gapic/credentials_v1/test_iam_credentials.py index f39f23ababfa..14e98a3fccd0 100755 --- a/packages/gapic-generator/tests/integration/goldens/credentials/tests/unit/gapic/credentials_v1/test_iam_credentials.py +++ b/packages/gapic-generator/tests/integration/goldens/credentials/tests/unit/gapic/credentials_v1/test_iam_credentials.py @@ -4470,9 +4470,18 @@ def test_iam_credentials_base_transport_wrap_method_modern_api_core(monkeypatch) # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.IAMCredentialsTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.IAMCredentialsTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/services/eventarc/transports/base.py b/packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/services/eventarc/transports/base.py index 963fc7ddb134..76dd62c0ebdc 100755 --- a/packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/services/eventarc/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/eventarc/google/cloud/eventarc_v1/services/eventarc/transports/base.py @@ -145,6 +145,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/eventarc/tests/unit/gapic/eventarc_v1/test_eventarc.py b/packages/gapic-generator/tests/integration/goldens/eventarc/tests/unit/gapic/eventarc_v1/test_eventarc.py index b5e055c25ec9..515a7282b27c 100755 --- a/packages/gapic-generator/tests/integration/goldens/eventarc/tests/unit/gapic/eventarc_v1/test_eventarc.py +++ b/packages/gapic-generator/tests/integration/goldens/eventarc/tests/unit/gapic/eventarc_v1/test_eventarc.py @@ -33527,9 +33527,18 @@ def test_eventarc_base_transport_wrap_method_modern_api_core(monkeypatch): # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.EventarcTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.EventarcTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/config_service_v2/transports/base.py b/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/config_service_v2/transports/base.py index 4a5dbf0b6ca1..c4e987f0a05f 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/config_service_v2/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/config_service_v2/transports/base.py @@ -136,6 +136,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/logging_service_v2/transports/base.py b/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/logging_service_v2/transports/base.py index 4f1882897e01..281bdfb4dcf9 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/logging_service_v2/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/logging_service_v2/transports/base.py @@ -136,6 +136,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/metrics_service_v2/transports/base.py b/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/metrics_service_v2/transports/base.py index 98e6b8826af6..51d79ccd5212 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/metrics_service_v2/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/logging/google/cloud/logging_v2/services/metrics_service_v2/transports/base.py @@ -136,6 +136,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_config_service_v2.py b/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_config_service_v2.py index acea90dd0a47..1ddf2acb85aa 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_config_service_v2.py +++ b/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_config_service_v2.py @@ -14021,9 +14021,18 @@ def test_config_service_v2_base_transport_wrap_method_modern_api_core(monkeypatc # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.ConfigServiceV2Transport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.ConfigServiceV2Transport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_logging_service_v2.py b/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_logging_service_v2.py index 433ff946bd8b..40d012fc2707 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_logging_service_v2.py +++ b/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_logging_service_v2.py @@ -4461,9 +4461,18 @@ def test_logging_service_v2_base_transport_wrap_method_modern_api_core(monkeypat # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.LoggingServiceV2Transport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.LoggingServiceV2Transport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_metrics_service_v2.py b/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_metrics_service_v2.py index c3809e05816a..9a0e9dee2119 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_metrics_service_v2.py +++ b/packages/gapic-generator/tests/integration/goldens/logging/tests/unit/gapic/logging_v2/test_metrics_service_v2.py @@ -4261,9 +4261,18 @@ def test_metrics_service_v2_base_transport_wrap_method_modern_api_core(monkeypat # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.MetricsServiceV2Transport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.MetricsServiceV2Transport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/config_service_v2/transports/base.py b/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/config_service_v2/transports/base.py index 4a5dbf0b6ca1..c4e987f0a05f 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/config_service_v2/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/config_service_v2/transports/base.py @@ -136,6 +136,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/logging_service_v2/transports/base.py b/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/logging_service_v2/transports/base.py index 4f1882897e01..281bdfb4dcf9 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/logging_service_v2/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/logging_service_v2/transports/base.py @@ -136,6 +136,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/metrics_service_v2/transports/base.py b/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/metrics_service_v2/transports/base.py index 98e6b8826af6..51d79ccd5212 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/metrics_service_v2/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/logging_internal/google/cloud/logging_v2/services/metrics_service_v2/transports/base.py @@ -136,6 +136,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_config_service_v2.py b/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_config_service_v2.py index 5d7d971258ae..2f25f8e5fae4 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_config_service_v2.py +++ b/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_config_service_v2.py @@ -14021,9 +14021,18 @@ def test_config_service_v2_base_transport_wrap_method_modern_api_core(monkeypatc # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.ConfigServiceV2Transport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.ConfigServiceV2Transport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_logging_service_v2.py b/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_logging_service_v2.py index 433ff946bd8b..40d012fc2707 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_logging_service_v2.py +++ b/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_logging_service_v2.py @@ -4461,9 +4461,18 @@ def test_logging_service_v2_base_transport_wrap_method_modern_api_core(monkeypat # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.LoggingServiceV2Transport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.LoggingServiceV2Transport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_metrics_service_v2.py b/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_metrics_service_v2.py index 5fc12c22406b..ee51e53c7ac5 100755 --- a/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_metrics_service_v2.py +++ b/packages/gapic-generator/tests/integration/goldens/logging_internal/tests/unit/gapic/logging_v2/test_metrics_service_v2.py @@ -4261,9 +4261,18 @@ def test_metrics_service_v2_base_transport_wrap_method_modern_api_core(monkeypat # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.MetricsServiceV2Transport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.MetricsServiceV2Transport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/redis/google/cloud/redis_v1/services/cloud_redis/transports/base.py b/packages/gapic-generator/tests/integration/goldens/redis/google/cloud/redis_v1/services/cloud_redis/transports/base.py index 7164fc0bfe5f..7cfc53db8511 100755 --- a/packages/gapic-generator/tests/integration/goldens/redis/google/cloud/redis_v1/services/cloud_redis/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/redis/google/cloud/redis_v1/services/cloud_redis/transports/base.py @@ -133,6 +133,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/redis/tests/unit/gapic/redis_v1/test_cloud_redis.py b/packages/gapic-generator/tests/integration/goldens/redis/tests/unit/gapic/redis_v1/test_cloud_redis.py index e2215a295660..8bc3a47bb884 100755 --- a/packages/gapic-generator/tests/integration/goldens/redis/tests/unit/gapic/redis_v1/test_cloud_redis.py +++ b/packages/gapic-generator/tests/integration/goldens/redis/tests/unit/gapic/redis_v1/test_cloud_redis.py @@ -13315,9 +13315,18 @@ def test_cloud_redis_base_transport_wrap_method_modern_api_core(monkeypatch): # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.CloudRedisTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.CloudRedisTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/redis_selective/google/cloud/redis_v1/services/cloud_redis/transports/base.py b/packages/gapic-generator/tests/integration/goldens/redis_selective/google/cloud/redis_v1/services/cloud_redis/transports/base.py index da37256c19e4..f54e929dbabe 100755 --- a/packages/gapic-generator/tests/integration/goldens/redis_selective/google/cloud/redis_v1/services/cloud_redis/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/redis_selective/google/cloud/redis_v1/services/cloud_redis/transports/base.py @@ -133,6 +133,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/redis_selective/tests/unit/gapic/redis_v1/test_cloud_redis.py b/packages/gapic-generator/tests/integration/goldens/redis_selective/tests/unit/gapic/redis_v1/test_cloud_redis.py index 7b29386993ee..a37acdf612fd 100755 --- a/packages/gapic-generator/tests/integration/goldens/redis_selective/tests/unit/gapic/redis_v1/test_cloud_redis.py +++ b/packages/gapic-generator/tests/integration/goldens/redis_selective/tests/unit/gapic/redis_v1/test_cloud_redis.py @@ -8535,9 +8535,18 @@ def test_cloud_redis_base_transport_wrap_method_modern_api_core(monkeypatch): # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.CloudRedisTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.CloudRedisTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/transports/base.py b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/transports/base.py index f5e34a9f9aa7..92a40305f088 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/echo/transports/base.py @@ -134,6 +134,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/identity/transports/base.py b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/identity/transports/base.py index 8f44d529f6dd..4b878b2d2ec8 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/identity/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/identity/transports/base.py @@ -134,6 +134,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/messaging/transports/base.py b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/messaging/transports/base.py index c783a24ea331..80c282a05668 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/messaging/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/messaging/transports/base.py @@ -135,6 +135,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/resumable_upload_service/transports/base.py b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/resumable_upload_service/transports/base.py index b9ca386076b2..a08b085bc2b0 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/resumable_upload_service/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/resumable_upload_service/transports/base.py @@ -135,6 +135,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/sequence_service/transports/base.py b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/sequence_service/transports/base.py index f6b79c09fa5f..ebd1c47d1d1f 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/sequence_service/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/sequence_service/transports/base.py @@ -135,6 +135,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/testing/transports/base.py b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/testing/transports/base.py index f0fc08e3ef55..dcc895574f0e 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/testing/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/google/showcase_v1beta1/services/testing/transports/base.py @@ -134,6 +134,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_echo.py b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_echo.py index 526eb660d4ff..e30741c8bca0 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_echo.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_echo.py @@ -9794,9 +9794,18 @@ def test_echo_base_transport_wrap_method_modern_api_core(monkeypatch): # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.EchoTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.EchoTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_identity.py b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_identity.py index 28a7dd420d23..e4898cf8a353 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_identity.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_identity.py @@ -6901,9 +6901,18 @@ def test_identity_base_transport_wrap_method_modern_api_core(monkeypatch): # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.IdentityTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.IdentityTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_messaging.py b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_messaging.py index 84906c414aa2..cfbac6a4f059 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_messaging.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_messaging.py @@ -11801,9 +11801,18 @@ def test_messaging_base_transport_wrap_method_modern_api_core(monkeypatch): # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.MessagingTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.MessagingTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_resumable_upload_service.py b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_resumable_upload_service.py index 3d2f99ea1ef7..f710af316ca5 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_resumable_upload_service.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_resumable_upload_service.py @@ -4494,9 +4494,18 @@ def test_resumable_upload_service_base_transport_wrap_method_modern_api_core(mon # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.ResumableUploadServiceTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.ResumableUploadServiceTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_sequence_service.py b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_sequence_service.py index 444a6f91969a..8b7e3acf7c69 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_sequence_service.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_sequence_service.py @@ -7583,9 +7583,18 @@ def test_sequence_service_base_transport_wrap_method_modern_api_core(monkeypatch # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.SequenceServiceTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.SequenceServiceTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_testing.py b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_testing.py index dbda59a14f09..3e51476de5ac 100755 --- a/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_testing.py +++ b/packages/gapic-generator/tests/integration/goldens/showcase/tests/unit/gapic/showcase_v1beta1/test_testing.py @@ -7772,9 +7772,18 @@ def test_testing_base_transport_wrap_method_modern_api_core(monkeypatch): # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.TestingTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.TestingTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/google/cloud/storagebatchoperations_v1/services/storage_batch_operations/transports/base.py b/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/google/cloud/storagebatchoperations_v1/services/storage_batch_operations/transports/base.py index 5cf929454825..f84099367870 100755 --- a/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/google/cloud/storagebatchoperations_v1/services/storage_batch_operations/transports/base.py +++ b/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/google/cloud/storagebatchoperations_v1/services/storage_batch_operations/transports/base.py @@ -135,6 +135,10 @@ def __init__( host += ':443' self._host = host + if isinstance(client_options, client_options_lib.ClientOptions) and not client_options.api_endpoint: + client_options.api_endpoint = self._host + elif isinstance(client_options, dict) and not client_options.get("api_endpoint"): + client_options["api_endpoint"] = self._host self._client_options = client_options self._wrapped_methods: Dict[Callable, Callable] = {} diff --git a/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/tests/unit/gapic/storagebatchoperations_v1/test_storage_batch_operations.py b/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/tests/unit/gapic/storagebatchoperations_v1/test_storage_batch_operations.py index c1f5ed51ac5c..0b74ccb93597 100755 --- a/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/tests/unit/gapic/storagebatchoperations_v1/test_storage_batch_operations.py +++ b/packages/gapic-generator/tests/integration/goldens/storagebatchoperations/tests/unit/gapic/storagebatchoperations_v1/test_storage_batch_operations.py @@ -8471,9 +8471,18 @@ def test_storage_batch_operations_base_transport_wrap_method_modern_api_core(mon # 2. Base transport: kind raises NotImplementedError and is cleanly omitted with mock.patch.object(transports.base.gapic_v1.method, "wrap_method") as mock_wrap: + options = client_options.ClientOptions() base_transport = transports.StorageBatchOperationsTransport( - credentials=ga_credentials.AnonymousCredentials() + credentials=ga_credentials.AnonymousCredentials(), + client_options=options, + ) + assert base_transport._client_options.api_endpoint == base_transport._host + dict_options = {} + dict_transport = transports.StorageBatchOperationsTransport( + credentials=ga_credentials.AnonymousCredentials(), + client_options=dict_options, ) + assert dict_transport._client_options["api_endpoint"] == dict_transport._host func = mock.MagicMock() base_transport._wrap_method(func) assert "kind" not in mock_wrap.call_args.kwargs diff --git a/packages/gapic-generator/tests/system/telemetry_requirements_matrix.csv b/packages/gapic-generator/tests/system/telemetry_requirements_matrix.csv index 10e7e7d359cc..4fb3d21c15a8 100644 --- a/packages/gapic-generator/tests/system/telemetry_requirements_matrix.csv +++ b/packages/gapic-generator/tests/system/telemetry_requirements_matrix.csv @@ -6,28 +6,28 @@ F1.4,Client Timeout (HTTP),T4,0,HTTP/REST,Client Timeout,1,CLIENT,POST /v1beta1/ F1.5a,Retry Recovery - Attempt 1 (HTTP),T4,0,HTTP/REST,Retry Recovery,2,CLIENT,POST /v1beta1/{name=sequences/*},ERROR,http,NOT SET,NOT SET,POST,503,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},localhost,7469,503,Temporary glitch,NOT SET,T3.span_id,url.full F1.5b,Retry Recovery - Attempt 2 (HTTP),T4,1,HTTP/REST,Retry Recovery,2,CLIENT,POST /v1beta1/{name=sequences/*},UNSET,http,NOT SET,NOT SET,POST,200,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,url.full F1.6,Tracing Off (gRPC),T4,N/A,gRPC,Tracing Off,0,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,No spans emitted -F1.7,Unary Success (gRPC),T4,0,gRPC,Happy Path,1,CLIENT,google.showcase.v1beta1.Echo/Echo,UNSET,grpc,google.showcase.v1beta1.Echo/Echo,OK,NOT SET,NOT SET,0,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" -F1.8,Server Error (gRPC),T4,0,gRPC,Server Failure,1,CLIENT,google.showcase.v1beta1.Echo/Echo,ERROR,grpc,google.showcase.v1beta1.Echo/Echo,NOT SET,NOT SET,NOT SET,3,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" -F1.9,Client Timeout (gRPC),T4,0,gRPC,Client Timeout,1,CLIENT,google.showcase.v1beta1.Echo/Block,ERROR,grpc,google.showcase.v1beta1.Echo/Block,NOT SET,NOT SET,NOT SET,4,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" -F1.10a,Retry Recovery - Attempt 1 (gRPC),T4,0,gRPC,Retry Recovery,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,NOT SET,NOT SET,NOT SET,14,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" -F1.10b,Retry Recovery - Attempt 2 (gRPC),T4,1,gRPC,Retry Recovery,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,UNSET,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,OK,NOT SET,NOT SET,0,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" +F1.7,Unary Success (gRPC),T4,0,gRPC,Happy Path,1,CLIENT,google.showcase.v1beta1.Echo/Echo,UNSET,grpc,google.showcase.v1beta1.Echo/Echo,OK,NOT SET,NOT SET,0,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" +F1.8,Server Error (gRPC),T4,0,gRPC,Server Failure,1,CLIENT,google.showcase.v1beta1.Echo/Echo,ERROR,grpc,google.showcase.v1beta1.Echo/Echo,NOT SET,NOT SET,NOT SET,3,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" +F1.9,Client Timeout (gRPC),T4,0,gRPC,Client Timeout,1,CLIENT,google.showcase.v1beta1.Echo/Block,ERROR,grpc,google.showcase.v1beta1.Echo/Block,NOT SET,NOT SET,NOT SET,4,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" +F1.10a,Retry Recovery - Attempt 1 (gRPC),T4,0,gRPC,Retry Recovery,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,NOT SET,NOT SET,NOT SET,14,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" +F1.10b,Retry Recovery - Attempt 2 (gRPC),T4,1,gRPC,Retry Recovery,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,UNSET,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,OK,NOT SET,NOT SET,0,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,"rpc.system, rpc.service" F2.1,Tracing Off (HTTP),T3,N/A,HTTP/REST,Tracing Off,0,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,No spans emitted -F2.2,Unary Success (HTTP),T3,0,HTTP/REST,Happy Path,1,INTERNAL,google.showcase.v1beta1.Echo/Echo,UNSET,http,google.showcase.v1beta1.Echo/Echo,OK,NOT SET,200,NOT SET,googleapis.com,/v1beta1/echo:echo,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,None (Root),Strict ceiling (no unknown attrs) -F2.3,Server Error (HTTP),T3,0,HTTP/REST,Server Failure,1,INTERNAL,google.showcase.v1beta1.Echo/Echo,ERROR,http,google.showcase.v1beta1.Echo/Echo,BAD_REQUEST,NOT SET,400,NOT SET,googleapis.com,/v1beta1/echo:echo,NOT SET,NOT SET,BAD_REQUEST,Simulated unretryable invalid argument error.,NOT SET,None (Root),"gcp.errors.domain, gcp.errors.metadata.*" -F2.4,Client Timeout (HTTP),T3,0,HTTP/REST,Client Timeout,1,INTERNAL,google.showcase.v1beta1.Echo/Block,ERROR,http,google.showcase.v1beta1.Echo/Block,ReadTimeout,NOT SET,NOT SET,NOT SET,googleapis.com,/v1beta1/echo:block,NOT SET,NOT SET,ReadTimeout,Read timed out,NOT SET,None (Root),gcp.errors.domain +F2.2,Unary Success (HTTP),T3,0,HTTP/REST,Happy Path,1,INTERNAL,google.showcase.v1beta1.Echo/Echo,UNSET,http,google.showcase.v1beta1.Echo/Echo,OK,NOT SET,200,NOT SET,googleapis.com,/v1beta1/echo:echo,localhost,7469,NOT SET,NOT SET,NOT SET,None (Root),Strict ceiling (no unknown attrs) +F2.3,Server Error (HTTP),T3,0,HTTP/REST,Server Failure,1,INTERNAL,google.showcase.v1beta1.Echo/Echo,ERROR,http,google.showcase.v1beta1.Echo/Echo,BAD_REQUEST,NOT SET,400,NOT SET,googleapis.com,/v1beta1/echo:echo,localhost,7469,BAD_REQUEST,Simulated unretryable invalid argument error.,NOT SET,None (Root),"gcp.errors.domain, gcp.errors.metadata.*" +F2.4,Client Timeout (HTTP),T3,0,HTTP/REST,Client Timeout,1,INTERNAL,google.showcase.v1beta1.Echo/Block,ERROR,http,google.showcase.v1beta1.Echo/Block,ReadTimeout,NOT SET,NOT SET,NOT SET,googleapis.com,/v1beta1/echo:block,localhost,7469,ReadTimeout,Read timed out,NOT SET,None (Root),gcp.errors.domain F2.5,Tracing Off (gRPC),T3,N/A,gRPC,Tracing Off,0,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,No spans emitted -F2.6,Unary Success (gRPC),T3,0,gRPC,Happy Path,1,INTERNAL,google.showcase.v1beta1.Echo/Echo,UNSET,grpc,google.showcase.v1beta1.Echo/Echo,OK,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,None (Root),Strict ceiling (no unknown attrs) -F2.7,Server Error (gRPC),T3,0,gRPC,Server Failure,1,INTERNAL,google.showcase.v1beta1.Echo/Echo,ERROR,grpc,google.showcase.v1beta1.Echo/Echo,INVALID_ARGUMENT,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,NOT SET,NOT SET,INVALID_ARGUMENT,Simulated unretryable invalid argument error.,NOT SET,None (Root),"gcp.errors.domain, gcp.errors.metadata.*" -F2.8,Client Timeout (gRPC),T3,0,gRPC,Client Timeout,1,INTERNAL,google.showcase.v1beta1.Echo/Block,ERROR,grpc,google.showcase.v1beta1.Echo/Block,DEADLINE_EXCEEDED,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,NOT SET,NOT SET,DEADLINE_EXCEEDED,Deadline Exceeded,NOT SET,None (Root),gcp.errors.domain -F3.1a,Retry Succeeds - Root (HTTP),T3,0,HTTP/REST,Retry Recovery,1,INTERNAL,google.showcase.v1beta1.SequenceService/AttemptSequence,UNSET,http,google.showcase.v1beta1.SequenceService/AttemptSequence,OK,NOT SET,200,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,None (Root),Parent aggregates OK; T4 children nested under T3 +F2.6,Unary Success (gRPC),T3,0,gRPC,Happy Path,1,INTERNAL,google.showcase.v1beta1.Echo/Echo,UNSET,grpc,google.showcase.v1beta1.Echo/Echo,OK,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,None (Root),Strict ceiling (no unknown attrs) +F2.7,Server Error (gRPC),T3,0,gRPC,Server Failure,1,INTERNAL,google.showcase.v1beta1.Echo/Echo,ERROR,grpc,google.showcase.v1beta1.Echo/Echo,INVALID_ARGUMENT,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,localhost,7469,INVALID_ARGUMENT,Simulated unretryable invalid argument error.,NOT SET,None (Root),"gcp.errors.domain, gcp.errors.metadata.*" +F2.8,Client Timeout (gRPC),T3,0,gRPC,Client Timeout,1,INTERNAL,google.showcase.v1beta1.Echo/Block,ERROR,grpc,google.showcase.v1beta1.Echo/Block,DEADLINE_EXCEEDED,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,localhost,7469,DEADLINE_EXCEEDED,Deadline Exceeded,NOT SET,None (Root),gcp.errors.domain +F3.1a,Retry Succeeds - Root (HTTP),T3,0,HTTP/REST,Retry Recovery,1,INTERNAL,google.showcase.v1beta1.SequenceService/AttemptSequence,UNSET,http,google.showcase.v1beta1.SequenceService/AttemptSequence,OK,NOT SET,200,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},localhost,7469,NOT SET,NOT SET,NOT SET,None (Root),Parent aggregates OK; T4 children nested under T3 F3.1b,Retry Succeeds - Attempt 1 (HTTP),T4,0,HTTP/REST,Retry Recovery,2,CLIENT,POST /v1beta1/{name=sequences/*},ERROR,http,NOT SET,NOT SET,POST,503,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},localhost,7469,503,Temporary glitch,NOT SET,T3.span_id,Parent aggregates OK; T4 children nested under T3 F3.1c,Retry Succeeds - Attempt 2 (HTTP),T4,1,HTTP/REST,Retry Recovery,2,CLIENT,POST /v1beta1/{name=sequences/*},UNSET,http,NOT SET,NOT SET,POST,200,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,Parent aggregates OK; T4 children nested under T3 -F3.2a,Retries Exhausted - Root (HTTP),T3,0,HTTP/REST,Retries Exhausted,1,INTERNAL,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,http,google.showcase.v1beta1.SequenceService/AttemptSequence,UNAVAILABLE,NOT SET,503,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},NOT SET,NOT SET,UNAVAILABLE,Persistent outage,NOT SET,None (Root),Parent aggregates UNAVAILABLE; all T4 children nested under T3 +F3.2a,Retries Exhausted - Root (HTTP),T3,0,HTTP/REST,Retries Exhausted,1,INTERNAL,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,http,google.showcase.v1beta1.SequenceService/AttemptSequence,UNAVAILABLE,NOT SET,503,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},localhost,7469,UNAVAILABLE,Persistent outage,NOT SET,None (Root),Parent aggregates UNAVAILABLE; all T4 children nested under T3 F3.2b,Retries Exhausted - Attempt 1 (HTTP),T4,0,HTTP/REST,Retries Exhausted,2,CLIENT,POST /v1beta1/{name=sequences/*},ERROR,http,NOT SET,NOT SET,POST,503,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},localhost,7469,503,Persistent outage,NOT SET,T3.span_id,Parent aggregates UNAVAILABLE; all T4 children nested under T3 F3.2c,Retries Exhausted - Attempt 2 (HTTP),T4,1,HTTP/REST,Retries Exhausted,2,CLIENT,POST /v1beta1/{name=sequences/*},ERROR,http,NOT SET,NOT SET,POST,503,NOT SET,googleapis.com,/v1beta1/{name=sequences/*},localhost,7469,503,Persistent outage,NOT SET,T3.span_id,Parent aggregates UNAVAILABLE; all T4 children nested under T3 -F3.3a,Retry Succeeds - Root (gRPC),T3,0,gRPC,Retry Recovery,1,INTERNAL,google.showcase.v1beta1.SequenceService/AttemptSequence,UNSET,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,OK,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,None (Root),Parent aggregates OK; T4 children nested under T3 -F3.3b,Retry Succeeds - Attempt 1 (gRPC),T4,0,gRPC,Retry Recovery,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,NOT SET,NOT SET,NOT SET,14,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,T3.span_id,Parent aggregates OK; T4 children nested under T3 -F3.3c,Retry Succeeds - Attempt 2 (gRPC),T4,1,gRPC,Retry Recovery,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,UNSET,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,OK,NOT SET,NOT SET,0,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,T3.span_id,Parent aggregates OK; T4 children nested under T3 -F3.4a,Retries Exhausted - Root (gRPC),T3,0,gRPC,Retries Exhausted,1,INTERNAL,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,UNAVAILABLE,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,NOT SET,NOT SET,UNAVAILABLE,Persistent outage,NOT SET,None (Root),Parent aggregates UNAVAILABLE; all T4 children nested under T3 -F3.4b,Retries Exhausted - Attempt 1 (gRPC),T4,0,gRPC,Retries Exhausted,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,NOT SET,NOT SET,NOT SET,14,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,T3.span_id,Parent aggregates UNAVAILABLE; all T4 children nested under T3 -F3.4c,Retries Exhausted - Attempt 2 (gRPC),T4,1,gRPC,Retries Exhausted,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,NOT SET,NOT SET,NOT SET,14,googleapis.com,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,NOT SET,T3.span_id,Parent aggregates UNAVAILABLE; all T4 children nested under T3 +F3.3a,Retry Succeeds - Root (gRPC),T3,0,gRPC,Retry Recovery,1,INTERNAL,google.showcase.v1beta1.SequenceService/AttemptSequence,UNSET,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,OK,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,None (Root),Parent aggregates OK; T4 children nested under T3 +F3.3b,Retry Succeeds - Attempt 1 (gRPC),T4,0,gRPC,Retry Recovery,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,NOT SET,NOT SET,NOT SET,14,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,Parent aggregates OK; T4 children nested under T3 +F3.3c,Retry Succeeds - Attempt 2 (gRPC),T4,1,gRPC,Retry Recovery,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,UNSET,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,OK,NOT SET,NOT SET,0,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,Parent aggregates OK; T4 children nested under T3 +F3.4a,Retries Exhausted - Root (gRPC),T3,0,gRPC,Retries Exhausted,1,INTERNAL,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,UNAVAILABLE,NOT SET,NOT SET,NOT SET,googleapis.com,NOT SET,localhost,7469,UNAVAILABLE,Persistent outage,NOT SET,None (Root),Parent aggregates UNAVAILABLE; all T4 children nested under T3 +F3.4b,Retries Exhausted - Attempt 1 (gRPC),T4,0,gRPC,Retries Exhausted,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,NOT SET,NOT SET,NOT SET,14,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,Parent aggregates UNAVAILABLE; all T4 children nested under T3 +F3.4c,Retries Exhausted - Attempt 2 (gRPC),T4,1,gRPC,Retries Exhausted,2,CLIENT,google.showcase.v1beta1.SequenceService/AttemptSequence,ERROR,grpc,google.showcase.v1beta1.SequenceService/AttemptSequence,NOT SET,NOT SET,NOT SET,14,googleapis.com,NOT SET,localhost,7469,NOT SET,NOT SET,NOT SET,T3.span_id,Parent aggregates UNAVAILABLE; all T4 children nested under T3