diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2020-09-03 16:58:24 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2020-09-03 16:58:25 +0100 |
commit | 67a7bfe560a1bba59efab085cb3430f45176d382 (patch) | |
tree | 90c5e259a2f38dcf199bedb93b51bf6542486bc1 | |
parent | 3dd23a4fb8fd72d2220a90a809f213999ffe7f3a (diff) | |
parent | 0a796d63bcd4e840bb94fbe894ae2ad77b9ee2f7 (diff) |
Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2020-09-03' into staging
* Cirrus-CI improvements and fixes (compile with -Werror & fix for 1h problem)
* Two build system fixes to fix some failures the CI
* One m68k QOMification patch
* Some trivial qtest patches
* Some small improvements for the Gitlab CI
# gpg: Signature made Thu 03 Sep 2020 12:04:32 BST
# gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
# gpg: issuer "thuth@redhat.com"
# gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full]
# gpg: aka "Thomas Huth <thuth@redhat.com>" [full]
# gpg: aka "Thomas Huth <huth@tuxfamily.org>" [full]
# gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown]
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5
* remotes/huth-gitlab/tags/pull-request-2020-09-03:
gitlab-ci.yml: Set artifacts expiration time
gitlab-ci.yml: Run check-qtest and check-unit at the end of the fuzzer job
gitlab/travis: Rework the disabled features tests
libqtest: Rename qmp_assert_error_class() to qmp_expect_error_and_unref()
tests/qtest/ipmi-kcs: Fix assert side-effect
tests/qtest/tpm: Declare input buffers const and static
tests/qtest/ahci: Improve error handling (NEGATIVE_RETURNS)
hw/m68k: QOMify the mcf5206 system integration module
configure: Add system = 'linux' for meson when cross-compiling
meson: fix keymaps without qemu-keymap
cirrus.yml: Split FreeBSD job into two parts
cirrus.yml: Update the macOS jobs to Catalina
cirrus.yml: Compile macOS with -Werror
cirrus.yml: Compile FreeBSD with -Werror
configure: Fix atomic64 test for --enable-werror on macOS
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | .cirrus.yml | 43 | ||||
-rw-r--r-- | .gitlab-ci.yml | 36 | ||||
-rw-r--r-- | .travis.yml | 6 | ||||
-rwxr-xr-x | configure | 22 | ||||
-rw-r--r-- | hw/m68k/an5206.c | 14 | ||||
-rw-r--r-- | hw/m68k/mcf5206.c | 44 | ||||
-rw-r--r-- | include/hw/m68k/mcf.h | 3 | ||||
-rw-r--r-- | pc-bios/keymaps/meson.build | 28 | ||||
-rw-r--r-- | tests/qtest/ahci-test.c | 1 | ||||
-rw-r--r-- | tests/qtest/drive_del-test.c | 2 | ||||
-rw-r--r-- | tests/qtest/ipmi-kcs-test.c | 3 | ||||
-rw-r--r-- | tests/qtest/libqos/libqtest.h | 4 | ||||
-rw-r--r-- | tests/qtest/libqtest.c | 2 | ||||
-rw-r--r-- | tests/qtest/qmp-cmd-test.c | 16 | ||||
-rw-r--r-- | tests/qtest/qmp-test.c | 32 | ||||
-rw-r--r-- | tests/qtest/tpm-tests.c | 4 | ||||
-rw-r--r-- | tests/qtest/tpm-util.c | 10 | ||||
-rw-r--r-- | tests/test-qga.c | 2 |
18 files changed, 183 insertions, 89 deletions
diff --git a/.cirrus.yml b/.cirrus.yml index f287d23c5b..3dd9fcff7f 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,42 +1,65 @@ env: CIRRUS_CLONE_DEPTH: 1 -freebsd_12_task: +freebsd_1st_task: freebsd_instance: image_family: freebsd-12-1 - cpu: 8 - memory: 8G + cpu: 4 + memory: 4G install_script: ASSUME_ALWAYS_YES=yes pkg bootstrap -f ; pkg install -y bash curl cyrus-sasl git glib gmake gnutls gsed nettle perl5 pixman pkgconf png usbredir script: - mkdir build - cd build - - ../configure || { cat config.log; exit 1; } - - gmake -j8 - - gmake V=1 check + - ../configure --disable-user --target-list-exclude='alpha-softmmu + ppc64-softmmu ppc-softmmu riscv32-softmmu riscv64-softmmu s390x-softmmu + sparc64-softmmu sparc-softmmu x86_64-softmmu i386-softmmu' + --enable-werror || { cat config.log; exit 1; } + - gmake -j$(sysctl -n hw.ncpu) + - gmake -j$(sysctl -n hw.ncpu) check + +freebsd_2nd_task: + freebsd_instance: + image_family: freebsd-12-1 + cpu: 4 + memory: 4G + install_script: ASSUME_ALWAYS_YES=yes pkg bootstrap -f ; pkg install -y + bash curl cyrus-sasl git glib gmake gnutls gtk3 gsed libepoxy mesa-libs + nettle perl5 pixman pkgconf png SDL2 usbredir + script: + - ./configure --enable-werror --target-list='alpha-softmmu ppc64-softmmu + ppc-softmmu riscv32-softmmu riscv64-softmmu s390x-softmmu + sparc64-softmmu sparc-softmmu x86_64-softmmu i386-softmmu + sparc-bsd-user sparc64-bsd-user x86_64-bsd-user i386-bsd-user' + || { cat config.log; exit 1; } + - gmake -j$(sysctl -n hw.ncpu) + - gmake -j$(sysctl -n hw.ncpu) check macos_task: osx_instance: - image: mojave-base + image: catalina-base install_script: - brew install pkg-config python gnu-sed glib pixman make sdl2 bash script: - mkdir build - cd build - - ../configure --python=/usr/local/bin/python3 || { cat config.log; exit 1; } + - ../configure --python=/usr/local/bin/python3 --enable-werror + --extra-cflags='-Wno-error=deprecated-declarations' + || { cat config.log; exit 1; } - gmake -j$(sysctl -n hw.ncpu) - gmake check macos_xcode_task: osx_instance: # this is an alias for the latest Xcode - image: mojave-xcode + image: catalina-xcode install_script: - brew install pkg-config gnu-sed glib pixman make sdl2 bash script: - mkdir build - cd build - - ../configure --cc=clang || { cat config.log; exit 1; } + - ../configure --extra-cflags='-Wno-error=deprecated-declarations' + --enable-werror --cc=clang || { cat config.log; exit 1; } - gmake -j$(sysctl -n hw.ncpu) - gmake check diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b7967b9a13..ff959e4e03 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -74,6 +74,7 @@ build-system-ubuntu: moxie-softmmu microblazeel-softmmu mips64el-softmmu MAKE_CHECK_ARGS: check-build artifacts: + expire_in: 2 days paths: - build @@ -104,6 +105,7 @@ build-system-debian: riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu MAKE_CHECK_ARGS: check-build artifacts: + expire_in: 2 days paths: - build @@ -134,6 +136,7 @@ build-system-fedora: xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu MAKE_CHECK_ARGS: check-build artifacts: + expire_in: 2 days paths: - build @@ -164,6 +167,7 @@ build-system-centos: x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu MAKE_CHECK_ARGS: check-build artifacts: + expire_in: 2 days paths: - build @@ -190,13 +194,25 @@ build-disabled: <<: *native_build_job_definition variables: IMAGE: fedora - CONFIGURE_ARGS: --disable-rdma --disable-slirp --disable-curl - --disable-capstone --disable-live-block-migration --disable-glusterfs - --disable-replication --disable-coroutine-pool --disable-smartcard - --disable-guest-agent --disable-curses --disable-libxml2 --disable-tpm - --disable-qom-cast-debug --disable-spice --disable-vhost-vsock - --disable-vhost-net --disable-vhost-crypto --disable-vhost-user - TARGETS: i386-softmmu ppc64-softmmu mips64-softmmu i386-linux-user + CONFIGURE_ARGS: --disable-attr --disable-avx2 --disable-bochs + --disable-brlapi --disable-bzip2 --disable-cap-ng --disable-capstone + --disable-cloop --disable-coroutine-pool --disable-curl --disable-curses + --disable-dmg --disable-docs --disable-glusterfs --disable-gnutls + --disable-gtk --disable-guest-agent --disable-iconv --disable-kvm + --disable-libiscsi --disable-libpmem --disable-libssh --disable-libusb + --disable-libxml2 --disable-linux-aio --disable-live-block-migration + --disable-lzo --disable-malloc-trim --disable-mpath --disable-nettle + --disable-numa --disable-parallels --disable-pie --disable-qcow1 + --disable-qed --disable-qom-cast-debug --disable-rbd --disable-rdma + --disable-replication --disable-sdl --disable-seccomp --disable-sheepdog + --disable-slirp --disable-smartcard --disable-snappy --disable-spice + --disable-strip --disable-tpm --disable-usb-redir --disable-vdi + --disable-vhost-crypto --disable-vhost-net --disable-vhost-scsi + --disable-vhost-user --disable-vhost-vdpa --disable-vhost-vsock + --disable-virglrenderer --disable-vnc --disable-vte --disable-vvfat + --disable-xen --disable-zstd + TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu + s390x-softmmu i386-linux-user MAKE_CHECK_ARGS: check-qtest SPEED=slow build-tcg-disabled: @@ -243,13 +259,15 @@ build-oss-fuzz: - mkdir build-oss-fuzz - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address" ./scripts/oss-fuzz/build.sh + - export ASAN_OPTIONS="fast_unwind_on_malloc=0" - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f | grep -v slirp); do grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ; echo Testing ${fuzzer} ... ; - ASAN_OPTIONS="fast_unwind_on_malloc=0" - "${fuzzer}" -runs=1000 -seed=1 || exit 1 ; + "${fuzzer}" -runs=1000 -seed=1 || exit 1 ; done + # Unrelated to fuzzer: run some tests with -fsanitize=address + - cd build-oss-fuzz && make check-qtest-i386 check-unit build-tci: <<: *native_build_job_definition diff --git a/.travis.yml b/.travis.yml index 6695c0620f..1d0ade0a13 100644 --- a/.travis.yml +++ b/.travis.yml @@ -159,12 +159,6 @@ jobs: - CONFIG="--enable-debug-tcg --disable-system" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" - - - name: "GCC some libs disabled (main-softmmu)" - env: - - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}" - - # Module builds are mostly of interest to major distros - name: "GCC modules (main-softmmu)" env: @@ -5755,11 +5755,11 @@ int main(void) { uint64_t x = 0, y = 0; #ifdef __ATOMIC_RELAXED - y = __atomic_load_8(&x, 0); - __atomic_store_8(&x, y, 0); - __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0); - __atomic_exchange_8(&x, y, 0); - __atomic_fetch_add_8(&x, y, 0); + y = __atomic_load_n(&x, __ATOMIC_RELAXED); + __atomic_store_n(&x, y, __ATOMIC_RELAXED); + __atomic_compare_exchange_n(&x, &y, x, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED); + __atomic_exchange_n(&x, y, __ATOMIC_RELAXED); + __atomic_fetch_add(&x, y, __ATOMIC_RELAXED); #else typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1]; __sync_lock_test_and_set(&x, y); @@ -8065,6 +8065,9 @@ fi # so the build tree will be missing the link back to the new file, and # tests might fail. Prefer to keep the relevant files in their own # directory and symlink the directory instead. +# UNLINK is used to remove symlinks from older development versions +# that might get into the way when doing "git update" without doing +# a "make distclean" in between. DIRS="tests tests/tcg tests/tcg/lm32 tests/qapi-schema tests/qtest/libqos" DIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph" DIRS="$DIRS docs docs/interop fsdev scsi" @@ -8081,6 +8084,7 @@ LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit LINKS="$LINKS tests/acceptance tests/data" LINKS="$LINKS tests/qemu-iotests/check" LINKS="$LINKS python" +UNLINK="pc-bios/keymaps" for bios_file in \ $source_path/pc-bios/*.bin \ $source_path/pc-bios/*.elf \ @@ -8101,6 +8105,11 @@ for f in $LINKS ; do symlink "$source_path/$f" "$f" fi done +for f in $UNLINK ; do + if [ -L "$f" ]; then + rm -f "$f" + fi +done (for i in $cross_cc_vars; do export $i @@ -8163,6 +8172,9 @@ if test -n "$cross_prefix"; then ?:*) pre_prefix=/ ;; esac fi + if test "$linux" = "yes" ; then + echo "system = 'linux'" >> $cross + fi case "$ARCH" in i386|x86_64) echo "cpu_family = 'x86'" >> $cross diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c index 846f4e40c6..673898b0ea 100644 --- a/hw/m68k/an5206.c +++ b/hw/m68k/an5206.c @@ -21,7 +21,17 @@ #define AN5206_MBAR_ADDR 0x10000000 #define AN5206_RAMBAR_ADDR 0x20000000 -/* Board init. */ +static void mcf5206_init(MemoryRegion *sysmem, uint32_t base) +{ + DeviceState *dev; + SysBusDevice *s; + + dev = qdev_new(TYPE_MCF5206_MBAR); + s = SYS_BUS_DEVICE(dev); + sysbus_realize_and_unref(s, &error_fatal); + + memory_region_add_subregion(sysmem, base, sysbus_mmio_get_region(s, 0)); +} static void an5206_init(MachineState *machine) { @@ -51,7 +61,7 @@ static void an5206_init(MachineState *machine) memory_region_init_ram(sram, NULL, "an5206.sram", 512, &error_fatal); memory_region_add_subregion(address_space_mem, AN5206_RAMBAR_ADDR, sram); - mcf5206_init(address_space_mem, AN5206_MBAR_ADDR, cpu); + mcf5206_init(address_space_mem, AN5206_MBAR_ADDR); /* Load kernel. */ if (!kernel_filename) { diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index 94a37a1a46..51d2e0da1c 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -15,6 +15,7 @@ #include "qemu/timer.h" #include "hw/ptimer.h" #include "sysemu/sysemu.h" +#include "hw/sysbus.h" /* General purpose timer module. */ typedef struct { @@ -159,6 +160,8 @@ static m5206_timer_state *m5206_timer_init(qemu_irq irq) /* System Integration Module. */ typedef struct { + SysBusDevice parent_obj; + M68kCPU *cpu; MemoryRegion iomem; m5206_timer_state *timer[2]; @@ -174,6 +177,8 @@ typedef struct { uint8_t uivr[2]; } m5206_mbar_state; +#define MCF5206_MBAR(obj) OBJECT_CHECK(m5206_mbar_state, (obj), TYPE_MCF5206_MBAR) + /* Interrupt controller. */ static int m5206_find_pending_irq(m5206_mbar_state *s) @@ -257,8 +262,10 @@ static void m5206_mbar_set_irq(void *opaque, int irq, int level) /* System Integration Module. */ -static void m5206_mbar_reset(m5206_mbar_state *s) +static void m5206_mbar_reset(DeviceState *dev) { + m5206_mbar_state *s = MCF5206_MBAR(dev); + s->scr = 0xc0; s->icr[1] = 0x04; s->icr[2] = 0x08; @@ -578,24 +585,43 @@ static const MemoryRegionOps m5206_mbar_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -qemu_irq *mcf5206_init(MemoryRegion *sysmem, uint32_t base, M68kCPU *cpu) +static void mcf5206_mbar_realize(DeviceState *dev, Error **errp) { - m5206_mbar_state *s; + m5206_mbar_state *s = MCF5206_MBAR(dev); qemu_irq *pic; - s = g_new0(m5206_mbar_state, 1); - memory_region_init_io(&s->iomem, NULL, &m5206_mbar_ops, s, "mbar", 0x00001000); - memory_region_add_subregion(sysmem, base, &s->iomem); + sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->iomem); pic = qemu_allocate_irqs(m5206_mbar_set_irq, s, 14); s->timer[0] = m5206_timer_init(pic[9]); s->timer[1] = m5206_timer_init(pic[10]); s->uart[0] = mcf_uart_init(pic[12], serial_hd(0)); s->uart[1] = mcf_uart_init(pic[13], serial_hd(1)); - s->cpu = cpu; + s->cpu = M68K_CPU(qemu_get_cpu(0)); +} + +static void mcf5206_mbar_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(oc); - m5206_mbar_reset(s); - return pic; + set_bit(DEVICE_CATEGORY_MISC, dc->categories); + dc->desc = "MCF5206 system integration module"; + dc->realize = mcf5206_mbar_realize; + dc->reset = m5206_mbar_reset; } + +static const TypeInfo mcf5206_mbar_info = { + .name = TYPE_MCF5206_MBAR, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(m5206_mbar_state), + .class_init = mcf5206_mbar_class_init, +}; + +static void mcf5206_mbar_register_types(void) +{ + type_register_static(&mcf5206_mbar_info); +} + +type_init(mcf5206_mbar_register_types) diff --git a/include/hw/m68k/mcf.h b/include/hw/m68k/mcf.h index 0db49c5e60..decf17ce42 100644 --- a/include/hw/m68k/mcf.h +++ b/include/hw/m68k/mcf.h @@ -18,7 +18,6 @@ qemu_irq *mcf_intc_init(struct MemoryRegion *sysmem, M68kCPU *cpu); /* mcf5206.c */ -qemu_irq *mcf5206_init(struct MemoryRegion *sysmem, - uint32_t base, M68kCPU *cpu); +#define TYPE_MCF5206_MBAR "mcf5206-mbar" #endif diff --git a/pc-bios/keymaps/meson.build b/pc-bios/keymaps/meson.build index bbac83ece3..2e2e0dfa3b 100644 --- a/pc-bios/keymaps/meson.build +++ b/pc-bios/keymaps/meson.build @@ -38,19 +38,29 @@ if meson.is_cross_build() or 'CONFIG_XKBCOMMON' not in config_host else native_qemu_keymap = qemu_keymap endif + t = [] foreach km, args: keymaps - t += custom_target(km, - build_by_default: true, - output: km, - command: [native_qemu_keymap, '-f', '@OUTPUT@', args.split()], - install_dir: qemu_datadir / 'keymaps') + if native_qemu_keymap.found() + # generate with qemu-kvm + t += custom_target(km, + build_by_default: true, + output: km, + command: [native_qemu_keymap, '-f', '@OUTPUT@', args.split()], + install_dir: qemu_datadir / 'keymaps') + else + # copy from source tree + t += custom_target(km, + build_by_default: true, + input: km, + output: km, + command: ['cp', '@INPUT@', '@OUTPUT@'], + install_dir: qemu_datadir / 'keymaps') + endif endforeach -if t.length() > 0 + +if native_qemu_keymap.found() alias_target('update-keymaps', t) -else - # install from the source tree - install_data(keymaps.keys(), install_dir: qemu_datadir / 'keymaps') endif install_data(['sl', 'sv'], install_dir: qemu_datadir / 'keymaps') diff --git a/tests/qtest/ahci-test.c b/tests/qtest/ahci-test.c index ca4294f44f..5e1954852e 100644 --- a/tests/qtest/ahci-test.c +++ b/tests/qtest/ahci-test.c @@ -1443,6 +1443,7 @@ static int prepare_iso(size_t size, unsigned char **buf, char **name) ssize_t ret; int fd = mkstemp(cdrom_path); + g_assert(fd != -1); g_assert(buf); g_assert(name); patt = g_malloc(size); diff --git a/tests/qtest/drive_del-test.c b/tests/qtest/drive_del-test.c index 2ab11ad225..2d765865ce 100644 --- a/tests/qtest/drive_del-test.c +++ b/tests/qtest/drive_del-test.c @@ -103,7 +103,7 @@ static void test_after_failed_device_add(void) " 'drive': 'drive0'" "}}", driver); g_assert(response); - qmp_assert_error_class(response, "GenericError"); + qmp_expect_error_and_unref(response, "GenericError"); /* Delete the drive */ drive_del(qts); diff --git a/tests/qtest/ipmi-kcs-test.c b/tests/qtest/ipmi-kcs-test.c index 693a6aacb5..fc0a918c8d 100644 --- a/tests/qtest/ipmi-kcs-test.c +++ b/tests/qtest/ipmi-kcs-test.c @@ -81,7 +81,8 @@ static void kcs_wait_obf(void) { unsigned int count = 1000; while (IPMI_KCS_CMDREG_GET_OBF() == 0) { - g_assert(--count != 0); + --count; + g_assert(count != 0); } } diff --git a/tests/qtest/libqos/libqtest.h b/tests/qtest/libqos/libqtest.h index f5cf93c386..a6ee1654f2 100644 --- a/tests/qtest/libqos/libqtest.h +++ b/tests/qtest/libqos/libqtest.h @@ -704,13 +704,13 @@ void qtest_qmp_device_del(QTestState *qts, const char *id); bool qmp_rsp_is_err(QDict *rsp); /** - * qmp_assert_error_class: + * qmp_expect_error_and_unref: * @rsp: QMP response to check for error * @class: an error class * * Assert the response has the given error class and discard @rsp. */ -void qmp_assert_error_class(QDict *rsp, const char *class); +void qmp_expect_error_and_unref(QDict *rsp, const char *class); /** * qtest_probe_child: diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index 26f1223642..58f58e1ece 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -1359,7 +1359,7 @@ bool qmp_rsp_is_err(QDict *rsp) return !!error; } -void qmp_assert_error_class(QDict *rsp, const char *class) +void qmp_expect_error_and_unref(QDict *rsp, const char *class) { QDict *error = qdict_get_qdict(rsp, "error"); diff --git a/tests/qtest/qmp-cmd-test.c b/tests/qtest/qmp-cmd-test.c index f34e68858a..3109a9fe96 100644 --- a/tests/qtest/qmp-cmd-test.c +++ b/tests/qtest/qmp-cmd-test.c @@ -210,19 +210,19 @@ static void test_object_add_failure_modes(void) resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':" " {'qom-type': 'memory-backend-ram', 'id': 'ram1' } }"); g_assert_nonnull(resp); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* attempt to create an object without qom-type */ resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':" " {'id': 'ram1' } }"); g_assert_nonnull(resp); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* attempt to delete an object that does not exist */ resp = qtest_qmp(qts, "{'execute': 'object-del', 'arguments':" " {'id': 'ram1' } }"); g_assert_nonnull(resp); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* attempt to create 2 objects with duplicate id */ resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':" @@ -236,7 +236,7 @@ static void test_object_add_failure_modes(void) " {'qom-type': 'memory-backend-ram', 'id': 'ram1'," " 'props': {'size': 1048576 } } }"); g_assert_nonnull(resp); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* delete ram1 object */ resp = qtest_qmp(qts, "{'execute': 'object-del', 'arguments':" @@ -251,7 +251,7 @@ static void test_object_add_failure_modes(void) " 'props': {'size': '1048576' } } }"); g_assert_nonnull(resp); /* now do it right */ - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':" " {'qom-type': 'memory-backend-ram', 'id': 'ram1'," @@ -272,7 +272,7 @@ static void test_object_add_failure_modes(void) " {'qom-type': 'memory-backend-ram'," " 'props': {'size': 1048576 } } }"); g_assert_nonnull(resp); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* now do it right */ resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':" @@ -294,7 +294,7 @@ static void test_object_add_failure_modes(void) " {'qom-type': 'memory-backend-ram', 'id': 'ram1'," " 'props': {'sized': 1048576 } } }"); g_assert_nonnull(resp); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* now do it right */ resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':" @@ -321,7 +321,7 @@ static void test_object_add_failure_modes(void) resp = qtest_qmp(qts, "{'execute': 'object-del', 'arguments':" " {'id': 'ram1' } }"); g_assert_nonnull(resp); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); qtest_quit(qts); } diff --git a/tests/qtest/qmp-test.c b/tests/qtest/qmp-test.c index 5950c3ebbb..e1032c5a21 100644 --- a/tests/qtest/qmp-test.c +++ b/tests/qtest/qmp-test.c @@ -38,7 +38,7 @@ static void assert_recovered(QTestState *qts) QDict *resp; resp = qtest_qmp(qts, "{ 'execute': 'no-such-cmd' }"); - qmp_assert_error_class(resp, "CommandNotFound"); + qmp_expect_error_and_unref(resp, "CommandNotFound"); } static void test_malformed(QTestState *qts) @@ -48,58 +48,58 @@ static void test_malformed(QTestState *qts) /* syntax error */ qtest_qmp_send_raw(qts, "{]\n"); resp = qtest_qmp_receive(qts); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); assert_recovered(qts); /* lexical error: impossible byte outside string */ qtest_qmp_send_raw(qts, "{\xFF"); resp = qtest_qmp_receive(qts); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); assert_recovered(qts); /* lexical error: funny control character outside string */ qtest_qmp_send_raw(qts, "{\x01"); resp = qtest_qmp_receive(qts); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); assert_recovered(qts); /* lexical error: impossible byte in string */ qtest_qmp_send_raw(qts, "{'bad \xFF"); resp = qtest_qmp_receive(qts); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); assert_recovered(qts); /* lexical error: control character in string */ qtest_qmp_send_raw(qts, "{'execute': 'nonexistent', 'id':'\n"); resp = qtest_qmp_receive(qts); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); assert_recovered(qts); /* lexical error: interpolation */ qtest_qmp_send_raw(qts, "%%p"); resp = qtest_qmp_receive(qts); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); assert_recovered(qts); /* Not even a dictionary */ resp = qtest_qmp(qts, "null"); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* No "execute" key */ resp = qtest_qmp(qts, "{}"); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* "execute" isn't a string */ resp = qtest_qmp(qts, "{ 'execute': true }"); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* "arguments" isn't a dictionary */ resp = qtest_qmp(qts, "{ 'execute': 'no-such-cmd', 'arguments': [] }"); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); /* extra key */ resp = qtest_qmp(qts, "{ 'execute': 'no-such-cmd', 'extra': true }"); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); } static void test_qmp_protocol(void) @@ -121,7 +121,7 @@ static void test_qmp_protocol(void) /* Test valid command before handshake */ resp = qtest_qmp(qts, "{ 'execute': 'query-version' }"); - qmp_assert_error_class(resp, "CommandNotFound"); + qmp_expect_error_and_unref(resp, "CommandNotFound"); /* Test malformed commands before handshake */ test_malformed(qts); @@ -134,7 +134,7 @@ static void test_qmp_protocol(void) /* Test repeated handshake */ resp = qtest_qmp(qts, "{ 'execute': 'qmp_capabilities' }"); - qmp_assert_error_class(resp, "CommandNotFound"); + qmp_expect_error_and_unref(resp, "CommandNotFound"); /* Test valid command */ resp = qtest_qmp(qts, "{ 'execute': 'query-version' }"); @@ -154,7 +154,7 @@ static void test_qmp_protocol(void) /* Test command failure with 'id' */ resp = qtest_qmp(qts, "{ 'execute': 'human-monitor-command', 'id': 2 }"); g_assert_cmpint(qdict_get_int(resp, "id"), ==, 2); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); qtest_quit(qts); } @@ -327,7 +327,7 @@ static void test_qmp_missing_any_arg(void) resp = qtest_qmp(qts, "{'execute': 'qom-set', 'arguments':" " { 'path': '/machine', 'property': 'rtc-time' } }"); g_assert_nonnull(resp); - qmp_assert_error_class(resp, "GenericError"); + qmp_expect_error_and_unref(resp, "GenericError"); qtest_quit(qts); } diff --git a/tests/qtest/tpm-tests.c b/tests/qtest/tpm-tests.c index a2f2838e15..70c80f8379 100644 --- a/tests/qtest/tpm-tests.c +++ b/tests/qtest/tpm-tests.c @@ -59,7 +59,7 @@ void tpm_test_swtpm_test(const char *src_tpm_path, tx_func *tx, tpm_util_startup(s, tx); tpm_util_pcrextend(s, tx); - unsigned char tpm_pcrread_resp[] = + static const unsigned char tpm_pcrread_resp[] = "\x80\x01\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00" "\x00\x01\x00\x0b\x03\x00\x04\x00\x00\x00\x00\x01\x00\x20\xf6\x85" "\x98\xe5\x86\x8d\xe6\x8b\x97\x29\x99\x60\xf2\x71\x7d\x17\x67\x89" @@ -107,7 +107,7 @@ void tpm_test_swtpm_migration_test(const char *src_tpm_path, tpm_util_startup(src_qemu, tx); tpm_util_pcrextend(src_qemu, tx); - unsigned char tpm_pcrread_resp[] = + static const unsigned char tpm_pcrread_resp[] = "\x80\x01\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00" "\x00\x01\x00\x0b\x03\x00\x04\x00\x00\x00\x00\x01\x00\x20\xf6\x85" "\x98\xe5\x86\x8d\xe6\x8b\x97\x29\x99\x60\xf2\x71\x7d\x17\x67\x89" diff --git a/tests/qtest/tpm-util.c b/tests/qtest/tpm-util.c index e2b29ef0f8..3ed6c8548a 100644 --- a/tests/qtest/tpm-util.c +++ b/tests/qtest/tpm-util.c @@ -98,9 +98,9 @@ void tpm_util_tis_transfer(QTestState *s, void tpm_util_startup(QTestState *s, tx_func *tx) { unsigned char buffer[1024]; - unsigned char tpm_startup[] = + static const unsigned char tpm_startup[] = "\x80\x01\x00\x00\x00\x0c\x00\x00\x01\x44\x00\x00"; - unsigned char tpm_startup_resp[] = + static const unsigned char tpm_startup_resp[] = "\x80\x01\x00\x00\x00\x0a\x00\x00\x00\x00"; tx(s, tpm_startup, sizeof(tpm_startup), buffer, sizeof(buffer)); @@ -112,14 +112,14 @@ void tpm_util_startup(QTestState *s, tx_func *tx) void tpm_util_pcrextend(QTestState *s, tx_func *tx) { unsigned char buffer[1024]; - unsigned char tpm_pcrextend[] = + static const unsigned char tpm_pcrextend[] = "\x80\x02\x00\x00\x00\x41\x00\x00\x01\x82\x00\x00\x00\x0a\x00\x00" "\x00\x09\x40\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00" "\x0b\x74\x65\x73\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00"; - unsigned char tpm_pcrextend_resp[] = + static const unsigned char tpm_pcrextend_resp[] = "\x80\x02\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x01\x00\x00"; @@ -133,7 +133,7 @@ void tpm_util_pcrread(QTestState *s, tx_func *tx, const unsigned char *exp_resp, size_t exp_resp_size) { unsigned char buffer[1024]; - unsigned char tpm_pcrread[] = + static const unsigned char tpm_pcrread[] = "\x80\x01\x00\x00\x00\x14\x00\x00\x01\x7e\x00\x00\x00\x01\x00\x0b" "\x03\x00\x04\x00"; diff --git a/tests/test-qga.c b/tests/test-qga.c index 4ac4c22109..65d7992edc 100644 --- a/tests/test-qga.c +++ b/tests/test-qga.c @@ -246,7 +246,7 @@ static void test_qga_invalid_oob(gconstpointer fix) ret = qmp_fd(fixture->fd, "{'exec-oob': 'guest-ping'}"); g_assert_nonnull(ret); - qmp_assert_error_class(ret, "GenericError"); + qmp_expect_error_and_unref(ret, "GenericError"); } static void test_qga_invalid_args(gconstpointer fix) |