1717import sys
1818import uuid
1919
20+ import backoff
2021from googleapiclient .errors import HttpError
21- from retrying import retry
2222
2323# Add datasets for bootstrapping datasets for testing
2424sys .path .append (os .path .join (os .path .dirname (__file__ ), ".." , "datasets" )) # noqa
3636label_value = "TRUE"
3737
3838
39- def retry_if_server_exception (exception ):
40- return isinstance (exception , (HttpError ))
41-
42-
4339@pytest .fixture (scope = "module" )
4440def test_dataset ():
45- @retry (
46- wait_exponential_multiplier = 1000 ,
47- wait_exponential_max = 10000 ,
48- stop_max_attempt_number = 10 ,
49- retry_on_exception = retry_if_server_exception ,
50- )
41+ @backoff .on_exception (backoff .expo , HttpError , max_time = 60 )
5142 def create ():
5243 try :
5344 datasets .create_dataset (project_id , cloud_region , dataset_id )
@@ -65,12 +56,7 @@ def create():
6556 yield
6657
6758 # Clean up
68- @retry (
69- wait_exponential_multiplier = 1000 ,
70- wait_exponential_max = 10000 ,
71- stop_max_attempt_number = 10 ,
72- retry_on_exception = retry_if_server_exception ,
73- )
59+ @backoff .on_exception (backoff .expo , HttpError , max_time = 60 )
7460 def clean_up ():
7561 try :
7662 datasets .delete_dataset (project_id , cloud_region , dataset_id )
@@ -86,12 +72,7 @@ def clean_up():
8672
8773@pytest .fixture (scope = "module" )
8874def test_hl7v2_store ():
89- @retry (
90- wait_exponential_multiplier = 1000 ,
91- wait_exponential_max = 10000 ,
92- stop_max_attempt_number = 10 ,
93- retry_on_exception = retry_if_server_exception ,
94- )
75+ @backoff .on_exception (backoff .expo , HttpError , max_time = 60 )
9576 def create ():
9677 try :
9778 hl7v2_stores .create_hl7v2_store (
@@ -115,12 +96,7 @@ def create():
11596 yield
11697
11798 # Clean up
118- @retry (
119- wait_exponential_multiplier = 1000 ,
120- wait_exponential_max = 10000 ,
121- stop_max_attempt_number = 10 ,
122- retry_on_exception = retry_if_server_exception ,
123- )
99+ @backoff .on_exception (backoff .expo , HttpError , max_time = 60 )
124100 def clean_up ():
125101 try :
126102 hl7v2_stores .delete_hl7v2_store (
@@ -145,12 +121,20 @@ def test_CRUD_hl7v2_message(test_dataset, test_hl7v2_store, capsys):
145121 project_id , cloud_region , dataset_id , hl7v2_store_id , hl7v2_message_file
146122 )
147123
148- hl7v2_messages_list = hl7v2_messages .list_hl7v2_messages (
149- project_id , cloud_region , dataset_id , hl7v2_store_id
150- )
124+ @backoff .on_exception (backoff .expo , AssertionError , max_time = 60 )
125+ def run_eventually_consistent_test ():
126+ hl7v2_messages_list = hl7v2_messages .list_hl7v2_messages (
127+ project_id , cloud_region , dataset_id , hl7v2_store_id
128+ )
129+
130+ assert len (hl7v2_messages_list ) > 0
131+ hl7v2_message_name = hl7v2_messages_list [0 ].get ("name" )
132+ elms = hl7v2_message_name .split ("/" , 9 )
133+ assert len (elms ) >= 10
134+ hl7v2_message_id = elms [9 ]
135+ return hl7v2_message_id
151136
152- hl7v2_message_name = hl7v2_messages_list [0 ].get ("name" )
153- hl7v2_message_id = hl7v2_message_name .split ("/" , 9 )[9 ]
137+ hl7v2_message_id = run_eventually_consistent_test ()
154138
155139 hl7v2_messages .get_hl7v2_message (
156140 project_id , cloud_region , dataset_id , hl7v2_store_id , hl7v2_message_id
@@ -173,12 +157,20 @@ def test_ingest_hl7v2_message(test_dataset, test_hl7v2_store, capsys):
173157 project_id , cloud_region , dataset_id , hl7v2_store_id , hl7v2_message_file
174158 )
175159
176- hl7v2_messages_list = hl7v2_messages .list_hl7v2_messages (
177- project_id , cloud_region , dataset_id , hl7v2_store_id
178- )
160+ @backoff .on_exception (backoff .expo , AssertionError , max_time = 60 )
161+ def run_eventually_consistent_test ():
162+ hl7v2_messages_list = hl7v2_messages .list_hl7v2_messages (
163+ project_id , cloud_region , dataset_id , hl7v2_store_id
164+ )
179165
180- hl7v2_message_name = hl7v2_messages_list [0 ].get ("name" )
181- hl7v2_message_id = hl7v2_message_name .split ("/" , 9 )[9 ]
166+ assert len (hl7v2_messages_list ) > 0
167+ hl7v2_message_name = hl7v2_messages_list [0 ].get ("name" )
168+ elms = hl7v2_message_name .split ("/" , 9 )
169+ assert len (elms ) >= 10
170+ hl7v2_message_id = elms [9 ]
171+ return hl7v2_message_id
172+
173+ hl7v2_message_id = run_eventually_consistent_test ()
182174
183175 hl7v2_messages .get_hl7v2_message (
184176 project_id , cloud_region , dataset_id , hl7v2_store_id , hl7v2_message_id
@@ -201,13 +193,20 @@ def test_patch_hl7v2_message(test_dataset, test_hl7v2_store, capsys):
201193 project_id , cloud_region , dataset_id , hl7v2_store_id , hl7v2_message_file
202194 )
203195
204- hl7v2_messages_list = hl7v2_messages .list_hl7v2_messages (
205- project_id , cloud_region , dataset_id , hl7v2_store_id
206- )
196+ @backoff .on_exception (backoff .expo , AssertionError , max_time = 60 )
197+ def run_eventually_consistent_test ():
198+ hl7v2_messages_list = hl7v2_messages .list_hl7v2_messages (
199+ project_id , cloud_region , dataset_id , hl7v2_store_id
200+ )
201+
202+ assert len (hl7v2_messages_list ) > 0
203+ hl7v2_message_name = hl7v2_messages_list [0 ].get ("name" )
204+ elms = hl7v2_message_name .split ("/" , 9 )
205+ assert len (elms ) >= 10
206+ hl7v2_message_id = elms [9 ]
207+ return hl7v2_message_id
207208
208- assert len (hl7v2_messages_list ) > 0
209- hl7v2_message_name = hl7v2_messages_list [0 ].get ("name" )
210- hl7v2_message_id = hl7v2_message_name .split ("/" , 9 )[9 ]
209+ hl7v2_message_id = run_eventually_consistent_test ()
211210
212211 hl7v2_messages .patch_hl7v2_message (
213212 project_id ,
0 commit comments