Skip to content

Commit 2ea8843

Browse files
committed
Merge origin/main into adamtheturtle/vumark-api-test
2 parents ee59318 + 7a4a6f1 commit 2ea8843

1 file changed

Lines changed: 60 additions & 54 deletions

File tree

admin/create_secrets_files.py

Lines changed: 60 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -13,78 +13,74 @@
1313
import vws_web_tools
1414
from dotenv import load_dotenv
1515
from selenium.common.exceptions import TimeoutException
16+
from tenacity import (
17+
retry,
18+
retry_if_exception_type,
19+
stop_after_attempt,
20+
wait_exponential,
21+
)
1622

1723
if TYPE_CHECKING:
1824
from selenium.webdriver.remote.webdriver import WebDriver
1925
from vws_web_tools import DatabaseDict, VuMarkDatabaseDict
2026

2127

28+
RETRY_ON_TIMEOUT = retry(
29+
retry=retry_if_exception_type(exception_types=TimeoutException),
30+
stop=stop_after_attempt(max_attempt_number=3),
31+
wait=wait_exponential(multiplier=2, min=5, max=30),
32+
reraise=True,
33+
)
34+
35+
2236
def _create_and_get_database_details(
2337
driver: "WebDriver",
2438
email_address: str,
2539
password: str,
2640
license_name: str,
2741
database_name: str,
28-
) -> "DatabaseDict | None":
42+
) -> "DatabaseDict":
2943
"""Create a cloud database and get its details.
3044
31-
Returns database details or None if a timeout occurs.
45+
Returns database details.
3246
"""
3347
vws_web_tools.log_in(
3448
driver=driver,
3549
email_address=email_address,
3650
password=password,
3751
)
3852
vws_web_tools.wait_for_logged_in(driver=driver)
39-
try:
40-
vws_web_tools.create_license(driver=driver, license_name=license_name)
41-
except TimeoutException:
42-
sys.stderr.write("Timed out waiting for license creation\n")
43-
return None
53+
vws_web_tools.create_license(driver=driver, license_name=license_name)
4454

4555
vws_web_tools.create_cloud_database(
4656
driver=driver,
4757
database_name=database_name,
4858
license_name=license_name,
4959
)
5060

51-
try:
52-
return vws_web_tools.get_database_details(
53-
driver=driver,
54-
database_name=database_name,
55-
)
56-
except TimeoutException:
57-
sys.stderr.write("Timed out waiting for database to be created\n")
58-
return None
61+
return RETRY_ON_TIMEOUT(vws_web_tools.get_database_details)(
62+
driver=driver,
63+
database_name=database_name,
64+
)
5965

6066

6167
def _create_and_get_vumark_details(
6268
driver: "WebDriver",
6369
vumark_database_name: str,
64-
) -> "VuMarkDatabaseDict | None":
70+
) -> "VuMarkDatabaseDict":
6571
"""Create a VuMark database and get its details.
6672
67-
Returns VuMark database details or None if a timeout occurs.
73+
Returns VuMark database details.
6874
"""
69-
try:
70-
vws_web_tools.create_vumark_database(
71-
driver=driver,
72-
database_name=vumark_database_name,
73-
)
74-
except TimeoutException:
75-
sys.stderr.write("Timed out waiting for VuMark database creation\n")
76-
return None
77-
78-
try:
79-
return vws_web_tools.get_vumark_database_details(
80-
driver=driver,
81-
database_name=vumark_database_name,
82-
)
83-
except TimeoutException:
84-
sys.stderr.write(
85-
"Timed out waiting for VuMark database to be created\n"
86-
)
87-
return None
75+
vws_web_tools.create_vumark_database(
76+
driver=driver,
77+
database_name=vumark_database_name,
78+
)
79+
80+
return RETRY_ON_TIMEOUT(vws_web_tools.get_vumark_database_details)(
81+
driver=driver,
82+
database_name=vumark_database_name,
83+
)
8884

8985

9086
def _generate_secrets_file_content(
@@ -145,16 +141,22 @@ def main() -> None:
145141
format="%Y-%m-%d-%H-%M-%S",
146142
)
147143
vumark_database_name = f"my-vumark-database-{time}"
148-
vws_web_tools.log_in(
149-
driver=vumark_driver,
150-
email_address=email_address,
151-
password=password,
152-
)
153-
vws_web_tools.wait_for_logged_in(driver=vumark_driver)
154-
shared_vumark_details = _create_and_get_vumark_details(
155-
driver=vumark_driver,
156-
vumark_database_name=vumark_database_name,
157-
)
144+
try:
145+
vws_web_tools.log_in(
146+
driver=vumark_driver,
147+
email_address=email_address,
148+
password=password,
149+
)
150+
vws_web_tools.wait_for_logged_in(driver=vumark_driver)
151+
shared_vumark_details = _create_and_get_vumark_details(
152+
driver=vumark_driver,
153+
vumark_database_name=vumark_database_name,
154+
)
155+
except TimeoutException:
156+
sys.stderr.write(
157+
"Timed out waiting for shared VuMark setup/details after "
158+
"retries\n"
159+
)
158160
vumark_driver.quit()
159161

160162
driver: WebDriver | None = None
@@ -169,14 +171,18 @@ def main() -> None:
169171
license_name = f"my-license-{time}"
170172
database_name = f"my-database-{time}"
171173

172-
database_details = _create_and_get_database_details(
173-
driver=driver,
174-
email_address=email_address,
175-
password=password,
176-
license_name=license_name,
177-
database_name=database_name,
178-
)
179-
if database_details is None:
174+
try:
175+
database_details = _create_and_get_database_details(
176+
driver=driver,
177+
email_address=email_address,
178+
password=password,
179+
license_name=license_name,
180+
database_name=database_name,
181+
)
182+
except TimeoutException:
183+
sys.stderr.write(
184+
"Timed out waiting for database setup/details after retries\n"
185+
)
180186
driver.quit()
181187
driver = None
182188
continue

0 commit comments

Comments
 (0)