Markus Armbruster | 3b8593e | 2019-05-28 10:23:07 +0200 | [diff] [blame] | 1 | # -*- Mode: makefile -*- |
Fam Zheng | e45eaef | 2017-08-10 16:50:25 +0800 | [diff] [blame] | 2 | |
| 3 | .PHONY: check-help |
| 4 | check-help: |
| 5 | @echo "Regression testing targets:" |
Dario Faggioli | d426ff9 | 2022-05-27 17:30:54 +0200 | [diff] [blame] | 6 | @echo " $(MAKE) check Run block, qapi-schema, unit, softfloat, qtest and decodetree tests" |
| 7 | @echo " $(MAKE) bench Run speed tests" |
Cleber Rosa | 54f96b4 | 2018-11-09 10:07:10 -0500 | [diff] [blame] | 8 | @echo |
Paolo Bonzini | 8e19c00 | 2021-03-10 17:46:12 +0100 | [diff] [blame] | 9 | @echo "Individual test suites:" |
Dario Faggioli | d426ff9 | 2022-05-27 17:30:54 +0200 | [diff] [blame] | 10 | @echo " $(MAKE) check-qtest-TARGET Run qtest tests for given target" |
| 11 | @echo " $(MAKE) check-qtest Run qtest tests" |
| 12 | @echo " $(MAKE) check-unit Run qobject tests" |
| 13 | @echo " $(MAKE) check-qapi-schema Run QAPI schema tests" |
| 14 | @echo " $(MAKE) check-block Run block tests" |
Alex Bennée | 47e3424 | 2021-02-02 13:39:57 +0000 | [diff] [blame] | 15 | ifneq ($(filter $(all-check-targets), check-softfloat),) |
Dario Faggioli | d426ff9 | 2022-05-27 17:30:54 +0200 | [diff] [blame] | 16 | @echo " $(MAKE) check-tcg Run TCG tests" |
| 17 | @echo " $(MAKE) check-softfloat Run FPU emulation tests" |
Philippe Mathieu-Daudé | ca6db46 | 2020-05-22 19:25:00 +0200 | [diff] [blame] | 18 | endif |
Dario Faggioli | d426ff9 | 2022-05-27 17:30:54 +0200 | [diff] [blame] | 19 | @echo " $(MAKE) check-avocado Run avocado (integration) tests for currently configured targets" |
Cleber Rosa | 54f96b4 | 2018-11-09 10:07:10 -0500 | [diff] [blame] | 20 | @echo |
Dario Faggioli | d426ff9 | 2022-05-27 17:30:54 +0200 | [diff] [blame] | 21 | @echo " $(MAKE) check-report.junit.xml Generates an aggregated XML test report" |
| 22 | @echo " $(MAKE) check-venv Creates a Python venv for tests" |
| 23 | @echo " $(MAKE) check-clean Clean the tests and related data" |
Fam Zheng | e45eaef | 2017-08-10 16:50:25 +0800 | [diff] [blame] | 24 | @echo |
Alex Bennée | a6eeac3 | 2020-07-01 14:56:51 +0100 | [diff] [blame] | 25 | @echo "The following are useful for CI builds" |
Dario Faggioli | d426ff9 | 2022-05-27 17:30:54 +0200 | [diff] [blame] | 26 | @echo " $(MAKE) check-build Build most test binaries" |
| 27 | @echo " $(MAKE) get-vm-images Downloads all images used by avocado tests, according to configured targets (~350 MB each, 1.5 GB max)" |
Cleber Rosa | 4ec49f0 | 2020-03-17 10:16:54 -0400 | [diff] [blame] | 28 | @echo |
Fam Zheng | e45eaef | 2017-08-10 16:50:25 +0800 | [diff] [blame] | 29 | @echo |
| 30 | @echo "The variable SPEED can be set to control the gtester speed setting." |
Philippe Mathieu-Daudé | b98a3ba | 2017-11-21 06:55:10 -0300 | [diff] [blame] | 31 | @echo "Default options are -k and (for $(MAKE) V=1) --verbose; they can be" |
Fam Zheng | e45eaef | 2017-08-10 16:50:25 +0800 | [diff] [blame] | 32 | @echo "changed with variable GTESTER_OPTIONS." |
| 33 | |
| 34 | ifneq ($(wildcard config-host.mak),) |
Kevin Wolf | 8959449 | 2012-03-08 12:29:00 +0100 | [diff] [blame] | 35 | export SRC_PATH |
| 36 | |
Paolo Bonzini | b93b63f | 2012-03-28 15:42:01 +0200 | [diff] [blame] | 37 | SPEED = quick |
Anthony Liguori | dbfe06c | 2012-01-10 13:10:43 -0600 | [diff] [blame] | 38 | |
Paolo Bonzini | f2d5935 | 2022-04-19 10:10:10 +0100 | [diff] [blame] | 39 | -include tests/tcg/Makefile.prereqs |
Paolo Bonzini | f2d5935 | 2022-04-19 10:10:10 +0100 | [diff] [blame] | 40 | tests/tcg/Makefile.prereqs: config-host.mak |
| 41 | |
Alex Bennée | c401c05 | 2021-02-02 13:39:58 +0000 | [diff] [blame] | 42 | # Per guest TCG tests |
Paolo Bonzini | 5377a10 | 2022-04-19 10:10:11 +0100 | [diff] [blame] | 43 | BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(TCG_TESTS_TARGETS)) |
| 44 | CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TCG_TESTS_TARGETS)) |
| 45 | RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TCG_TESTS_TARGETS)) |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 46 | |
Paolo Bonzini | 5377a10 | 2022-04-19 10:10:11 +0100 | [diff] [blame] | 47 | $(foreach TARGET,$(TCG_TESTS_TARGETS), \ |
Paolo Bonzini | f2d5935 | 2022-04-19 10:10:10 +0100 | [diff] [blame] | 48 | $(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak)) |
Alex Bennée | 1a7fab9 | 2018-06-08 12:12:46 +0100 | [diff] [blame] | 49 | |
Paolo Bonzini | eebf199 | 2022-04-19 10:10:12 +0100 | [diff] [blame] | 50 | .PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%) |
| 51 | $(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak |
| 52 | $(call quiet-command, \ |
| 53 | $(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \ |
| 54 | DOCKER_SCRIPT="$(DOCKER_SCRIPT)" \ |
| 55 | TARGET="$*" SRC_PATH="$(SRC_PATH)", \ |
| 56 | "BUILD","$* guest-tests") |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 57 | |
Paolo Bonzini | eebf199 | 2022-04-19 10:10:12 +0100 | [diff] [blame] | 58 | .PHONY: $(TCG_TESTS_TARGETS:%=run-tcg-tests-%) |
Paolo Bonzini | 9580887 | 2022-05-27 16:35:45 +0100 | [diff] [blame] | 59 | $(TCG_TESTS_TARGETS:%=run-tcg-tests-%): run-tcg-tests-%: build-tcg-tests-% |
Paolo Bonzini | eebf199 | 2022-04-19 10:10:12 +0100 | [diff] [blame] | 60 | $(call quiet-command, \ |
| 61 | $(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \ |
| 62 | TARGET="$*" SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run, \ |
| 63 | "RUN", "$* guest-tests") |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 64 | |
Paolo Bonzini | eebf199 | 2022-04-19 10:10:12 +0100 | [diff] [blame] | 65 | .PHONY: $(TCG_TESTS_TARGETS:%=clean-tcg-tests-%) |
| 66 | $(TCG_TESTS_TARGETS:%=clean-tcg-tests-%): clean-tcg-tests-%: |
| 67 | $(call quiet-command, \ |
| 68 | $(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \ |
| 69 | TARGET="$*" SRC_PATH="$(SRC_PATH)" clean, \ |
| 70 | "CLEAN", "$* guest-tests") |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 71 | |
| 72 | .PHONY: build-tcg |
| 73 | build-tcg: $(BUILD_TCG_TARGET_RULES) |
| 74 | |
| 75 | .PHONY: check-tcg |
Paolo Bonzini | 9580887 | 2022-05-27 16:35:45 +0100 | [diff] [blame] | 76 | .ninja-goals.check-tcg = all $(if $(CONFIG_PLUGIN),test-plugins) |
Alex Bennée | df2bb38 | 2019-02-28 10:15:29 +0000 | [diff] [blame] | 77 | check-tcg: $(RUN_TCG_TARGET_RULES) |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 78 | |
| 79 | .PHONY: clean-tcg |
| 80 | clean-tcg: $(CLEAN_TCG_TARGET_RULES) |
Kevin Wolf | b8c6f29 | 2012-03-09 13:37:40 +0100 | [diff] [blame] | 81 | |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 82 | # Python venv for running tests |
| 83 | |
Willian Rampazzo | 333d703 | 2021-11-05 12:53:53 -0300 | [diff] [blame] | 84 | .PHONY: check-venv check-avocado check-acceptance check-acceptance-deprecated-warning |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 85 | |
Paolo Bonzini | 5377a10 | 2022-04-19 10:10:11 +0100 | [diff] [blame] | 86 | # Build up our target list from the filtered list of ninja targets |
| 87 | TARGETS=$(patsubst libqemu-%.fa, %, $(filter libqemu-%.fa, $(ninja-targets))) |
| 88 | |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 89 | TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv |
| 90 | TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 91 | TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results |
John Snow | aa19dd3 | 2022-05-25 20:09:15 -0400 | [diff] [blame] | 92 | TESTS_PYTHON=$(TESTS_VENV_DIR)/bin/python3 |
Willian Rampazzo | 94c7146 | 2021-09-23 13:11:41 -0300 | [diff] [blame] | 93 | ifndef AVOCADO_TESTS |
Willian Rampazzo | bbbd9b6 | 2021-11-05 12:53:54 -0300 | [diff] [blame] | 94 | AVOCADO_TESTS=tests/avocado |
Willian Rampazzo | 94c7146 | 2021-09-23 13:11:41 -0300 | [diff] [blame] | 95 | endif |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 96 | # Controls the output generated by Avocado when running tests. |
| 97 | # Any number of command separated loggers are accepted. For more |
| 98 | # information please refer to "avocado --help". |
Cleber Rosa | 59692a1 | 2019-03-12 13:18:05 -0400 | [diff] [blame] | 99 | AVOCADO_SHOW=app |
Willian Rampazzo | 2302279 | 2021-09-23 13:11:39 -0300 | [diff] [blame] | 100 | ifndef AVOCADO_TAGS |
| 101 | AVOCADO_CMDLINE_TAGS=$(patsubst %-softmmu,-t arch:%, \ |
| 102 | $(filter %-softmmu,$(TARGETS))) |
| 103 | else |
| 104 | AVOCADO_CMDLINE_TAGS=$(addprefix -t , $(AVOCADO_TAGS)) |
| 105 | endif |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 106 | |
John Snow | 5a6f119 | 2022-05-25 20:09:17 -0400 | [diff] [blame] | 107 | quiet-venv-pip = $(quiet-@)$(call quiet-command-run, \ |
| 108 | $(TESTS_PYTHON) -m pip -q --disable-pip-version-check $1, \ |
| 109 | "VENVPIP","$1") |
| 110 | |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 111 | $(TESTS_VENV_DIR): $(TESTS_VENV_REQ) |
John Snow | 5a6f119 | 2022-05-25 20:09:17 -0400 | [diff] [blame] | 112 | $(call quiet-command, $(PYTHON) -m venv $@, VENV, $@) |
John Snow | 0e7647a | 2022-05-25 20:09:18 -0400 | [diff] [blame] | 113 | $(call quiet-venv-pip,install -e "$(SRC_PATH)/python/") |
John Snow | 5a6f119 | 2022-05-25 20:09:17 -0400 | [diff] [blame] | 114 | $(call quiet-venv-pip,install -r $(TESTS_VENV_REQ)) |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 115 | $(call quiet-command, touch $@) |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 116 | |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 117 | $(TESTS_RESULTS_DIR): |
| 118 | $(call quiet-command, mkdir -p $@, \ |
| 119 | MKDIR, $@) |
| 120 | |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 121 | check-venv: $(TESTS_VENV_DIR) |
| 122 | |
Cleber Rosa | 93fca0f | 2021-02-25 18:21:21 -0500 | [diff] [blame] | 123 | FEDORA_31_ARCHES_TARGETS=$(patsubst %-softmmu,%, $(filter %-softmmu,$(TARGETS))) |
| 124 | FEDORA_31_ARCHES_CANDIDATES=$(patsubst ppc64,ppc64le,$(FEDORA_31_ARCHES_TARGETS)) |
Cleber Rosa | 4ec49f0 | 2020-03-17 10:16:54 -0400 | [diff] [blame] | 125 | FEDORA_31_ARCHES := x86_64 aarch64 ppc64le s390x |
| 126 | FEDORA_31_DOWNLOAD=$(filter $(FEDORA_31_ARCHES),$(FEDORA_31_ARCHES_CANDIDATES)) |
| 127 | |
| 128 | # download one specific Fedora 31 image |
| 129 | get-vm-image-fedora-31-%: check-venv |
| 130 | $(call quiet-command, \ |
John Snow | caa0f7c | 2022-05-25 20:09:14 -0400 | [diff] [blame] | 131 | $(TESTS_PYTHON) -m avocado vmimage get \ |
Cleber Rosa | 4ec49f0 | 2020-03-17 10:16:54 -0400 | [diff] [blame] | 132 | --distro=fedora --distro-version=31 --arch=$*, \ |
Willian Rampazzo | 333d703 | 2021-11-05 12:53:53 -0300 | [diff] [blame] | 133 | "AVOCADO", "Downloading avocado tests VM image for $*") |
Cleber Rosa | 4ec49f0 | 2020-03-17 10:16:54 -0400 | [diff] [blame] | 134 | |
| 135 | # download all vm images, according to defined targets |
| 136 | get-vm-images: check-venv $(patsubst %,get-vm-image-fedora-31-%, $(FEDORA_31_DOWNLOAD)) |
| 137 | |
Willian Rampazzo | 333d703 | 2021-11-05 12:53:53 -0300 | [diff] [blame] | 138 | check-avocado: check-venv $(TESTS_RESULTS_DIR) get-vm-images |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 139 | $(call quiet-command, \ |
John Snow | caa0f7c | 2022-05-25 20:09:14 -0400 | [diff] [blame] | 140 | $(TESTS_PYTHON) -m avocado \ |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 141 | --show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \ |
Willian Rampazzo | 2302279 | 2021-09-23 13:11:39 -0300 | [diff] [blame] | 142 | $(if $(AVOCADO_TAGS),, --filter-by-tags-include-empty \ |
| 143 | --filter-by-tags-include-empty-key) \ |
| 144 | $(AVOCADO_CMDLINE_TAGS) \ |
Willian Rampazzo | 94c7146 | 2021-09-23 13:11:41 -0300 | [diff] [blame] | 145 | $(if $(GITLAB_CI),,--failfast) $(AVOCADO_TESTS), \ |
Willian Rampazzo | bbbd9b6 | 2021-11-05 12:53:54 -0300 | [diff] [blame] | 146 | "AVOCADO", "tests/avocado") |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 147 | |
Willian Rampazzo | 333d703 | 2021-11-05 12:53:53 -0300 | [diff] [blame] | 148 | check-acceptance-deprecated-warning: |
| 149 | @echo |
| 150 | @echo "Note '$(MAKE) check-acceptance' is deprecated, use '$(MAKE) check-avocado' instead." |
| 151 | @echo |
| 152 | |
| 153 | check-acceptance: check-acceptance-deprecated-warning | check-avocado |
| 154 | |
Paolo Bonzini | b93b63f | 2012-03-28 15:42:01 +0200 | [diff] [blame] | 155 | # Consolidated targets |
| 156 | |
Thomas Huth | e287072 | 2022-03-10 08:50:48 +0100 | [diff] [blame] | 157 | .PHONY: check check-clean get-vm-images |
Paolo Bonzini | e781190 | 2020-09-01 09:31:56 -0400 | [diff] [blame] | 158 | check: |
| 159 | |
Paolo Bonzini | 097a5f1 | 2021-10-06 04:18:27 -0400 | [diff] [blame] | 160 | check-build: run-ninja |
Alex Bennée | a6eeac3 | 2020-07-01 14:56:51 +0100 | [diff] [blame] | 161 | |
Wenchao Xia | 2cdfb12 | 2013-09-26 08:42:56 +0800 | [diff] [blame] | 162 | check-clean: |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 163 | rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR) |
Wenchao Xia | 2cdfb12 | 2013-09-26 08:42:56 +0800 | [diff] [blame] | 164 | |
Thomas Huth | 425d6ab | 2022-03-01 09:59:00 +0100 | [diff] [blame] | 165 | clean: check-clean clean-tcg |
Eduardo Habkost | 14117c7 | 2012-07-18 14:22:27 -0300 | [diff] [blame] | 166 | |
Fam Zheng | e45eaef | 2017-08-10 16:50:25 +0800 | [diff] [blame] | 167 | endif |