mirror of https://github.com/xemu-project/xemu.git
tests: Use configure-provided pyvenv for tests
This patch changes how the avocado tests are provided, ever so slightly. Instead of creating a new testing venv, use the configure-provided 'pyvenv' instead, and install optional packages into that. Signed-off-by: John Snow <jsnow@redhat.com> Message-Id: <20230511035435.734312-20-jsnow@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
aab9512756
commit
9c6692db55
|
@ -103,7 +103,7 @@ crash-test-debian:
|
||||||
script:
|
script:
|
||||||
- cd build
|
- cd build
|
||||||
- make NINJA=":" check-venv
|
- make NINJA=":" check-venv
|
||||||
- tests/venv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
|
- pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
|
||||||
|
|
||||||
build-system-fedora:
|
build-system-fedora:
|
||||||
extends:
|
extends:
|
||||||
|
@ -146,8 +146,8 @@ crash-test-fedora:
|
||||||
script:
|
script:
|
||||||
- cd build
|
- cd build
|
||||||
- make NINJA=":" check-venv
|
- make NINJA=":" check-venv
|
||||||
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
|
- pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
|
||||||
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
|
- pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
|
||||||
|
|
||||||
build-system-centos:
|
build-system-centos:
|
||||||
extends:
|
extends:
|
||||||
|
|
|
@ -61,19 +61,19 @@ Under ``tests/avocado/`` as the root we have:
|
||||||
::
|
::
|
||||||
|
|
||||||
$ make check-venv (needed only the first time to create the venv)
|
$ make check-venv (needed only the first time to create the venv)
|
||||||
$ ./tests/venv/bin/avocado run -t acpi tests/avocado
|
$ ./pyvenv/bin/avocado run -t acpi tests/avocado
|
||||||
|
|
||||||
The above will run all acpi avocado tests including this one.
|
The above will run all acpi avocado tests including this one.
|
||||||
In order to run the individual tests, perform the following:
|
In order to run the individual tests, perform the following:
|
||||||
::
|
::
|
||||||
|
|
||||||
$ ./tests/venv/bin/avocado run tests/avocado/acpi-bits.py --tap -
|
$ ./pyvenv/bin/avocado run tests/avocado/acpi-bits.py --tap -
|
||||||
|
|
||||||
The above will produce output in tap format. You can omit "--tap -" in the
|
The above will produce output in tap format. You can omit "--tap -" in the
|
||||||
end and it will produce output like the following:
|
end and it will produce output like the following:
|
||||||
::
|
::
|
||||||
|
|
||||||
$ ./tests/venv/bin/avocado run tests/avocado/acpi-bits.py
|
$ ./pyvenv/bin/avocado run tests/avocado/acpi-bits.py
|
||||||
Fetching asset from tests/avocado/acpi-bits.py:AcpiBitsTest.test_acpi_smbios_bits
|
Fetching asset from tests/avocado/acpi-bits.py:AcpiBitsTest.test_acpi_smbios_bits
|
||||||
JOB ID : eab225724da7b64c012c65705dc2fa14ab1defef
|
JOB ID : eab225724da7b64c012c65705dc2fa14ab1defef
|
||||||
JOB LOG : /home/anisinha/avocado/job-results/job-2022-10-10T17.58-eab2257/job.log
|
JOB LOG : /home/anisinha/avocado/job-results/job-2022-10-10T17.58-eab2257/job.log
|
||||||
|
|
|
@ -888,9 +888,9 @@ You can run the avocado tests simply by executing:
|
||||||
|
|
||||||
make check-avocado
|
make check-avocado
|
||||||
|
|
||||||
This involves the automatic creation of Python virtual environment
|
This involves the automatic installation, from PyPI, of all the
|
||||||
within the build tree (at ``tests/venv``) which will have all the
|
necessary avocado-framework dependencies into the QEMU venv within the
|
||||||
right dependencies, and will save tests results also within the
|
build tree (at ``./pyvenv``). Test results are also saved within the
|
||||||
build tree (at ``tests/results``).
|
build tree (at ``tests/results``).
|
||||||
|
|
||||||
Note: the build environment must be using a Python 3 stack, and have
|
Note: the build environment must be using a Python 3 stack, and have
|
||||||
|
@ -947,7 +947,7 @@ may be invoked by running:
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
tests/venv/bin/avocado run $OPTION1 $OPTION2 tests/avocado/
|
pyvenv/bin/avocado run $OPTION1 $OPTION2 tests/avocado/
|
||||||
|
|
||||||
Note that if ``make check-avocado`` was not executed before, it is
|
Note that if ``make check-avocado`` was not executed before, it is
|
||||||
possible to create the Python virtual environment with the dependencies
|
possible to create the Python virtual environment with the dependencies
|
||||||
|
@ -962,20 +962,20 @@ a test file. To run tests from a single file within the build tree, use:
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
tests/venv/bin/avocado run tests/avocado/$TESTFILE
|
pyvenv/bin/avocado run tests/avocado/$TESTFILE
|
||||||
|
|
||||||
To run a single test within a test file, use:
|
To run a single test within a test file, use:
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
tests/venv/bin/avocado run tests/avocado/$TESTFILE:$TESTCLASS.$TESTNAME
|
pyvenv/bin/avocado run tests/avocado/$TESTFILE:$TESTCLASS.$TESTNAME
|
||||||
|
|
||||||
Valid test names are visible in the output from any previous execution
|
Valid test names are visible in the output from any previous execution
|
||||||
of Avocado or ``make check-avocado``, and can also be queried using:
|
of Avocado or ``make check-avocado``, and can also be queried using:
|
||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
tests/venv/bin/avocado list tests/avocado
|
pyvenv/bin/avocado list tests/avocado
|
||||||
|
|
||||||
Manual Installation
|
Manual Installation
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# KVM and x86_64, or tests that are generic enough to be valid for all
|
# KVM and x86_64, or tests that are generic enough to be valid for all
|
||||||
# targets. Such a test list can be generated with:
|
# targets. Such a test list can be generated with:
|
||||||
#
|
#
|
||||||
# ./tests/venv/bin/avocado list --filter-by-tags-include-empty \
|
# ./pyvenv/bin/avocado list --filter-by-tags-include-empty \
|
||||||
# --filter-by-tags-include-empty-key -t accel:kvm,arch:x86_64 \
|
# --filter-by-tags-include-empty-key -t accel:kvm,arch:x86_64 \
|
||||||
# tests/avocado/
|
# tests/avocado/
|
||||||
#
|
#
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
# - tests/avocado/virtio_check_params.py:VirtioMaxSegSettingsCheck.test_machine_types
|
# - tests/avocado/virtio_check_params.py:VirtioMaxSegSettingsCheck.test_machine_types
|
||||||
#
|
#
|
||||||
make get-vm-images
|
make get-vm-images
|
||||||
./tests/venv/bin/avocado run \
|
./pyvenv/bin/avocado run \
|
||||||
--job-results-dir=tests/results/ \
|
--job-results-dir=tests/results/ \
|
||||||
tests/avocado/boot_linux.py:BootLinuxX8664.test_pc_i440fx_kvm \
|
tests/avocado/boot_linux.py:BootLinuxX8664.test_pc_i440fx_kvm \
|
||||||
tests/avocado/boot_linux.py:BootLinuxX8664.test_pc_q35_kvm \
|
tests/avocado/boot_linux.py:BootLinuxX8664.test_pc_q35_kvm \
|
||||||
|
|
|
@ -43,7 +43,7 @@ except ModuleNotFoundError as exc:
|
||||||
print(f"Module '{exc.name}' not found.")
|
print(f"Module '{exc.name}' not found.")
|
||||||
print(" Try 'make check-venv' from your build directory,")
|
print(" Try 'make check-venv' from your build directory,")
|
||||||
print(" and then one way to run this script is like so:")
|
print(" and then one way to run this script is like so:")
|
||||||
print(f' > $builddir/tests/venv/bin/python3 "{path}"')
|
print(f' > $builddir/pyvenv/bin/python3 "{path}"')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
logger = logging.getLogger('device-crash-test')
|
logger = logging.getLogger('device-crash-test')
|
||||||
|
|
|
@ -89,7 +89,8 @@ distclean-tcg: $(DISTCLEAN_TCG_TARGET_RULES)
|
||||||
# Build up our target list from the filtered list of ninja targets
|
# Build up our target list from the filtered list of ninja targets
|
||||||
TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, $(ninja-targets)))
|
TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, $(ninja-targets)))
|
||||||
|
|
||||||
TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv
|
TESTS_VENV_DIR=$(BUILD_DIR)/pyvenv
|
||||||
|
TESTS_VENV_TOKEN=$(BUILD_DIR)/pyvenv/tests.group
|
||||||
TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
|
TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
|
||||||
TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results
|
TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results
|
||||||
TESTS_PYTHON=$(TESTS_VENV_DIR)/bin/python3
|
TESTS_PYTHON=$(TESTS_VENV_DIR)/bin/python3
|
||||||
|
@ -111,8 +112,7 @@ quiet-venv-pip = $(quiet-@)$(call quiet-command-run, \
|
||||||
$(TESTS_PYTHON) -m pip -q --disable-pip-version-check $1, \
|
$(TESTS_PYTHON) -m pip -q --disable-pip-version-check $1, \
|
||||||
"VENVPIP","$1")
|
"VENVPIP","$1")
|
||||||
|
|
||||||
$(TESTS_VENV_DIR): $(TESTS_VENV_REQ)
|
$(TESTS_VENV_TOKEN): $(TESTS_VENV_REQ)
|
||||||
$(call quiet-command, $(PYTHON) -m venv $@, VENV, $@)
|
|
||||||
$(call quiet-venv-pip,install -e "$(SRC_PATH)/python/")
|
$(call quiet-venv-pip,install -e "$(SRC_PATH)/python/")
|
||||||
$(call quiet-venv-pip,install -r $(TESTS_VENV_REQ))
|
$(call quiet-venv-pip,install -r $(TESTS_VENV_REQ))
|
||||||
$(call quiet-command, touch $@)
|
$(call quiet-command, touch $@)
|
||||||
|
@ -121,7 +121,7 @@ $(TESTS_RESULTS_DIR):
|
||||||
$(call quiet-command, mkdir -p $@, \
|
$(call quiet-command, mkdir -p $@, \
|
||||||
MKDIR, $@)
|
MKDIR, $@)
|
||||||
|
|
||||||
check-venv: $(TESTS_VENV_DIR)
|
check-venv: $(TESTS_VENV_TOKEN)
|
||||||
|
|
||||||
FEDORA_31_ARCHES_TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGETS)))
|
FEDORA_31_ARCHES_TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGETS)))
|
||||||
FEDORA_31_ARCHES_CANDIDATES=$(patsubst ppc64,ppc64le,$(FEDORA_31_ARCHES_TARGETS))
|
FEDORA_31_ARCHES_CANDIDATES=$(patsubst ppc64,ppc64le,$(FEDORA_31_ARCHES_TARGETS))
|
||||||
|
@ -167,7 +167,7 @@ check:
|
||||||
check-build: run-ninja
|
check-build: run-ninja
|
||||||
|
|
||||||
check-clean:
|
check-clean:
|
||||||
rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR)
|
rm -rf $(TESTS_RESULTS_DIR)
|
||||||
|
|
||||||
clean: check-clean clean-tcg
|
clean: check-clean clean-tcg
|
||||||
distclean: distclean-tcg
|
distclean: distclean-tcg
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
# Add Python module requirements, one per line, to be installed
|
# Add Python module requirements, one per line, to be installed
|
||||||
# in the tests/venv Python virtual environment. For more info,
|
# in the qemu build_dir/pyvenv Python virtual environment. For more info,
|
||||||
# refer to: https://pip.pypa.io/en/stable/user_guide/#id1
|
# refer to: https://pip.pypa.io/en/stable/user_guide/#id1
|
||||||
# Note that qemu.git/python/ is always implicitly installed.
|
#
|
||||||
|
# Note that qemu.git/python/ is implicitly installed to this venv when
|
||||||
|
# 'make check-venv' is run, and will persist until configure is run
|
||||||
|
# again.
|
||||||
avocado-framework==101.0
|
avocado-framework==101.0
|
||||||
pycdlib==1.11.0
|
pycdlib==1.11.0
|
||||||
|
|
Loading…
Reference in New Issue