1414import random
1515
1616from google .cloud .spanner_v1 import (
17- BatchCreateSessionsRequest ,
1817 BeginTransactionRequest ,
1918 CommitRequest ,
2019 ExecuteSqlRequest ,
3231)
3332from google .api_core import exceptions
3433from test_utils import retry
34+ from google .cloud .spanner_v1 .database_sessions_manager import TransactionType
3535
3636retry_maybe_aborted_txn = retry .RetryErrors (
3737 exceptions .Aborted , max_tries = 5 , delay = 0 , backoff = 1
@@ -46,29 +46,28 @@ def test_run_in_transaction_commit_aborted(self):
4646 # time that the transaction tries to commit. It will then be retried
4747 # and succeed.
4848 self .database .run_in_transaction (_insert_mutations )
49-
50- # Verify that the transaction was retried.
5149 requests = self .spanner_service .requests
52- self .assertEqual (5 , len (requests ), msg = requests )
53- self .assertTrue (isinstance (requests [0 ], BatchCreateSessionsRequest ))
54- self .assertTrue (isinstance (requests [1 ], BeginTransactionRequest ))
55- self .assertTrue (isinstance (requests [2 ], CommitRequest ))
56- # The transaction is aborted and retried.
57- self .assertTrue (isinstance (requests [3 ], BeginTransactionRequest ))
58- self .assertTrue (isinstance (requests [4 ], CommitRequest ))
50+ self .assert_requests_sequence (
51+ requests ,
52+ [
53+ BeginTransactionRequest ,
54+ CommitRequest ,
55+ BeginTransactionRequest ,
56+ CommitRequest ,
57+ ],
58+ TransactionType .READ_WRITE ,
59+ )
5960
6061 def test_run_in_transaction_update_aborted (self ):
6162 add_update_count ("update my_table set my_col=1 where id=2" , 1 )
6263 add_error (SpannerServicer .ExecuteSql .__name__ , aborted_status ())
6364 self .database .run_in_transaction (_execute_update )
64-
65- # Verify that the transaction was retried.
6665 requests = self .spanner_service .requests
67- self .assertEqual ( 4 , len ( requests ), msg = requests )
68- self . assertTrue ( isinstance ( requests [ 0 ], BatchCreateSessionsRequest ))
69- self . assertTrue ( isinstance ( requests [ 1 ] , ExecuteSqlRequest ))
70- self . assertTrue ( isinstance ( requests [ 2 ], ExecuteSqlRequest ))
71- self . assertTrue ( isinstance ( requests [ 3 ], CommitRequest ) )
66+ self .assert_requests_sequence (
67+ requests ,
68+ [ ExecuteSqlRequest , ExecuteSqlRequest , CommitRequest ],
69+ TransactionType . READ_WRITE ,
70+ )
7271
7372 def test_run_in_transaction_query_aborted (self ):
7473 add_single_result (
@@ -79,28 +78,24 @@ def test_run_in_transaction_query_aborted(self):
7978 )
8079 add_error (SpannerServicer .ExecuteStreamingSql .__name__ , aborted_status ())
8180 self .database .run_in_transaction (_execute_query )
82-
83- # Verify that the transaction was retried.
8481 requests = self .spanner_service .requests
85- self .assertEqual ( 4 , len ( requests ), msg = requests )
86- self . assertTrue ( isinstance ( requests [ 0 ], BatchCreateSessionsRequest ))
87- self . assertTrue ( isinstance ( requests [ 1 ] , ExecuteSqlRequest ))
88- self . assertTrue ( isinstance ( requests [ 2 ], ExecuteSqlRequest ))
89- self . assertTrue ( isinstance ( requests [ 3 ], CommitRequest ) )
82+ self .assert_requests_sequence (
83+ requests ,
84+ [ ExecuteSqlRequest , ExecuteSqlRequest , CommitRequest ],
85+ TransactionType . READ_WRITE ,
86+ )
9087
9188 def test_run_in_transaction_batch_dml_aborted (self ):
9289 add_update_count ("update my_table set my_col=1 where id=1" , 1 )
9390 add_update_count ("update my_table set my_col=1 where id=2" , 1 )
9491 add_error (SpannerServicer .ExecuteBatchDml .__name__ , aborted_status ())
9592 self .database .run_in_transaction (_execute_batch_dml )
96-
97- # Verify that the transaction was retried.
9893 requests = self .spanner_service .requests
99- self .assertEqual ( 4 , len ( requests ), msg = requests )
100- self . assertTrue ( isinstance ( requests [ 0 ], BatchCreateSessionsRequest ))
101- self . assertTrue ( isinstance ( requests [ 1 ] , ExecuteBatchDmlRequest ))
102- self . assertTrue ( isinstance ( requests [ 2 ], ExecuteBatchDmlRequest ))
103- self . assertTrue ( isinstance ( requests [ 3 ], CommitRequest ) )
94+ self .assert_requests_sequence (
95+ requests ,
96+ [ ExecuteBatchDmlRequest , ExecuteBatchDmlRequest , CommitRequest ],
97+ TransactionType . READ_WRITE ,
98+ )
10499
105100 def test_batch_commit_aborted (self ):
106101 # Add an Aborted error for the Commit method on the mock server.
@@ -117,14 +112,12 @@ def test_batch_commit_aborted(self):
117112 (5 , "David" , "Lomond" ),
118113 ],
119114 )
120-
121- # Verify that the transaction was retried.
122115 requests = self .spanner_service .requests
123- self .assertEqual ( 3 , len ( requests ), msg = requests )
124- self . assertTrue ( isinstance ( requests [ 0 ], BatchCreateSessionsRequest ))
125- self . assertTrue ( isinstance ( requests [ 1 ] , CommitRequest ))
126- # The transaction is aborted and retried.
127- self . assertTrue ( isinstance ( requests [ 2 ], CommitRequest ) )
116+ self .assert_requests_sequence (
117+ requests ,
118+ [ CommitRequest , CommitRequest ],
119+ TransactionType . READ_WRITE ,
120+ )
128121
129122 @retry_maybe_aborted_txn
130123 def test_retry_helper (self ):
0 commit comments