Skip to content

Commit 9c492b5

Browse files
author
Takashi Matsuo
authored
[healthcare] fix: retry eventually consistent tests (GoogleCloudPlatform#3434)
fixes GoogleCloudPlatform#3432
1 parent e2cf90d commit 9c492b5

File tree

3 files changed

+51
-77
lines changed

3 files changed

+51
-77
lines changed

healthcare/api-client/v1/hl7v2/hl7v2_messages_test.py

Lines changed: 44 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import sys
1818
import uuid
1919

20+
import backoff
2021
from googleapiclient.errors import HttpError
21-
from retrying import retry
2222

2323
# Add datasets for bootstrapping datasets for testing
2424
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "datasets")) # noqa
@@ -36,18 +36,9 @@
3636
label_value = "TRUE"
3737

3838

39-
def retry_if_server_exception(exception):
40-
return isinstance(exception, (HttpError))
41-
42-
4339
@pytest.fixture(scope="module")
4440
def 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")
8874
def 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,

healthcare/api-client/v1/hl7v2/hl7v2_stores_test.py

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import sys
1818
import uuid
1919

20+
import backoff
2021
from googleapiclient.errors import HttpError
21-
from retrying import retry
2222

2323
# Add datasets for bootstrapping datasets for testing
2424
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "datasets")) # noqa
@@ -38,12 +38,7 @@ def retry_if_server_exception(exception):
3838

3939
@pytest.fixture(scope="module")
4040
def test_dataset():
41-
@retry(
42-
wait_exponential_multiplier=1000,
43-
wait_exponential_max=10000,
44-
stop_max_attempt_number=10,
45-
retry_on_exception=retry_if_server_exception,
46-
)
41+
@backoff.on_exception(backoff.expo, HttpError, max_time=60)
4742
def create():
4843
try:
4944
datasets.create_dataset(project_id, cloud_region, dataset_id)
@@ -61,12 +56,7 @@ def create():
6156
yield
6257

6358
# Clean up
64-
@retry(
65-
wait_exponential_multiplier=1000,
66-
wait_exponential_max=10000,
67-
stop_max_attempt_number=10,
68-
retry_on_exception=retry_if_server_exception,
69-
)
59+
@backoff.on_exception(backoff.expo, HttpError, max_time=60)
7060
def clean_up():
7161
try:
7262
datasets.delete_dataset(project_id, cloud_region, dataset_id)
@@ -82,12 +72,7 @@ def clean_up():
8272

8373
@pytest.fixture(scope="module")
8474
def test_hl7v2_store():
85-
@retry(
86-
wait_exponential_multiplier=1000,
87-
wait_exponential_max=10000,
88-
stop_max_attempt_number=10,
89-
retry_on_exception=retry_if_server_exception,
90-
)
75+
@backoff.on_exception(backoff.expo, HttpError, max_time=60)
9176
def create():
9277
try:
9378
hl7v2_stores.create_hl7v2_store(
@@ -111,12 +96,7 @@ def create():
11196
yield
11297

11398
# Clean up
114-
@retry(
115-
wait_exponential_multiplier=1000,
116-
wait_exponential_max=10000,
117-
stop_max_attempt_number=10,
118-
retry_on_exception=retry_if_server_exception,
119-
)
99+
@backoff.on_exception(backoff.expo, HttpError, max_time=60)
120100
def clean_up():
121101
try:
122102
hl7v2_stores.delete_hl7v2_store(
@@ -141,12 +121,7 @@ def crud_hl7v2_store_id():
141121
yield hl7v2_store_id
142122

143123
# Clean up
144-
@retry(
145-
wait_exponential_multiplier=1000,
146-
wait_exponential_max=10000,
147-
stop_max_attempt_number=10,
148-
retry_on_exception=retry_if_server_exception,
149-
)
124+
@backoff.on_exception(backoff.expo, HttpError, max_time=60)
150125
def clean_up():
151126
try:
152127
hl7v2_stores.delete_hl7v2_store(
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
pytest==5.3.2
2-
retrying==1.3.3
2+
backoff==1.10.0

0 commit comments

Comments
 (0)