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:" |
| 6 | @echo |
Huacai Chen | 9865f39 | 2020-05-05 18:24:51 +0800 | [diff] [blame] | 7 | @echo " $(MAKE) check Run block, qapi-schema, unit, softfloat, qtest and decodetree tests" |
Cleber Rosa | 54f96b4 | 2018-11-09 10:07:10 -0500 | [diff] [blame] | 8 | @echo |
Philippe Mathieu-Daudé | b98a3ba | 2017-11-21 06:55:10 -0300 | [diff] [blame] | 9 | @echo " $(MAKE) check-qtest-TARGET Run qtest tests for given target" |
| 10 | @echo " $(MAKE) check-qtest Run qtest tests" |
| 11 | @echo " $(MAKE) check-unit Run qobject tests" |
| 12 | @echo " $(MAKE) check-speed Run qobject speed tests" |
| 13 | @echo " $(MAKE) check-qapi-schema Run QAPI schema tests" |
| 14 | @echo " $(MAKE) check-block Run block tests" |
Philippe Mathieu-Daudé | ca6db46 | 2020-05-22 19:25:00 +0200 | [diff] [blame] | 15 | ifeq ($(CONFIG_TCG),y) |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 16 | @echo " $(MAKE) check-tcg Run TCG tests" |
Alex Bennée | 7617010 | 2019-01-07 17:25:44 +0000 | [diff] [blame] | 17 | @echo " $(MAKE) check-softfloat Run FPU emulation tests" |
Philippe Mathieu-Daudé | ca6db46 | 2020-05-22 19:25:00 +0200 | [diff] [blame] | 18 | endif |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 19 | @echo " $(MAKE) check-acceptance Run all acceptance (functional) tests" |
Cleber Rosa | 54f96b4 | 2018-11-09 10:07:10 -0500 | [diff] [blame] | 20 | @echo |
Wainer dos Santos Moschetta | c3088cd | 2019-12-11 15:44:27 -0500 | [diff] [blame] | 21 | @echo " $(MAKE) check-report.tap Generates an aggregated TAP test report" |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 22 | @echo " $(MAKE) check-venv Creates a Python venv for tests" |
Cleber Rosa | 54f96b4 | 2018-11-09 10:07:10 -0500 | [diff] [blame] | 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" |
| 26 | @echo " $(MAKE) check-build Build most test binaris" |
Cleber Rosa | 4ec49f0 | 2020-03-17 10:16:54 -0400 | [diff] [blame] | 27 | @echo " $(MAKE) get-vm-images Downloads all images used by acceptance tests, according to configured targets (~350 MB each, 1.5 GB max)" |
| 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 | |
Peter Maydell | 3687d53 | 2014-01-23 16:22:59 +0000 | [diff] [blame] | 37 | # Get the list of all supported sysemu targets |
| 38 | SYSEMU_TARGET_LIST := $(subst -softmmu.mak,,$(notdir \ |
| 39 | $(wildcard $(SRC_PATH)/default-configs/*-softmmu.mak))) |
| 40 | |
Paolo Bonzini | b93b63f | 2012-03-28 15:42:01 +0200 | [diff] [blame] | 41 | SPEED = quick |
Anthony Liguori | dbfe06c | 2012-01-10 13:10:43 -0600 | [diff] [blame] | 42 | |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 43 | # Per guest TCG tests |
| 44 | |
Alex Bennée | e24e66f | 2018-11-29 22:21:50 +0000 | [diff] [blame] | 45 | BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(TARGET_DIRS)) |
| 46 | CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TARGET_DIRS)) |
| 47 | RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TARGET_DIRS)) |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 48 | |
Alex Bennée | 1a7fab9 | 2018-06-08 12:12:46 +0100 | [diff] [blame] | 49 | # Probe for the Docker Builds needed for each build |
Alex Bennée | 2b1f35b | 2018-07-04 07:30:11 +0100 | [diff] [blame] | 50 | $(foreach PROBE_TARGET,$(TARGET_DIRS), \ |
Paolo Bonzini | fc76c56 | 2019-08-07 16:35:22 +0200 | [diff] [blame] | 51 | $(eval -include $(SRC_PATH)/tests/tcg/Makefile.prereqs)) |
Alex Bennée | 1a7fab9 | 2018-06-08 12:12:46 +0100 | [diff] [blame] | 52 | |
Paolo Bonzini | 8c17b84 | 2020-10-03 03:00:46 -0400 | [diff] [blame] | 53 | $(BUILD_TCG_TARGET_RULES): build-tcg-tests-%: $(if $(CONFIG_PLUGIN),test-plugins) |
Paolo Bonzini | fc76c56 | 2019-08-07 16:35:22 +0200 | [diff] [blame] | 54 | $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ |
| 55 | -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ |
| 56 | SRC_PATH=$(SRC_PATH) \ |
Paolo Bonzini | 2038f8c | 2019-08-07 16:35:23 +0200 | [diff] [blame] | 57 | V="$(V)" TARGET="$*" guest-tests, \ |
Alex Bennée | cff5477 | 2018-06-15 19:20:55 +0100 | [diff] [blame] | 58 | "BUILD", "TCG tests for $*") |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 59 | |
Paolo Bonzini | 8c17b84 | 2020-10-03 03:00:46 -0400 | [diff] [blame] | 60 | $(RUN_TCG_TARGET_RULES): run-tcg-tests-%: build-tcg-tests-% all |
Paolo Bonzini | fc76c56 | 2019-08-07 16:35:22 +0200 | [diff] [blame] | 61 | $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ |
| 62 | -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ |
| 63 | SRC_PATH=$(SRC_PATH) SPEED="$(SPEED)" \ |
Paolo Bonzini | 2038f8c | 2019-08-07 16:35:23 +0200 | [diff] [blame] | 64 | V="$(V)" TARGET="$*" run-guest-tests, \ |
Alex Bennée | cff5477 | 2018-06-15 19:20:55 +0100 | [diff] [blame] | 65 | "RUN", "TCG tests for $*") |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 66 | |
Paolo Bonzini | 8c17b84 | 2020-10-03 03:00:46 -0400 | [diff] [blame] | 67 | $(CLEAN_TCG_TARGET_RULES): clean-tcg-tests-%: |
Paolo Bonzini | fc76c56 | 2019-08-07 16:35:22 +0200 | [diff] [blame] | 68 | $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ |
| 69 | -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ |
Paolo Bonzini | 2038f8c | 2019-08-07 16:35:23 +0200 | [diff] [blame] | 70 | SRC_PATH=$(SRC_PATH) TARGET="$*" clean-guest-tests, \ |
Alex Bennée | dda60da | 2019-09-10 13:09:31 +0100 | [diff] [blame] | 71 | "CLEAN", "TCG tests for $*") |
Alex Bennée | 8ba0a82 | 2018-04-06 22:08:36 +0100 | [diff] [blame] | 72 | |
| 73 | .PHONY: build-tcg |
| 74 | build-tcg: $(BUILD_TCG_TARGET_RULES) |
| 75 | |
| 76 | .PHONY: check-tcg |
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 | |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 84 | .PHONY: check-venv check-acceptance |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 85 | |
| 86 | TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv |
| 87 | TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 88 | TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results |
| 89 | # Controls the output generated by Avocado when running tests. |
| 90 | # Any number of command separated loggers are accepted. For more |
| 91 | # information please refer to "avocado --help". |
Cleber Rosa | 59692a1 | 2019-03-12 13:18:05 -0400 | [diff] [blame] | 92 | AVOCADO_SHOW=app |
Cleber Rosa | b194713 | 2019-03-12 13:18:09 -0400 | [diff] [blame] | 93 | AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGET_DIRS))) |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 94 | |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 95 | $(TESTS_VENV_DIR): $(TESTS_VENV_REQ) |
| 96 | $(call quiet-command, \ |
| 97 | $(PYTHON) -m venv --system-site-packages $@, \ |
| 98 | VENV, $@) |
| 99 | $(call quiet-command, \ |
| 100 | $(TESTS_VENV_DIR)/bin/python -m pip -q install -r $(TESTS_VENV_REQ), \ |
| 101 | PIP, $(TESTS_VENV_REQ)) |
| 102 | $(call quiet-command, touch $@) |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 103 | |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 104 | $(TESTS_RESULTS_DIR): |
| 105 | $(call quiet-command, mkdir -p $@, \ |
| 106 | MKDIR, $@) |
| 107 | |
Cleber Rosa | 2131372 | 2018-10-18 11:31:32 -0400 | [diff] [blame] | 108 | check-venv: $(TESTS_VENV_DIR) |
| 109 | |
Cleber Rosa | 4ec49f0 | 2020-03-17 10:16:54 -0400 | [diff] [blame] | 110 | FEDORA_31_ARCHES_CANDIDATES=$(patsubst ppc64,ppc64le,$(TARGETS)) |
| 111 | FEDORA_31_ARCHES := x86_64 aarch64 ppc64le s390x |
| 112 | FEDORA_31_DOWNLOAD=$(filter $(FEDORA_31_ARCHES),$(FEDORA_31_ARCHES_CANDIDATES)) |
| 113 | |
| 114 | # download one specific Fedora 31 image |
| 115 | get-vm-image-fedora-31-%: check-venv |
| 116 | $(call quiet-command, \ |
| 117 | $(TESTS_VENV_DIR)/bin/python -m avocado vmimage get \ |
| 118 | --distro=fedora --distro-version=31 --arch=$*, \ |
| 119 | "AVOCADO", "Downloading acceptance tests VM image for $*") |
| 120 | |
| 121 | # download all vm images, according to defined targets |
| 122 | get-vm-images: check-venv $(patsubst %,get-vm-image-fedora-31-%, $(FEDORA_31_DOWNLOAD)) |
| 123 | |
| 124 | check-acceptance: check-venv $(TESTS_RESULTS_DIR) get-vm-images |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 125 | $(call quiet-command, \ |
| 126 | $(TESTS_VENV_DIR)/bin/python -m avocado \ |
| 127 | --show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \ |
Cleber Rosa | b194713 | 2019-03-12 13:18:09 -0400 | [diff] [blame] | 128 | --filter-by-tags-include-empty --filter-by-tags-include-empty-key \ |
| 129 | $(AVOCADO_TAGS) \ |
Pavel Dovgalyuk | 94b4ec2 | 2020-09-09 12:27:39 +0100 | [diff] [blame] | 130 | $(if $(GITLAB_CI),,--failfast) tests/acceptance, \ |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 131 | "AVOCADO", "tests/acceptance") |
| 132 | |
Paolo Bonzini | b93b63f | 2012-03-28 15:42:01 +0200 | [diff] [blame] | 133 | # Consolidated targets |
| 134 | |
Marc-André Lureau | 279588d | 2020-08-03 09:05:54 +0200 | [diff] [blame] | 135 | .PHONY: check-block check check-clean get-vm-images |
Paolo Bonzini | e781190 | 2020-09-01 09:31:56 -0400 | [diff] [blame] | 136 | check: |
| 137 | |
| 138 | ifeq ($(CONFIG_TOOLS)$(CONFIG_POSIX),yy) |
| 139 | QEMU_IOTESTS_HELPERS-$(CONFIG_LINUX) = tests/qemu-iotests/socket_scm_helper$(EXESUF) |
| 140 | check: check-block |
| 141 | check-block: $(SRC_PATH)/tests/check-block.sh qemu-img$(EXESUF) \ |
| 142 | qemu-io$(EXESUF) qemu-nbd$(EXESUF) $(QEMU_IOTESTS_HELPERS-y) \ |
Paolo Bonzini | 09e9332 | 2020-08-13 09:28:11 -0400 | [diff] [blame] | 143 | $(filter qemu-system-%, $(ninja-targets)) |
Paolo Bonzini | e781190 | 2020-09-01 09:31:56 -0400 | [diff] [blame] | 144 | @$< |
| 145 | endif |
| 146 | |
Marc-André Lureau | 279588d | 2020-08-03 09:05:54 +0200 | [diff] [blame] | 147 | check-build: $(QEMU_IOTESTS_HELPERS-y) |
Alex Bennée | a6eeac3 | 2020-07-01 14:56:51 +0100 | [diff] [blame] | 148 | |
Wenchao Xia | 2cdfb12 | 2013-09-26 08:42:56 +0800 | [diff] [blame] | 149 | check-clean: |
Cleber Rosa | a56931e | 2018-10-18 11:31:33 -0400 | [diff] [blame] | 150 | rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR) |
Wenchao Xia | 2cdfb12 | 2013-09-26 08:42:56 +0800 | [diff] [blame] | 151 | |
| 152 | clean: check-clean |
Eduardo Habkost | 14117c7 | 2012-07-18 14:22:27 -0300 | [diff] [blame] | 153 | |
Paolo Bonzini | 9ed7247 | 2020-09-02 07:25:19 -0400 | [diff] [blame] | 154 | # For backwards compatibility |
| 155 | |
| 156 | check-speed: bench-speed |
| 157 | |
Fam Zheng | e45eaef | 2017-08-10 16:50:25 +0800 | [diff] [blame] | 158 | endif |