[PATCH v2] tests/functional/x86_64: Limit the memlock test to Linux hosts

Thomas Huth posted 1 patch 2 weeks, 2 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260121111140.99482-1-thuth@redhat.com
Maintainers: Thomas Huth <thuth@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, "Daniel P. Berrangé" <berrange@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Zhao Liu <zhao1.liu@intel.com>
tests/functional/qemu_test/__init__.py   |  4 ++--
tests/functional/qemu_test/decorators.py | 12 ++++++++++++
tests/functional/x86_64/test_memlock.py  |  3 ++-
3 files changed, 16 insertions(+), 3 deletions(-)
[PATCH v2] tests/functional/x86_64: Limit the memlock test to Linux hosts
Posted by Thomas Huth 2 weeks, 2 days ago
From: Thomas Huth <thuth@redhat.com>

The memlock test analyzes /proc/*/status files and expects the layout
from Linux in there. However, these files also exist on NetBSD hosts
with a completely different layout, causing this test to fail. Thus
limit the test to Linux hosts now. We already have a decorator to
skip a test if it is running on a certain host system, but in this
case, we rather want to skip if we are not running on a specific
host system, so introduce a new @skipUnlessOperatingSystem decorator
for this job.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 v2: Check via a decorator, not via meson.build file

 tests/functional/qemu_test/__init__.py   |  4 ++--
 tests/functional/qemu_test/decorators.py | 12 ++++++++++++
 tests/functional/x86_64/test_memlock.py  |  3 ++-
 3 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py
index 320193591b2..03e5c73d39d 100644
--- a/tests/functional/qemu_test/__init__.py
+++ b/tests/functional/qemu_test/__init__.py
@@ -15,8 +15,8 @@
 from .linuxkernel import LinuxKernelTest
 from .decorators import skipIfMissingCommands, skipIfNotMachine, \
     skipFlakyTest, skipUntrustedTest, skipBigDataTest, skipSlowTest, \
-    skipIfMissingImports, skipIfOperatingSystem, skipLockedMemoryTest, \
-    skipIfMissingEnv
+    skipIfMissingImports, skipIfOperatingSystem, skipUnlessOperatingSystem, \
+    skipLockedMemoryTest, skipIfMissingEnv
 from .archive import archive_extract
 from .uncompress import uncompress
 from .gdb import GDB
diff --git a/tests/functional/qemu_test/decorators.py b/tests/functional/qemu_test/decorators.py
index 807418359ab..fcf236ecfdf 100644
--- a/tests/functional/qemu_test/decorators.py
+++ b/tests/functional/qemu_test/decorators.py
@@ -57,6 +57,18 @@ def skipIfOperatingSystem(*args):
                   'running on an OS (%s) that is not able to run this test' %
                   ", ".join(args))
 
+def skipUnlessOperatingSystem(*args):
+    '''
+    Decorator to skip execution of a test if the current host
+    operating system does not match one of the allowed ones.
+    Example:
+
+      @skipUnlessOperatingSystem("Linux", "Darwin")
+    '''
+    return skipUnless(platform.system() in args,
+                  'not running on one of the required operating systems (%s)' %
+                  ", ".join(args))
+
 def skipIfNotMachine(*args):
     '''
     Decorator to skip execution of a test if the current
diff --git a/tests/functional/x86_64/test_memlock.py b/tests/functional/x86_64/test_memlock.py
index f970a2c3095..d88843ab5f9 100755
--- a/tests/functional/x86_64/test_memlock.py
+++ b/tests/functional/x86_64/test_memlock.py
@@ -14,12 +14,13 @@
 from typing import Dict
 
 from qemu_test import QemuSystemTest
-from qemu_test import skipLockedMemoryTest
+from qemu_test import skipLockedMemoryTest, skipUnlessOperatingSystem
 
 
 STATUS_VALUE_PATTERN = re.compile(r'^(\w+):\s+(\d+) kB', re.MULTILINE)
 
 
+@skipUnlessOperatingSystem('Linux')
 @skipLockedMemoryTest(2_097_152)  # 2GB
 class MemlockTest(QemuSystemTest):
     """
-- 
2.52.0
Re: [PATCH v2] tests/functional/x86_64: Limit the memlock test to Linux hosts
Posted by Zhao Liu 2 weeks, 2 days ago
On Wed, Jan 21, 2026 at 12:11:40PM +0100, Thomas Huth wrote:
> Date: Wed, 21 Jan 2026 12:11:40 +0100
> From: Thomas Huth <thuth@redhat.com>
> Subject: [PATCH v2] tests/functional/x86_64: Limit the memlock test to
>  Linux hosts
> 
> From: Thomas Huth <thuth@redhat.com>
> 
> The memlock test analyzes /proc/*/status files and expects the layout
> from Linux in there. However, these files also exist on NetBSD hosts
> with a completely different layout, causing this test to fail. Thus
> limit the test to Linux hosts now. We already have a decorator to
> skip a test if it is running on a certain host system, but in this
> case, we rather want to skip if we are not running on a specific
> host system, so introduce a new @skipUnlessOperatingSystem decorator
> for this job.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  v2: Check via a decorator, not via meson.build file

LGTM,

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Re: [PATCH v2] tests/functional/x86_64: Limit the memlock test to Linux hosts
Posted by Daniel P. Berrangé 2 weeks, 2 days ago
On Wed, Jan 21, 2026 at 12:11:40PM +0100, Thomas Huth wrote:
> From: Thomas Huth <thuth@redhat.com>
> 
> The memlock test analyzes /proc/*/status files and expects the layout
> from Linux in there. However, these files also exist on NetBSD hosts
> with a completely different layout, causing this test to fail. Thus
> limit the test to Linux hosts now. We already have a decorator to
> skip a test if it is running on a certain host system, but in this
> case, we rather want to skip if we are not running on a specific
> host system, so introduce a new @skipUnlessOperatingSystem decorator
> for this job.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  v2: Check via a decorator, not via meson.build file
> 
>  tests/functional/qemu_test/__init__.py   |  4 ++--
>  tests/functional/qemu_test/decorators.py | 12 ++++++++++++
>  tests/functional/x86_64/test_memlock.py  |  3 ++-
>  3 files changed, 16 insertions(+), 3 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|