21
21
from google .cloud .spanner_v1 import TypeCode
22
22
from google .api_core .retry import Retry
23
23
from google .api_core import gapic_v1
24
+ from google .cloud .spanner_v1 ._helpers import (
25
+ AtomicCounter ,
26
+ _metadata_with_request_id ,
27
+ )
24
28
25
29
from tests ._helpers import (
26
30
HAS_OPENTELEMETRY_INSTALLED ,
@@ -197,6 +201,11 @@ def test_begin_ok(self):
197
201
[
198
202
("google-cloud-resource-prefix" , database .name ),
199
203
("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
+ # ),
200
209
],
201
210
)
202
211
@@ -301,6 +310,11 @@ def test_rollback_ok(self):
301
310
[
302
311
("google-cloud-resource-prefix" , database .name ),
303
312
("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
+ # ),
304
318
],
305
319
)
306
320
@@ -492,6 +506,11 @@ def _commit_helper(
492
506
[
493
507
("google-cloud-resource-prefix" , database .name ),
494
508
("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
+ # ),
495
514
],
496
515
)
497
516
self .assertEqual (actual_request_options , expected_request_options )
@@ -666,6 +685,11 @@ def _execute_update_helper(
666
685
metadata = [
667
686
("google-cloud-resource-prefix" , database .name ),
668
687
("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
+ # ),
669
693
],
670
694
)
671
695
@@ -859,6 +883,11 @@ def _batch_update_helper(
859
883
metadata = [
860
884
("google-cloud-resource-prefix" , database .name ),
861
885
("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
+ # ),
862
891
],
863
892
retry = retry ,
864
893
timeout = timeout ,
@@ -974,6 +1003,11 @@ def test_context_mgr_success(self):
974
1003
[
975
1004
("google-cloud-resource-prefix" , database .name ),
976
1005
("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
+ # ),
977
1011
],
978
1012
)
979
1013
@@ -1004,11 +1038,19 @@ def test_context_mgr_failure(self):
1004
1038
1005
1039
1006
1040
class _Client (object ):
1041
+ NTH_CLIENT = AtomicCounter ()
1042
+
1007
1043
def __init__ (self ):
1008
1044
from google .cloud .spanner_v1 import ExecuteSqlRequest
1009
1045
1010
1046
self ._query_options = ExecuteSqlRequest .QueryOptions (optimizer_version = "1" )
1011
1047
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 ()
1012
1054
1013
1055
1014
1056
class _Instance (object ):
@@ -1024,6 +1066,27 @@ def __init__(self):
1024
1066
self ._directed_read_options = None
1025
1067
self .default_transaction_options = DefaultTransactionOptions ()
1026
1068
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
+
1027
1090
1028
1091
class _Session (object ):
1029
1092
_transaction = None
0 commit comments