Commit 5b4b4865 authored by Alex Bennée's avatar Alex Bennée
Browse files

tests/vm: support sites with sha512 checksums



The NetBSD project uses SHA512 for its checksums so lets support that
in the download helper.

Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
parent 860eacec
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -95,19 +95,25 @@ class BaseVM(object):
            logging.info("KVM not available, not using -enable-kvm")
        self._data_args = []

    def _download_with_cache(self, url, sha256sum=None):
    def _download_with_cache(self, url, sha256sum=None, sha512sum=None):
        def check_sha256sum(fname):
            if not sha256sum:
                return True
            checksum = subprocess.check_output(["sha256sum", fname]).split()[0]
            return sha256sum == checksum.decode("utf-8")

        def check_sha512sum(fname):
            if not sha512sum:
                return True
            checksum = subprocess.check_output(["sha512sum", fname]).split()[0]
            return sha512sum == checksum.decode("utf-8")

        cache_dir = os.path.expanduser("~/.cache/qemu-vm/download")
        if not os.path.exists(cache_dir):
            os.makedirs(cache_dir)
        fname = os.path.join(cache_dir,
                             hashlib.sha1(url.encode("utf-8")).hexdigest())
        if os.path.exists(fname) and check_sha256sum(fname):
        if os.path.exists(fname) and check_sha256sum(fname) and check_sha512sum(fname):
            return fname
        logging.debug("Downloading %s to %s...", url, fname)
        subprocess.check_call(["wget", "-c", url, "-O", fname + ".download"],
+2 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ class NetBSDVM(basevm.BaseVM):
    arch = "x86_64"

    link = "https://cdn.netbsd.org/pub/NetBSD/NetBSD-8.1/images/NetBSD-8.1-amd64.iso"
    csum = "718f275b7e0879599bdac95630c5e3f2184700032fdb6cdebf3bdd63687898c48ff3f08f57b89f4437a86cdd8ea07c01a39d432dbb37e1e4b008f4985f98da3f"
    size = "20G"
    pkgs = [
        # tools
@@ -70,7 +71,7 @@ class NetBSDVM(basevm.BaseVM):
    ipv6 = False

    def build_image(self, img):
        cimg = self._download_with_cache(self.link)
        cimg = self._download_with_cache(self.link, sha512sum=self.csum)
        img_tmp = img + ".tmp"
        iso = img + ".install.iso"