2121from google .cloud .spanner_v1 import TypeCode
2222from google .api_core .retry import Retry
2323from google .api_core import gapic_v1
24+ from google .cloud .spanner_v1 ._helpers import (
25+ AtomicCounter ,
26+ _metadata_with_request_id ,
27+ )
2428
2529from tests ._helpers import (
2630 HAS_OPENTELEMETRY_INSTALLED ,
@@ -197,6 +201,11 @@ def test_begin_ok(self):
197201 [
198202 ("google-cloud-resource-prefix" , database .name ),
199203 ("x-goog-spanner-route-to-leader" , "true" ),
204+ # TODO(@odeke-em): enable with PR #1367.
205+ # (
206+ # "x-goog-spanner-request-id",
207+ # f"1.{REQ_RAND_PROCESS_ID}.{_Client.NTH_CLIENT.value}.1.1.1",
208+ # ),
200209 ],
201210 )
202211
@@ -301,6 +310,11 @@ def test_rollback_ok(self):
301310 [
302311 ("google-cloud-resource-prefix" , database .name ),
303312 ("x-goog-spanner-route-to-leader" , "true" ),
313+ # TODO(@odeke-em): enable with PR #1367.
314+ # (
315+ # "x-goog-spanner-request-id",
316+ # f"1.{REQ_RAND_PROCESS_ID}.{_Client.NTH_CLIENT.value}.1.1.1",
317+ # ),
304318 ],
305319 )
306320
@@ -492,6 +506,11 @@ def _commit_helper(
492506 [
493507 ("google-cloud-resource-prefix" , database .name ),
494508 ("x-goog-spanner-route-to-leader" , "true" ),
509+ # TODO(@odeke-em): enable with PR #1367.
510+ # (
511+ # "x-goog-spanner-request-id",
512+ # f"1.{REQ_RAND_PROCESS_ID}.{_Client.NTH_CLIENT.value}.1.1.1",
513+ # ),
495514 ],
496515 )
497516 self .assertEqual (actual_request_options , expected_request_options )
@@ -666,6 +685,11 @@ def _execute_update_helper(
666685 metadata = [
667686 ("google-cloud-resource-prefix" , database .name ),
668687 ("x-goog-spanner-route-to-leader" , "true" ),
688+ # TODO(@odeke-em): enable with PR #1367.
689+ # (
690+ # "x-goog-spanner-request-id",
691+ # f"1.{REQ_RAND_PROCESS_ID}.{_Client.NTH_CLIENT.value}.1.1.1",
692+ # ),
669693 ],
670694 )
671695
@@ -859,6 +883,11 @@ def _batch_update_helper(
859883 metadata = [
860884 ("google-cloud-resource-prefix" , database .name ),
861885 ("x-goog-spanner-route-to-leader" , "true" ),
886+ # TODO(@odeke-em): enable with PR #1367.
887+ # (
888+ # "x-goog-spanner-request-id",
889+ # f"1.{REQ_RAND_PROCESS_ID}.{_Client.NTH_CLIENT.value}.1.1.1",
890+ # ),
862891 ],
863892 retry = retry ,
864893 timeout = timeout ,
@@ -974,6 +1003,11 @@ def test_context_mgr_success(self):
9741003 [
9751004 ("google-cloud-resource-prefix" , database .name ),
9761005 ("x-goog-spanner-route-to-leader" , "true" ),
1006+ # TODO(@odeke-em): enable with PR #1367.
1007+ # (
1008+ # "x-goog-spanner-request-id",
1009+ # f"1.{REQ_RAND_PROCESS_ID}.{_Client.NTH_CLIENT.value}.1.2.1",
1010+ # ),
9771011 ],
9781012 )
9791013
@@ -1004,11 +1038,19 @@ def test_context_mgr_failure(self):
10041038
10051039
10061040class _Client (object ):
1041+ NTH_CLIENT = AtomicCounter ()
1042+
10071043 def __init__ (self ):
10081044 from google .cloud .spanner_v1 import ExecuteSqlRequest
10091045
10101046 self ._query_options = ExecuteSqlRequest .QueryOptions (optimizer_version = "1" )
10111047 self .directed_read_options = None
1048+ self ._nth_client_id = _Client .NTH_CLIENT .increment ()
1049+ self ._nth_request = AtomicCounter ()
1050+
1051+ @property
1052+ def _next_nth_request (self ):
1053+ return self ._nth_request .increment ()
10121054
10131055
10141056class _Instance (object ):
@@ -1024,6 +1066,27 @@ def __init__(self):
10241066 self ._directed_read_options = None
10251067 self .default_transaction_options = DefaultTransactionOptions ()
10261068
1069+ @property
1070+ def _next_nth_request (self ):
1071+ return self ._instance ._client ._next_nth_request
1072+
1073+ @property
1074+ def _nth_client_id (self ):
1075+ return self ._instance ._client ._nth_client_id
1076+
1077+ def metadata_with_request_id (self , nth_request , nth_attempt , prior_metadata = []):
1078+ return _metadata_with_request_id (
1079+ self ._nth_client_id ,
1080+ self ._channel_id ,
1081+ nth_request ,
1082+ nth_attempt ,
1083+ prior_metadata ,
1084+ )
1085+
1086+ @property
1087+ def _channel_id (self ):
1088+ return 1
1089+
10271090
10281091class _Session (object ):
10291092 _transaction = None
0 commit comments