mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-28 04:43:54 -06:00
tests/functional: ignore errors when caching assets, except for 404
We see periodic errors caching assets due to a combination of transient networking and server problems. With the previous patch to skip running a test when it has missing assets, we can now treat most cache download errors as non-fatal. Only HTTP 404 is retained as fatal, since it is a strong indicator of a fully broken test rather than a transient error. Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Message-ID: <20241217155953.3950506-32-berrange@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
6ff217c2d1
commit
674a750b51
1 changed files with 13 additions and 1 deletions
|
@ -15,6 +15,7 @@ import urllib.request
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from shutil import copyfileobj
|
from shutil import copyfileobj
|
||||||
|
from urllib.error import HTTPError
|
||||||
|
|
||||||
|
|
||||||
# Instances of this class must be declared as class level variables
|
# Instances of this class must be declared as class level variables
|
||||||
|
@ -170,7 +171,18 @@ class Asset:
|
||||||
for name, asset in vars(test.__class__).items():
|
for name, asset in vars(test.__class__).items():
|
||||||
if name.startswith("ASSET_") and type(asset) == Asset:
|
if name.startswith("ASSET_") and type(asset) == Asset:
|
||||||
log.info("Attempting to cache '%s'" % asset)
|
log.info("Attempting to cache '%s'" % asset)
|
||||||
|
try:
|
||||||
asset.fetch()
|
asset.fetch()
|
||||||
|
except HTTPError as e:
|
||||||
|
# Treat 404 as fatal, since it is highly likely to
|
||||||
|
# indicate a broken test rather than a transient
|
||||||
|
# server or networking problem
|
||||||
|
if e.code == 404:
|
||||||
|
raise
|
||||||
|
|
||||||
|
log.debug(f"HTTP error {e.code} from {asset.url} " +
|
||||||
|
"skipping asset precache")
|
||||||
|
|
||||||
log.removeHandler(handler)
|
log.removeHandler(handler)
|
||||||
|
|
||||||
def precache_suite(suite):
|
def precache_suite(suite):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue