@@ -563,7 +563,10 @@ def test_batch_write_grpc_error(self):
563563 )
564564
565565 def _test_batch_write_with_request_options (
566- self , request_options = None , exclude_txn_from_change_streams = False
566+ self ,
567+ request_options = None ,
568+ exclude_txn_from_change_streams = False ,
569+ enable_end_to_end_tracing = False ,
567570 ):
568571 import datetime
569572 from google .cloud .spanner_v1 import BatchWriteResponse
@@ -577,7 +580,7 @@ def _test_batch_write_with_request_options(
577580 response = BatchWriteResponse (
578581 commit_timestamp = now_pb , indexes = [0 ], status = status_pb
579582 )
580- database = _Database ()
583+ database = _Database (enable_end_to_end_tracing = enable_end_to_end_tracing )
581584 api = database .spanner_api = _FauxSpannerAPI (_batch_write_response = [response ])
582585 session = _Session (database )
583586 groups = self ._make_one (session )
@@ -600,13 +603,22 @@ def _test_batch_write_with_request_options(
600603 ) = api ._batch_request
601604 self .assertEqual (session , self .SESSION_NAME )
602605 self .assertEqual (mutation_groups , groups ._mutation_groups )
603- self .assertEqual (
604- metadata ,
605- [
606- ("google-cloud-resource-prefix" , database .name ),
607- ("x-goog-spanner-route-to-leader" , "true" ),
608- ],
609- )
606+ expected_metadata = [
607+ ("google-cloud-resource-prefix" , database .name ),
608+ ("x-goog-spanner-route-to-leader" , "true" ),
609+ ]
610+
611+ if enable_end_to_end_tracing :
612+ expected_metadata .append (("x-goog-spanner-end-to-end-tracing" , "true" ))
613+ self .assertTrue (
614+ any (key == "traceparent" for key , _ in metadata ),
615+ "traceparent is missing in metadata" ,
616+ )
617+
618+ # Remove traceparent from actual metadata for comparison
619+ filtered_metadata = [item for item in metadata if item [0 ] != "traceparent" ]
620+
621+ self .assertEqual (filtered_metadata , expected_metadata )
610622 if request_options is None :
611623 expected_request_options = RequestOptions ()
612624 elif type (request_options ) is dict :
@@ -626,6 +638,9 @@ def _test_batch_write_with_request_options(
626638
627639 def test_batch_write_no_request_options (self ):
628640 self ._test_batch_write_with_request_options ()
641+
642+ def test_batch_write_end_to_end_tracing_enabled (self ):
643+ self ._test_batch_write_with_request_options (enable_end_to_end_tracing = True )
629644
630645 def test_batch_write_w_transaction_tag_success (self ):
631646 self ._test_batch_write_with_request_options (
@@ -656,8 +671,11 @@ def session_id(self):
656671
657672
658673class _Database (object ):
659- name = "testing"
660- _route_to_leader_enabled = True
674+ def __init__ (self , enable_end_to_end_tracing = False ):
675+ self .name = "testing"
676+ self ._route_to_leader_enabled = True
677+ if enable_end_to_end_tracing :
678+ self .observability_options = dict (enable_end_to_end_tracing = True )
661679
662680
663681class _FauxSpannerAPI :
0 commit comments