mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 12:23:53 -06:00
tests/functional/asset: Verify downloaded size
If the server provides a Content-Length header, use that to verify the size of the downloaded file. This catches cases where the connection terminates early, and gives the opportunity to retry. Without this, the checksum will likely mismatch and fail without retry. Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Message-ID: <20250312130002.945508-3-npiggin@gmail.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
a5e8299d1a
commit
7524e1b336
1 changed files with 14 additions and 0 deletions
|
@ -121,6 +121,20 @@ class Asset:
|
|||
with tmp_cache_file.open("xb") as dst:
|
||||
with urllib.request.urlopen(self.url) as resp:
|
||||
copyfileobj(resp, dst)
|
||||
length_hdr = resp.getheader("Content-Length")
|
||||
|
||||
# Verify downloaded file size against length metadata, if
|
||||
# available.
|
||||
if length_hdr is not None:
|
||||
length = int(length_hdr)
|
||||
fsize = tmp_cache_file.stat().st_size
|
||||
if fsize != length:
|
||||
self.log.error("Unable to download %s: "
|
||||
"connection closed before "
|
||||
"transfer complete (%d/%d)",
|
||||
self.url, fsize, length)
|
||||
tmp_cache_file.unlink()
|
||||
continue
|
||||
break
|
||||
except FileExistsError:
|
||||
self.log.debug("%s already exists, "
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue