mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 14:53:54 -06:00
tests/functional: Add a decorator for skipping long running tests
Some tests have a very long runtime and might run into timeout issues e.g. when QEMU has been compiled with --enable-debug. Add a decorator for marking them more easily. Rename the corresponding environment variable to be more in sync with the other QEMU_TEST_ALLOW_* switches that we already have, and add a paragraph about it in the documentation. Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Message-ID: <20250128152839.184599-2-thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
fc9fea48be
commit
4ae633b012
6 changed files with 31 additions and 13 deletions
|
@ -351,5 +351,13 @@ the code snippet below:
|
|||
Tests should not live in this state forever and should either be fixed
|
||||
or eventually removed.
|
||||
|
||||
QEMU_TEST_ALLOW_SLOW
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
Tests that have a very long runtime and might run into timeout issues
|
||||
e.g. if the QEMU binary has been compiled with debugging options enabled.
|
||||
To avoid these timeout issues by default and to save some precious CPU
|
||||
cycles during normal testing, such tests are disabled by default unless
|
||||
the QEMU_TEST_ALLOW_SLOW environment variable has been set.
|
||||
|
||||
|
||||
.. _unittest: https://docs.python.org/3/library/unittest.html
|
||||
|
|
|
@ -14,7 +14,7 @@ from .cmd import is_readable_executable_file, \
|
|||
from .testcase import QemuBaseTest, QemuUserTest, QemuSystemTest
|
||||
from .linuxkernel import LinuxKernelTest
|
||||
from .decorators import skipIfMissingCommands, skipIfNotMachine, \
|
||||
skipFlakyTest, skipUntrustedTest, skipBigDataTest, \
|
||||
skipFlakyTest, skipUntrustedTest, skipBigDataTest, skipSlowTest, \
|
||||
skipIfMissingImports
|
||||
from .archive import archive_extract
|
||||
from .uncompress import uncompress
|
||||
|
|
|
@ -86,6 +86,20 @@ def skipBigDataTest():
|
|||
return skipUnless(os.getenv('QEMU_TEST_ALLOW_LARGE_STORAGE'),
|
||||
'Test requires large host storage space')
|
||||
|
||||
'''
|
||||
Decorator to skip execution of tests which have a really long
|
||||
runtime (and might e.g. time out if QEMU has been compiled with
|
||||
debugging enabled) unless the $QEMU_TEST_ALLOW_SLOW
|
||||
environment variable is set
|
||||
|
||||
Example:
|
||||
|
||||
@skipSlowTest()
|
||||
'''
|
||||
def skipSlowTest():
|
||||
return skipUnless(os.getenv('QEMU_TEST_ALLOW_SLOW'),
|
||||
'Test has a very long runtime and might time out')
|
||||
|
||||
'''
|
||||
Decorator to skip execution of a test if the list
|
||||
of python imports is not available.
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
import os
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import QemuSystemTest, Asset, skipSlowTest
|
||||
from qemu_test import wait_for_console_pattern
|
||||
from unittest import skipUnless
|
||||
from test_aarch64_sbsaref import fetch_firmware
|
||||
|
@ -53,8 +53,7 @@ class Aarch64SbsarefAlpine(QemuSystemTest):
|
|||
def test_sbsaref_alpine_linux_max_pauth_impdef(self):
|
||||
self.boot_alpine_linux("max,pauth-impdef=on")
|
||||
|
||||
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'),
|
||||
'Test might timeout due to PAuth emulation')
|
||||
@skipSlowTest() # Test might timeout due to PAuth emulation
|
||||
def test_sbsaref_alpine_linux_max(self):
|
||||
self.boot_alpine_linux("max")
|
||||
|
||||
|
|
|
@ -10,9 +10,8 @@
|
|||
|
||||
import os
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import QemuSystemTest, Asset, skipSlowTest
|
||||
from qemu_test import wait_for_console_pattern
|
||||
from unittest import skipUnless
|
||||
from test_aarch64_sbsaref import fetch_firmware
|
||||
|
||||
|
||||
|
@ -50,13 +49,11 @@ class Aarch64SbsarefFreeBSD(QemuSystemTest):
|
|||
def test_sbsaref_freebsd14_max_pauth_off(self):
|
||||
self.boot_freebsd14("max,pauth=off")
|
||||
|
||||
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'),
|
||||
'Test might timeout due to PAuth emulation')
|
||||
@skipSlowTest() # Test might timeout due to PAuth emulation
|
||||
def test_sbsaref_freebsd14_max_pauth_impdef(self):
|
||||
self.boot_freebsd14("max,pauth-impdef=on")
|
||||
|
||||
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'),
|
||||
'Test might timeout due to PAuth emulation')
|
||||
@skipSlowTest() # Test might timeout due to PAuth emulation
|
||||
def test_sbsaref_freebsd14_max(self):
|
||||
self.boot_freebsd14("max")
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
import os
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pattern
|
||||
from qemu_test import interrupt_interactive_console_until_pattern
|
||||
from unittest import skipUnless
|
||||
from qemu_test import interrupt_interactive_console_until_pattern, skipSlowTest
|
||||
|
||||
|
||||
class EmcraftSf2Machine(LinuxKernelTest):
|
||||
|
||||
|
@ -32,7 +32,7 @@ class EmcraftSf2Machine(LinuxKernelTest):
|
|||
'20200711-gsj-qemu-0/nuvoton-npcm730-gsj.dtb'),
|
||||
'3249b2da787d4b9ad4e61f315b160abfceb87b5e1895a7ce898ce7f40c8d4045')
|
||||
|
||||
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'), 'Test might timeout')
|
||||
@skipSlowTest()
|
||||
def test_arm_quanta_gsj(self):
|
||||
self.set_machine('quanta-gsj')
|
||||
image_path = self.uncompress(self.ASSET_IMAGE, format='gz')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue