diff options
author | Thomas Huth <thuth@redhat.com> | 2025-02-27 11:39:10 +0100 |
---|---|---|
committer | Thomas Huth <thuth@redhat.com> | 2025-03-07 07:50:19 +0100 |
commit | 2c92ecb678cddf4bf3ced98f94acd2f3691c21bc (patch) | |
tree | 6458800be76b3ed1563725f52996811ec07d04fb /tests/functional/qemu_test | |
parent | 981395889201f556c37e18c7a896d2555ffa4373 (diff) | |
download | qemu-2c92ecb678cddf4bf3ced98f94acd2f3691c21bc.zip qemu-2c92ecb678cddf4bf3ced98f94acd2f3691c21bc.tar.gz qemu-2c92ecb678cddf4bf3ced98f94acd2f3691c21bc.tar.bz2 |
tests/functional: Move the code for testing HTTP downloads to a common function
We are going to use this code in other tests, too, so let's move it
to the qemu_test module to be able to re-use it more easily.
Message-ID: <20250227103915.19795-2-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'tests/functional/qemu_test')
-rw-r--r-- | tests/functional/qemu_test/linuxkernel.py | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/tests/functional/qemu_test/linuxkernel.py b/tests/functional/qemu_test/linuxkernel.py index 2c95981..2aca0ee 100644 --- a/tests/functional/qemu_test/linuxkernel.py +++ b/tests/functional/qemu_test/linuxkernel.py @@ -3,8 +3,12 @@ # This work is licensed under the terms of the GNU GPL, version 2 or # later. See the COPYING file in the top-level directory. +import hashlib +import urllib.request + +from .cmd import wait_for_console_pattern, exec_command_and_wait_for_pattern from .testcase import QemuSystemTest -from .cmd import wait_for_console_pattern +from .utils import get_usernet_hostfwd_port class LinuxKernelTest(QemuSystemTest): @@ -26,3 +30,23 @@ class LinuxKernelTest(QemuSystemTest): self.vm.launch() if wait_for: self.wait_for_console_pattern(wait_for) + + def check_http_download(self, filename, hashsum, guestport=8080, + pythoncmd='python3 -m http.server'): + exec_command_and_wait_for_pattern(self, + f'{pythoncmd} {guestport} & sleep 1', + f'Serving HTTP on 0.0.0.0 port {guestport}') + hl = hashlib.sha256() + hostport = get_usernet_hostfwd_port(self.vm) + url = f'http://localhost:{hostport}{filename}' + self.log.info(f'Downloading {url} ...') + with urllib.request.urlopen(url) as response: + while True: + chunk = response.read(1 << 20) + if not chunk: + break + hl.update(chunk) + + digest = hl.hexdigest() + self.log.info(f'sha256sum of download is {digest}.') + self.assertEqual(digest, hashsum) |