* [PULL 00/10] Avocado test fixes
@ 2023-11-16 18:05 Thomas Huth
2023-11-16 18:05 ` [PULL 01/10] tests/avocado: Replace assertEquals() for Python 3.12 compatibility Thomas Huth
` (10 more replies)
0 siblings, 11 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi
The following changes since commit 34a5cb6d8434303c170230644b2a7c1d5781d197:
Merge tag 'pull-tcg-20231114' of https://gitlab.com/rth7680/qemu into staging (2023-11-15 08:05:25 -0500)
are available in the Git repository at:
https://gitlab.com/thuth/qemu.git tags/pull-request-2023-11-16
for you to fetch changes up to c4d74ab24a02c90b7a3240510b3dd4e1bec536dd:
tests/avocado: Enable reverse_debugging.py tests in gitlab CI (2023-11-16 14:22:56 +0100)
----------------------------------------------------------------
* Fix the avocado tests for running with Python 3.12
* Add some asset hashes to silence warnings
* Fix the broken reverse_debugging test
----------------------------------------------------------------
Nicholas Piggin (2):
tests/avocado: reverse_debugging drain console to prevent hang
tests/avocado: Enable reverse_debugging.py tests in gitlab CI
Philippe Mathieu-Daudé (2):
tests/avocado: Replace assertRegexpMatches() for Python 3.12 compatibility
tests/avocado: Make fetch_asset() unconditionally require a crypto hash
Thomas Huth (6):
tests/avocado: Replace assertEquals() for Python 3.12 compatibility
tests/avocado/virtio-gpu: Fix test_vhost_user_vga_virgl for edid support
tests/avocado/intel_iommu: Add asset hashes to avoid warnings
tests/avocado/multiprocess: Add asset hashes to silence warnings
tests/avocado/replay_kernel: Mark the test_x86_64_pc as flaky
tests/avocado/mem-addr-space-check: Replace assertEquals() for Python 3.12
docs/devel/testing.rst | 4 +-
tests/avocado/avocado_qemu/__init__.py | 2 +-
tests/avocado/cpu_queries.py | 2 +-
tests/avocado/empty_cpu_model.py | 2 +-
tests/avocado/intel_iommu.py | 6 +-
tests/avocado/mem-addr-space-check.py | 14 ++---
tests/avocado/multiprocess.py | 18 ++++--
tests/avocado/pc_cpu_hotplug_props.py | 2 +-
tests/avocado/replay_kernel.py | 3 +-
tests/avocado/reverse_debugging.py | 12 ++--
tests/avocado/version.py | 2 +-
tests/avocado/virtio-gpu.py | 6 +-
tests/avocado/x86_cpu_model_versions.py | 97 +++++++++++++++++----------------
13 files changed, 88 insertions(+), 82 deletions(-)
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PULL 01/10] tests/avocado: Replace assertEquals() for Python 3.12 compatibility
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-16 18:05 ` [PULL 02/10] tests/avocado: Replace assertRegexpMatches() " Thomas Huth
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi; +Cc: Philippe Mathieu-Daudé
assertEquals() has been removed in Python 3.12 and should be replaced by
assertEqual(). See: https://docs.python.org/3.12/whatsnew/3.12.html#id3
Message-ID: <20231114134326.287242-1-thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
docs/devel/testing.rst | 2 +-
tests/avocado/cpu_queries.py | 2 +-
tests/avocado/empty_cpu_model.py | 2 +-
tests/avocado/pc_cpu_hotplug_props.py | 2 +-
tests/avocado/x86_cpu_model_versions.py | 97 +++++++++++++------------
5 files changed, 53 insertions(+), 52 deletions(-)
diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
index fef64accc1..87ed30af22 100644
--- a/docs/devel/testing.rst
+++ b/docs/devel/testing.rst
@@ -1077,7 +1077,7 @@ and hypothetical example follows:
'human-monitor-command',
command_line='info version')
- self.assertEquals(first_res, second_res, third_res)
+ self.assertEqual(first_res, second_res, third_res)
At test "tear down", ``avocado_qemu.Test`` handles all the QEMUMachines
shutdown.
diff --git a/tests/avocado/cpu_queries.py b/tests/avocado/cpu_queries.py
index 86c2d5c92d..d3faa14720 100644
--- a/tests/avocado/cpu_queries.py
+++ b/tests/avocado/cpu_queries.py
@@ -32,4 +32,4 @@ def test(self):
model = {'name': c['name']}
e = self.vm.cmd('query-cpu-model-expansion', model=model,
type='full')
- self.assertEquals(e['model']['name'], c['name'])
+ self.assertEqual(e['model']['name'], c['name'])
diff --git a/tests/avocado/empty_cpu_model.py b/tests/avocado/empty_cpu_model.py
index 22f504418d..d906ef3d3c 100644
--- a/tests/avocado/empty_cpu_model.py
+++ b/tests/avocado/empty_cpu_model.py
@@ -15,5 +15,5 @@ def test(self):
self.vm.set_qmp_monitor(enabled=False)
self.vm.launch()
self.vm.wait()
- self.assertEquals(self.vm.exitcode(), 1, "QEMU exit code should be 1")
+ self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'-cpu option cannot be empty')
diff --git a/tests/avocado/pc_cpu_hotplug_props.py b/tests/avocado/pc_cpu_hotplug_props.py
index b56f51d02a..4bd3e02665 100644
--- a/tests/avocado/pc_cpu_hotplug_props.py
+++ b/tests/avocado/pc_cpu_hotplug_props.py
@@ -32,4 +32,4 @@ def test_no_die_id(self):
self.vm.add_args('-smp', '1,sockets=2,cores=2,threads=2,maxcpus=8')
self.vm.add_args('-device', 'qemu64-x86_64-cpu,socket-id=1,core-id=0,thread-id=0')
self.vm.launch()
- self.assertEquals(len(self.vm.cmd('query-cpus-fast')), 2)
+ self.assertEqual(len(self.vm.cmd('query-cpus-fast')), 2)
diff --git a/tests/avocado/x86_cpu_model_versions.py b/tests/avocado/x86_cpu_model_versions.py
index 9e07b8a55d..11101e02b9 100644
--- a/tests/avocado/x86_cpu_model_versions.py
+++ b/tests/avocado/x86_cpu_model_versions.py
@@ -121,94 +121,95 @@ def test_4_1_alias(self):
self.assertFalse(cpus['Cascadelake-Server']['static'],
'unversioned Cascadelake-Server CPU model must not be static')
- self.assertEquals(cpus['Cascadelake-Server'].get('alias-of'), 'Cascadelake-Server-v1',
- 'Cascadelake-Server must be an alias of Cascadelake-Server-v1')
+ self.assertEqual(cpus['Cascadelake-Server'].get('alias-of'),
+ 'Cascadelake-Server-v1',
+ 'Cascadelake-Server must be an alias of Cascadelake-Server-v1')
self.assertNotIn('alias-of', cpus['Cascadelake-Server-v1'],
'Cascadelake-Server-v1 must not be an alias')
self.assertFalse(cpus['qemu64']['static'],
'unversioned qemu64 CPU model must not be static')
- self.assertEquals(cpus['qemu64'].get('alias-of'), 'qemu64-v1',
- 'qemu64 must be an alias of qemu64-v1')
+ self.assertEqual(cpus['qemu64'].get('alias-of'), 'qemu64-v1',
+ 'qemu64 must be an alias of qemu64-v1')
self.assertNotIn('alias-of', cpus['qemu64-v1'],
'qemu64-v1 must not be an alias')
self.validate_variant_aliases(cpus)
# On pc-*-4.1, -noTSX and -IBRS models should be aliases:
- self.assertEquals(cpus["Haswell"].get('alias-of'),
- "Haswell-v1",
+ self.assertEqual(cpus["Haswell"].get('alias-of'),
+ "Haswell-v1",
"Haswell must be an alias")
- self.assertEquals(cpus["Haswell-noTSX"].get('alias-of'),
- "Haswell-v2",
+ self.assertEqual(cpus["Haswell-noTSX"].get('alias-of'),
+ "Haswell-v2",
"Haswell-noTSX must be an alias")
- self.assertEquals(cpus["Haswell-IBRS"].get('alias-of'),
- "Haswell-v3",
+ self.assertEqual(cpus["Haswell-IBRS"].get('alias-of'),
+ "Haswell-v3",
"Haswell-IBRS must be an alias")
- self.assertEquals(cpus["Haswell-noTSX-IBRS"].get('alias-of'),
- "Haswell-v4",
+ self.assertEqual(cpus["Haswell-noTSX-IBRS"].get('alias-of'),
+ "Haswell-v4",
"Haswell-noTSX-IBRS must be an alias")
- self.assertEquals(cpus["Broadwell"].get('alias-of'),
- "Broadwell-v1",
+ self.assertEqual(cpus["Broadwell"].get('alias-of'),
+ "Broadwell-v1",
"Broadwell must be an alias")
- self.assertEquals(cpus["Broadwell-noTSX"].get('alias-of'),
- "Broadwell-v2",
+ self.assertEqual(cpus["Broadwell-noTSX"].get('alias-of'),
+ "Broadwell-v2",
"Broadwell-noTSX must be an alias")
- self.assertEquals(cpus["Broadwell-IBRS"].get('alias-of'),
- "Broadwell-v3",
+ self.assertEqual(cpus["Broadwell-IBRS"].get('alias-of'),
+ "Broadwell-v3",
"Broadwell-IBRS must be an alias")
- self.assertEquals(cpus["Broadwell-noTSX-IBRS"].get('alias-of'),
- "Broadwell-v4",
+ self.assertEqual(cpus["Broadwell-noTSX-IBRS"].get('alias-of'),
+ "Broadwell-v4",
"Broadwell-noTSX-IBRS must be an alias")
- self.assertEquals(cpus["Nehalem"].get('alias-of'),
- "Nehalem-v1",
+ self.assertEqual(cpus["Nehalem"].get('alias-of'),
+ "Nehalem-v1",
"Nehalem must be an alias")
- self.assertEquals(cpus["Nehalem-IBRS"].get('alias-of'),
- "Nehalem-v2",
+ self.assertEqual(cpus["Nehalem-IBRS"].get('alias-of'),
+ "Nehalem-v2",
"Nehalem-IBRS must be an alias")
- self.assertEquals(cpus["Westmere"].get('alias-of'),
- "Westmere-v1",
+ self.assertEqual(cpus["Westmere"].get('alias-of'),
+ "Westmere-v1",
"Westmere must be an alias")
- self.assertEquals(cpus["Westmere-IBRS"].get('alias-of'),
- "Westmere-v2",
+ self.assertEqual(cpus["Westmere-IBRS"].get('alias-of'),
+ "Westmere-v2",
"Westmere-IBRS must be an alias")
- self.assertEquals(cpus["SandyBridge"].get('alias-of'),
- "SandyBridge-v1",
+ self.assertEqual(cpus["SandyBridge"].get('alias-of'),
+ "SandyBridge-v1",
"SandyBridge must be an alias")
- self.assertEquals(cpus["SandyBridge-IBRS"].get('alias-of'),
- "SandyBridge-v2",
+ self.assertEqual(cpus["SandyBridge-IBRS"].get('alias-of'),
+ "SandyBridge-v2",
"SandyBridge-IBRS must be an alias")
- self.assertEquals(cpus["IvyBridge"].get('alias-of'),
- "IvyBridge-v1",
+ self.assertEqual(cpus["IvyBridge"].get('alias-of'),
+ "IvyBridge-v1",
"IvyBridge must be an alias")
- self.assertEquals(cpus["IvyBridge-IBRS"].get('alias-of'),
- "IvyBridge-v2",
+ self.assertEqual(cpus["IvyBridge-IBRS"].get('alias-of'),
+ "IvyBridge-v2",
"IvyBridge-IBRS must be an alias")
- self.assertEquals(cpus["Skylake-Client"].get('alias-of'),
- "Skylake-Client-v1",
+ self.assertEqual(cpus["Skylake-Client"].get('alias-of'),
+ "Skylake-Client-v1",
"Skylake-Client must be an alias")
- self.assertEquals(cpus["Skylake-Client-IBRS"].get('alias-of'),
- "Skylake-Client-v2",
+ self.assertEqual(cpus["Skylake-Client-IBRS"].get('alias-of'),
+ "Skylake-Client-v2",
"Skylake-Client-IBRS must be an alias")
- self.assertEquals(cpus["Skylake-Server"].get('alias-of'),
- "Skylake-Server-v1",
+ self.assertEqual(cpus["Skylake-Server"].get('alias-of'),
+ "Skylake-Server-v1",
"Skylake-Server must be an alias")
- self.assertEquals(cpus["Skylake-Server-IBRS"].get('alias-of'),
- "Skylake-Server-v2",
+ self.assertEqual(cpus["Skylake-Server-IBRS"].get('alias-of'),
+ "Skylake-Server-v2",
"Skylake-Server-IBRS must be an alias")
- self.assertEquals(cpus["EPYC"].get('alias-of'),
- "EPYC-v1",
+ self.assertEqual(cpus["EPYC"].get('alias-of'),
+ "EPYC-v1",
"EPYC must be an alias")
- self.assertEquals(cpus["EPYC-IBPB"].get('alias-of'),
- "EPYC-v2",
+ self.assertEqual(cpus["EPYC-IBPB"].get('alias-of'),
+ "EPYC-v2",
"EPYC-IBPB must be an alias")
self.validate_aliases(cpus)
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 02/10] tests/avocado: Replace assertRegexpMatches() for Python 3.12 compatibility
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
2023-11-16 18:05 ` [PULL 01/10] tests/avocado: Replace assertEquals() for Python 3.12 compatibility Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-16 18:05 ` [PULL 03/10] tests/avocado/virtio-gpu: Fix test_vhost_user_vga_virgl for edid support Thomas Huth
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi; +Cc: Philippe Mathieu-Daudé
From: Philippe Mathieu-Daudé <philmd@linaro.org>
assertRegexpMatches() has been removed in Python 3.12 and should be replaced by
assertRegex(). See: https://docs.python.org/3.12/whatsnew/3.12.html#id3
Inspired-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20231114144832.71612-1-philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
docs/devel/testing.rst | 2 +-
tests/avocado/version.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
index 87ed30af22..22218dbedb 100644
--- a/docs/devel/testing.rst
+++ b/docs/devel/testing.rst
@@ -1016,7 +1016,7 @@ class. Here's a simple usage example:
self.vm.launch()
res = self.vm.cmd('human-monitor-command',
command_line='info version')
- self.assertRegexpMatches(res, r'^(\d+\.\d+\.\d)')
+ self.assertRegex(res, r'^(\d+\.\d+\.\d)')
To execute your test, run:
diff --git a/tests/avocado/version.py b/tests/avocado/version.py
index 93ffdf3d97..c6139568a1 100644
--- a/tests/avocado/version.py
+++ b/tests/avocado/version.py
@@ -22,4 +22,4 @@ def test_qmp_human_info_version(self):
self.vm.launch()
res = self.vm.cmd('human-monitor-command',
command_line='info version')
- self.assertRegexpMatches(res, r'^(\d+\.\d+\.\d)')
+ self.assertRegex(res, r'^(\d+\.\d+\.\d)')
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 03/10] tests/avocado/virtio-gpu: Fix test_vhost_user_vga_virgl for edid support
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
2023-11-16 18:05 ` [PULL 01/10] tests/avocado: Replace assertEquals() for Python 3.12 compatibility Thomas Huth
2023-11-16 18:05 ` [PULL 02/10] tests/avocado: Replace assertRegexpMatches() " Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-16 18:05 ` [PULL 04/10] tests/avocado/intel_iommu: Add asset hashes to avoid warnings Thomas Huth
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi; +Cc: Antonio Caggiano
The "edid" feature has been added to vhost-user-gpu in commit
c06444261e20 ("contrib/vhost-user-gpu: implement get_edid feature"),
so waiting for "features: +virgl -edid" in the test does not work
anymore, it's "+edid" instead of "-edid" now!
While we're at it, move the expected string to the preceeding
exec_command_and_wait_for_pattern() instead (since waiting for
empty string here does not make too much sense).
Message-ID: <20231114203456.319093-1-thuth@redhat.com>
Reviewed-by: Antonio Caggiano <quic_acaggian@quicinc.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/avocado/virtio-gpu.py | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/tests/avocado/virtio-gpu.py b/tests/avocado/virtio-gpu.py
index 89bfecc715..6091f614a4 100644
--- a/tests/avocado/virtio-gpu.py
+++ b/tests/avocado/virtio-gpu.py
@@ -149,10 +149,8 @@ def test_vhost_user_vga_virgl(self):
# TODO: probably fails because we are missing the VirGL features
self.cancel("VirGL not enabled?")
self.wait_for_console_pattern("as init process")
- exec_command_and_wait_for_pattern(
- self, "/usr/sbin/modprobe virtio_gpu", ""
- )
- self.wait_for_console_pattern("features: +virgl -edid")
+ exec_command_and_wait_for_pattern(self, "/usr/sbin/modprobe virtio_gpu",
+ "features: +virgl +edid")
self.vm.shutdown()
qemu_sock.close()
vugp.terminate()
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 04/10] tests/avocado/intel_iommu: Add asset hashes to avoid warnings
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
` (2 preceding siblings ...)
2023-11-16 18:05 ` [PULL 03/10] tests/avocado/virtio-gpu: Fix test_vhost_user_vga_virgl for edid support Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-16 18:05 ` [PULL 05/10] tests/avocado/multiprocess: Add asset hashes to silence warnings Thomas Huth
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi; +Cc: Eric Auger
The intel_iommu test is currently succeeding with annoying warnings.
Add the proper asset hashes to avoid those.
Message-ID: <20231114143531.291820-1-thuth@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/avocado/intel_iommu.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tests/avocado/intel_iommu.py b/tests/avocado/intel_iommu.py
index 474d62f6bf..77635ab56c 100644
--- a/tests/avocado/intel_iommu.py
+++ b/tests/avocado/intel_iommu.py
@@ -54,9 +54,11 @@ def common_vm_setup(self, custom_kernel=None):
return
kernel_url = self.distro.pxeboot_url + 'vmlinuz'
+ kernel_hash = '5b6f6876e1b5bda314f93893271da0d5777b1f3c'
initrd_url = self.distro.pxeboot_url + 'initrd.img'
- self.kernel_path = self.fetch_asset(kernel_url)
- self.initrd_path = self.fetch_asset(initrd_url)
+ initrd_hash = 'dd0340a1b39bd28f88532babd4581c67649ec5b1'
+ self.kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+ self.initrd_path = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
def run_and_check(self):
if self.kernel_path:
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 05/10] tests/avocado/multiprocess: Add asset hashes to silence warnings
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
` (3 preceding siblings ...)
2023-11-16 18:05 ` [PULL 04/10] tests/avocado/intel_iommu: Add asset hashes to avoid warnings Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-16 18:05 ` [PULL 06/10] tests/avocado: Make fetch_asset() unconditionally require a crypto hash Thomas Huth
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi
The multiprocess test is currently succeeding with an annoying warning:
(1/2) tests/avocado/multiprocess.py:Multiprocess.test_multiprocess_x86_64:
WARN: Test passed but there were warnings during execution. Check
the log for details
In the log, you can find an entry like:
WARNI| No hash provided. Cannot check the asset file integrity.
Add the proper asset hashes to avoid those warnings.
Message-ID: <20231115145852.494052-1-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/avocado/multiprocess.py | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/tests/avocado/multiprocess.py b/tests/avocado/multiprocess.py
index 9112a4cacc..ee7490ae08 100644
--- a/tests/avocado/multiprocess.py
+++ b/tests/avocado/multiprocess.py
@@ -18,8 +18,8 @@ class Multiprocess(QemuSystemTest):
"""
KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '
- def do_test(self, kernel_url, initrd_url, kernel_command_line,
- machine_type):
+ def do_test(self, kernel_url, kernel_hash, initrd_url, initrd_hash,
+ kernel_command_line, machine_type):
"""Main test method"""
self.require_accelerator('kvm')
self.require_multiprocess()
@@ -30,8 +30,8 @@ def do_test(self, kernel_url, initrd_url, kernel_command_line,
os.set_inheritable(proxy_sock.fileno(), True)
os.set_inheritable(remote_sock.fileno(), True)
- kernel_path = self.fetch_asset(kernel_url)
- initrd_path = self.fetch_asset(initrd_url)
+ kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+ initrd_path = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
# Create remote process
remote_vm = self.get_vm()
@@ -72,13 +72,16 @@ def test_multiprocess_x86_64(self):
kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora'
'/linux/releases/31/Everything/x86_64/os/images'
'/pxeboot/vmlinuz')
+ kernel_hash = '5b6f6876e1b5bda314f93893271da0d5777b1f3c'
initrd_url = ('https://archives.fedoraproject.org/pub/archive/fedora'
'/linux/releases/31/Everything/x86_64/os/images'
'/pxeboot/initrd.img')
+ initrd_hash = 'dd0340a1b39bd28f88532babd4581c67649ec5b1'
kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
'console=ttyS0 rdinit=/bin/bash')
machine_type = 'pc'
- self.do_test(kernel_url, initrd_url, kernel_command_line, machine_type)
+ self.do_test(kernel_url, kernel_hash, initrd_url, initrd_hash,
+ kernel_command_line, machine_type)
def test_multiprocess_aarch64(self):
"""
@@ -87,10 +90,13 @@ def test_multiprocess_aarch64(self):
kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora'
'/linux/releases/31/Everything/aarch64/os/images'
'/pxeboot/vmlinuz')
+ kernel_hash = '3505f2751e2833c681de78cee8dda1e49cabd2e8'
initrd_url = ('https://archives.fedoraproject.org/pub/archive/fedora'
'/linux/releases/31/Everything/aarch64/os/images'
'/pxeboot/initrd.img')
+ initrd_hash = '519a1962daf17d67fc3a9c89d45affcb399607db'
kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
'rdinit=/bin/bash console=ttyAMA0')
machine_type = 'virt,gic-version=3'
- self.do_test(kernel_url, initrd_url, kernel_command_line, machine_type)
+ self.do_test(kernel_url, kernel_hash, initrd_url, initrd_hash,
+ kernel_command_line, machine_type)
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 06/10] tests/avocado: Make fetch_asset() unconditionally require a crypto hash
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
` (4 preceding siblings ...)
2023-11-16 18:05 ` [PULL 05/10] tests/avocado/multiprocess: Add asset hashes to silence warnings Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-16 18:05 ` [PULL 07/10] tests/avocado/replay_kernel: Mark the test_x86_64_pc as flaky Thomas Huth
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi; +Cc: Philippe Mathieu-Daudé, Alex Bennée
From: Philippe Mathieu-Daudé <philmd@linaro.org>
In a perfect world we'd have reproducible tests,
but then we'd be sure we run the same binaries.
If a binary artifact isn't hashed, we have no idea
what we are running. Therefore enforce hashing for
all our artifacts.
With this change, unhashed artifacts produce:
$ avocado run tests/avocado/multiprocess.py
(1/2) tests/avocado/multiprocess.py:Multiprocess.test_multiprocess_x86_64:
ERROR: QemuBaseTest.fetch_asset() missing 1 required positional argument: 'asset_hash' (0.19 s)
Inspired-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20231115205149.90765-1-philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/avocado/avocado_qemu/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/avocado/avocado_qemu/__init__.py b/tests/avocado/avocado_qemu/__init__.py
index d71e989db6..304c428168 100644
--- a/tests/avocado/avocado_qemu/__init__.py
+++ b/tests/avocado/avocado_qemu/__init__.py
@@ -254,7 +254,7 @@ def setUp(self, bin_prefix):
self.cancel("No QEMU binary defined or found in the build tree")
def fetch_asset(self, name,
- asset_hash=None, algorithm=None,
+ asset_hash, algorithm=None,
locations=None, expire=None,
find_only=False, cancel_on_missing=True):
return super().fetch_asset(name,
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 07/10] tests/avocado/replay_kernel: Mark the test_x86_64_pc as flaky
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
` (5 preceding siblings ...)
2023-11-16 18:05 ` [PULL 06/10] tests/avocado: Make fetch_asset() unconditionally require a crypto hash Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-16 18:05 ` [PULL 08/10] tests/avocado/mem-addr-space-check: Replace assertEquals() for Python 3.12 Thomas Huth
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi; +Cc: Peter Maydell
It's failing very often, so don't run this by default anymore
until it gets fixed.
Message-ID: <20231114153019.295131-1-thuth@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/avocado/replay_kernel.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/avocado/replay_kernel.py b/tests/avocado/replay_kernel.py
index a18610542e..53cb7e5091 100644
--- a/tests/avocado/replay_kernel.py
+++ b/tests/avocado/replay_kernel.py
@@ -81,7 +81,8 @@ def run_rr(self, kernel_path, kernel_command_line, console_pattern,
logger.info('replay overhead {:.2%}'.format(t2 / t1 - 1))
class ReplayKernelNormal(ReplayKernelBase):
- @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
+
+ @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test sometimes gets stuck')
def test_x86_64_pc(self):
"""
:avocado: tags=arch:x86_64
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 08/10] tests/avocado/mem-addr-space-check: Replace assertEquals() for Python 3.12
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
` (6 preceding siblings ...)
2023-11-16 18:05 ` [PULL 07/10] tests/avocado/replay_kernel: Mark the test_x86_64_pc as flaky Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-16 18:05 ` [PULL 09/10] tests/avocado: reverse_debugging drain console to prevent hang Thomas Huth
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi; +Cc: Philippe Mathieu-Daudé, Ani Sinha
assertEquals() has been removed in Python 3.12 and should be replaced by
assertEqual(). See: https://docs.python.org/3.12/whatsnew/3.12.html#id3
Message-ID: <20231116061956.14676-1-thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Acked-by: Ani Sinha <anisinha@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/avocado/mem-addr-space-check.py | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tests/avocado/mem-addr-space-check.py b/tests/avocado/mem-addr-space-check.py
index be949222a4..363c3f12a6 100644
--- a/tests/avocado/mem-addr-space-check.py
+++ b/tests/avocado/mem-addr-space-check.py
@@ -49,7 +49,7 @@ def test_phybits_low_pse36(self):
self.vm.set_qmp_monitor(enabled=False)
self.vm.launch()
self.vm.wait()
- self.assertEquals(self.vm.exitcode(), 1, "QEMU exit code should be 1")
+ self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
def test_phybits_low_pae(self):
@@ -69,7 +69,7 @@ def test_phybits_low_pae(self):
self.vm.set_qmp_monitor(enabled=False)
self.vm.launch()
self.vm.wait()
- self.assertEquals(self.vm.exitcode(), 1, "QEMU exit code should be 1")
+ self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
def test_phybits_ok_pentium_pse36(self):
@@ -149,7 +149,7 @@ def test_phybits_low_nonpse36(self):
self.vm.set_qmp_monitor(enabled=False)
self.vm.launch()
self.vm.wait()
- self.assertEquals(self.vm.exitcode(), 1, "QEMU exit code should be 1")
+ self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
# now lets test some 64-bit CPU cases.
@@ -179,7 +179,7 @@ def test_phybits_low_tcg_q35_70_amd(self):
self.vm.set_qmp_monitor(enabled=False)
self.vm.launch()
self.vm.wait()
- self.assertEquals(self.vm.exitcode(), 1, "QEMU exit code should be 1")
+ self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
def test_phybits_low_tcg_q35_71_amd(self):
@@ -202,7 +202,7 @@ def test_phybits_low_tcg_q35_71_amd(self):
self.vm.set_qmp_monitor(enabled=False)
self.vm.launch()
self.vm.wait()
- self.assertEquals(self.vm.exitcode(), 1, "QEMU exit code should be 1")
+ self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
def test_phybits_ok_tcg_q35_70_amd(self):
@@ -288,7 +288,7 @@ def test_phybits_low_tcg_q35_71_amd_41bits(self):
self.vm.set_qmp_monitor(enabled=False)
self.vm.launch()
self.vm.wait()
- self.assertEquals(self.vm.exitcode(), 1, "QEMU exit code should be 1")
+ self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
def test_phybits_ok_tcg_q35_71_amd_41bits(self):
@@ -332,7 +332,7 @@ def test_phybits_low_tcg_q35_intel_cxl(self):
self.vm.set_qmp_monitor(enabled=False)
self.vm.launch()
self.vm.wait()
- self.assertEquals(self.vm.exitcode(), 1, "QEMU exit code should be 1")
+ self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
def test_phybits_ok_tcg_q35_intel_cxl(self):
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 09/10] tests/avocado: reverse_debugging drain console to prevent hang
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
` (7 preceding siblings ...)
2023-11-16 18:05 ` [PULL 08/10] tests/avocado/mem-addr-space-check: Replace assertEquals() for Python 3.12 Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-16 18:05 ` [PULL 10/10] tests/avocado: Enable reverse_debugging.py tests in gitlab CI Thomas Huth
2023-11-20 14:39 ` [PULL 00/10] Avocado test fixes Stefan Hajnoczi
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi; +Cc: Nicholas Piggin
From: Nicholas Piggin <npiggin@gmail.com>
Like replay_linux.py, reverse_debugging.py starts the vm with console
set but does not interact with it (e.g., with wait_for_console_pattern).
In this situation, the console should have a drainer attached so the
socket does not fill. replay_linux.py has a drainer, but it is missing
from reverse_debugging.py.
Per analysis in Link: this can cause the console socket/pipe to fill and
QEMU get stuck in qemu_chr_write_buffer, leading to strange test case
failures (ppc64 fails because it prints a lot to console in early bios).
Attaching a drainer prevents this.
Note, this commit does not fix bugs introduced by the commits referenced
in the first two Fixes: tags, but together those commits conspire to
irritate the problem and cause test case failure, which this commit
fixes.
Link: https://lore.kernel.org/qemu-devel/ZVT-bY9YOr69QTPX@redhat.com/
Fixes: 1d4796cd0083 ("python/machine: use socketpair() for console connections")
Fixes: 761a13b23946 ("tests/avocado: ppc64 reverse debugging tests for pseries and powernv")
Fixes: be52eca30978 ("tests/acceptance: add reverse debugging test")
Tested-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Message-ID: <20231116115354.228678-1-npiggin@gmail.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/avocado/reverse_debugging.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tests/avocado/reverse_debugging.py b/tests/avocado/reverse_debugging.py
index fc47874eda..128d85bc0e 100644
--- a/tests/avocado/reverse_debugging.py
+++ b/tests/avocado/reverse_debugging.py
@@ -12,6 +12,7 @@
from avocado import skipIf
from avocado_qemu import BUILD_DIR
+from avocado.utils import datadrainer
from avocado.utils import gdb
from avocado.utils import process
from avocado.utils.network.ports import find_free_port
@@ -52,6 +53,10 @@ def run_vm(self, record, shift, args, replay_path, image_path, port):
if args:
vm.add_args(*args)
vm.launch()
+ console_drainer = datadrainer.LineLogger(vm.console_socket.fileno(),
+ logger=self.log.getChild('console'),
+ stop_check=(lambda : not vm.is_running()))
+ console_drainer.start()
return vm
@staticmethod
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 10/10] tests/avocado: Enable reverse_debugging.py tests in gitlab CI
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
` (8 preceding siblings ...)
2023-11-16 18:05 ` [PULL 09/10] tests/avocado: reverse_debugging drain console to prevent hang Thomas Huth
@ 2023-11-16 18:05 ` Thomas Huth
2023-11-20 14:39 ` [PULL 00/10] Avocado test fixes Stefan Hajnoczi
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Huth @ 2023-11-16 18:05 UTC (permalink / raw)
To: qemu-devel, Stefan Hajnoczi; +Cc: Nicholas Piggin
From: Nicholas Piggin <npiggin@gmail.com>
Let's try enable reverse_debugging.py in gitlab CI.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Message-ID: <20231116115354.228678-3-npiggin@gmail.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/avocado/reverse_debugging.py | 7 -------
1 file changed, 7 deletions(-)
diff --git a/tests/avocado/reverse_debugging.py b/tests/avocado/reverse_debugging.py
index 128d85bc0e..b1410e7a69 100644
--- a/tests/avocado/reverse_debugging.py
+++ b/tests/avocado/reverse_debugging.py
@@ -205,8 +205,6 @@ def get_pc(self, g):
return self.get_reg_le(g, self.REG_PC) \
+ self.get_reg_le(g, self.REG_CS) * 0x10
- # unidentified gitlab timeout problem
- @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
def test_x86_64_pc(self):
"""
:avocado: tags=arch:x86_64
@@ -222,8 +220,6 @@ class ReverseDebugging_AArch64(ReverseDebugging):
REG_PC = 32
- # unidentified gitlab timeout problem
- @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
def test_aarch64_virt(self):
"""
:avocado: tags=arch:aarch64
@@ -246,8 +242,6 @@ class ReverseDebugging_ppc64(ReverseDebugging):
REG_PC = 0x40
- # unidentified gitlab timeout problem
- @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
def test_ppc64_pseries(self):
"""
:avocado: tags=arch:ppc64
@@ -259,7 +253,6 @@ def test_ppc64_pseries(self):
self.endian_is_le = False
self.reverse_debugging()
- @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
def test_ppc64_powernv(self):
"""
:avocado: tags=arch:ppc64
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PULL 00/10] Avocado test fixes
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
` (9 preceding siblings ...)
2023-11-16 18:05 ` [PULL 10/10] tests/avocado: Enable reverse_debugging.py tests in gitlab CI Thomas Huth
@ 2023-11-20 14:39 ` Stefan Hajnoczi
10 siblings, 0 replies; 12+ messages in thread
From: Stefan Hajnoczi @ 2023-11-20 14:39 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Stefan Hajnoczi
[-- Attachment #1: Type: text/plain, Size: 115 bytes --]
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/8.2 for any user-visible changes.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2023-11-20 14:40 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-16 18:05 [PULL 00/10] Avocado test fixes Thomas Huth
2023-11-16 18:05 ` [PULL 01/10] tests/avocado: Replace assertEquals() for Python 3.12 compatibility Thomas Huth
2023-11-16 18:05 ` [PULL 02/10] tests/avocado: Replace assertRegexpMatches() " Thomas Huth
2023-11-16 18:05 ` [PULL 03/10] tests/avocado/virtio-gpu: Fix test_vhost_user_vga_virgl for edid support Thomas Huth
2023-11-16 18:05 ` [PULL 04/10] tests/avocado/intel_iommu: Add asset hashes to avoid warnings Thomas Huth
2023-11-16 18:05 ` [PULL 05/10] tests/avocado/multiprocess: Add asset hashes to silence warnings Thomas Huth
2023-11-16 18:05 ` [PULL 06/10] tests/avocado: Make fetch_asset() unconditionally require a crypto hash Thomas Huth
2023-11-16 18:05 ` [PULL 07/10] tests/avocado/replay_kernel: Mark the test_x86_64_pc as flaky Thomas Huth
2023-11-16 18:05 ` [PULL 08/10] tests/avocado/mem-addr-space-check: Replace assertEquals() for Python 3.12 Thomas Huth
2023-11-16 18:05 ` [PULL 09/10] tests/avocado: reverse_debugging drain console to prevent hang Thomas Huth
2023-11-16 18:05 ` [PULL 10/10] tests/avocado: Enable reverse_debugging.py tests in gitlab CI Thomas Huth
2023-11-20 14:39 ` [PULL 00/10] Avocado test fixes Stefan Hajnoczi
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.