1
0
Fork 0

fix(tests): make release tests fail if image was not successful (#287)

This commit is contained in:
Sean Sube 2023-03-26 20:43:59 -05:00
parent 0ea0442f02
commit d7e548037a
Signed by: ssube
GPG Key ID: 3EED7B957D362AF1
1 changed files with 21 additions and 7 deletions

View File

@ -196,6 +196,11 @@ TEST_DATA = [
] ]
class TestError(Exception):
def __str__(self) -> str:
return super().__str__()
def generate_images(root: str, test: TestCase) -> Optional[str]: def generate_images(root: str, test: TestCase) -> Optional[str]:
files = {} files = {}
if test.source is not None: if test.source is not None:
@ -234,18 +239,24 @@ def generate_images(root: str, test: TestCase) -> Optional[str]:
json = resp.json() json = resp.json()
return json.get("outputs") return json.get("outputs")
else: else:
logger.warning("request failed: %s: %s", resp.status_code, resp.text) logger.warning("generate request failed: %s: %s", resp.status_code, resp.text)
return None raise TestError("error generating image")
def check_ready(root: str, key: str) -> bool: def check_ready(root: str, key: str) -> bool:
resp = requests.get(f"{root}/api/ready?output={key}") resp = requests.get(f"{root}/api/ready?output={key}")
if resp.status_code == 200: if resp.status_code == 200:
json = resp.json() json = resp.json()
return json.get("ready", False) ready = json.get("ready", False)
if ready:
cancelled = json.get("cancelled", False)
failed = json.get("failed", False)
return not cancelled and not failed
else:
return False
else: else:
logger.warning("request failed: %s", resp.status_code) logger.warning("ready request failed: %s", resp.status_code)
return False raise TestError("error getting image status")
def download_images(root: str, keys: List[str]) -> List[Image.Image]: def download_images(root: str, keys: List[str]) -> List[Image.Image]:
@ -256,7 +267,8 @@ def download_images(root: str, keys: List[str]) -> List[Image.Image]:
logger.debug("downloading image: %s", key) logger.debug("downloading image: %s", key)
images.append(Image.open(BytesIO(resp.content))) images.append(Image.open(BytesIO(resp.content)))
else: else:
logger.warning("request failed: %s", resp.status_code) logger.warning("download request failed: %s", resp.status_code)
raise TestError("error downloading image")
return images return images
@ -290,7 +302,7 @@ def run_test(
keys = generate_images(root, test) keys = generate_images(root, test)
if keys is None: if keys is None:
raise ValueError("could not generate") raise ValueError("could not generate image")
attempts = 0 attempts = 0
while attempts < test.max_attempts: while attempts < test.max_attempts:
@ -306,6 +318,8 @@ def run_test(
raise ValueError("image was not ready in time") raise ValueError("image was not ready in time")
results = download_images(root, keys) results = download_images(root, keys)
if results is None:
raise ValueError("could not download image")
passed = True passed = True
for i in range(len(results)): for i in range(len(results)):