mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
QOM infrastructure fixes and device conversions
* QTest cleanups and test cases for PCI NICs * NAND fix for "info qtree" * Cleanup and extension of QOM machine tests * IndustryPack test cases and conversion to QOM realize * I2C cleanups * Cleanups of legacy qdev properties -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAABAgAGBQJTAooJAAoJEPou0S0+fgE/SuQQALW3zvra4ZLRAQV0e8kFoyj1 vVtmLkDhnCe4cYfxxfOX91NA0rH1ts2EO1+UcnaCHJlptNWfA+8qJW69XgYpHE3c DKQlKPL/9pV5ywY5uUw/t1UJHg2BfrLBDDM4lP+vrpwiQYq4kp24JffnhfY3l9MA 9qdkXu1HrlWoLRVGnMyGDXI8cb+5bTL+FEc6UuHl3P89/gj5BV+LDWn0QOFbAkxq 4wk+Xh6sHKcfOdq6vMCNGlTjlJnpbY43D1a8+q6hFGG8JBlpne7Oer7bse9k4uTK q/CzyNzC0lnjjcULpa4ptRlycH0ruD9DPY7Lco9XqYd3l/c9742PmTEqN5TZseKD XD7+hwT1tk7W8rihm8KETCP6sKlXz4w8tJiWe6IT3zwRzvXIolxxK93heQuaX73Z HFDmvTPVLUiWF8ftKTyWZM3w+jsbSH0QSrMCIHKJrPTRWTKphx0DUP74lWjNsvGs FFBjpAgrflLihxiuRrcLmekGn0xCTjhQWIo2GoiWTgLSEHNQQQUNO+15/kcU/vlI hh3DJpiBKeSnUapHHL0OEK6ryeHoG95akiRjImwWVthNLk4KEuWtlhFPYBtulO5A PA02trE4Ah769effX0ZYdNl23KbW4VxpZ8VZv+kp7RTrDKxw551HoEFJ5ja0nkvB O1CfsE7x0GH/Rbi/Hxhu =KRcc -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/afaerber/tags/qom-devices-for-peter' into staging QOM infrastructure fixes and device conversions * QTest cleanups and test cases for PCI NICs * NAND fix for "info qtree" * Cleanup and extension of QOM machine tests * IndustryPack test cases and conversion to QOM realize * I2C cleanups * Cleanups of legacy qdev properties # gpg: Signature made Mon 17 Feb 2014 22:15:37 GMT using RSA key ID 3E7E013F # gpg: Good signature from "Andreas Färber <afaerber@suse.de>" # gpg: aka "Andreas Färber <afaerber@suse.com>" * remotes/afaerber/tags/qom-devices-for-peter: (49 commits) qtest: Include system headers before user headers qapi: Refine human printing of sizes qdev: Use QAPI type names for properties qdev: Add enum property types to QAPI schema block: Handle "rechs" and "large" translation options qdev: Remove hex8/32/64 property types qdev: Remove most legacy printers qdev: Use human mode in "info qtree" qapi: Add human mode to StringOutputVisitor qdev: Inline qdev_prop_parse() qdev: Legacy properties are just strings qdev: Legacy properties are now read-only qdev: Remove legacy parsers for hex8/32/64 qdev: Sizes are now parsed by StringInputVisitor qapi: Add size parser to StringInputVisitor qtest: Don't segfault with invalid -qtest option ipack: Move IndustryPack out of hw/char/ ipoctal232: QOM parent field cleanup ipack: QOM parent field cleanup for IPackDevice ipack: QOM parent field cleanup for IPackBus ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
61e8a92364
124 changed files with 1049 additions and 865 deletions
|
@ -1,5 +1,9 @@
|
|||
export SRC_PATH
|
||||
|
||||
# Get the list of all supported sysemu targets
|
||||
SYSEMU_TARGET_LIST := $(subst -softmmu.mak,,$(notdir \
|
||||
$(wildcard $(SRC_PATH)/default-configs/*-softmmu.mak)))
|
||||
|
||||
check-unit-y = tests/check-qdict$(EXESUF)
|
||||
gcov-files-check-qdict-y = qobject/qdict.c
|
||||
check-unit-y += tests/check-qfloat$(EXESUF)
|
||||
|
@ -60,64 +64,78 @@ check-block-$(CONFIG_POSIX) += tests/qemu-iotests-quick.sh
|
|||
|
||||
# All QTests for now are POSIX-only, but the dependencies are
|
||||
# really in libqtest, not in the testcases themselves.
|
||||
|
||||
gcov-files-ipack-y += hw/ipack/ipack.c
|
||||
check-qtest-ipack-y += tests/ipoctal232-test$(EXESUF)
|
||||
gcov-files-ipack-y += hw/char/ipoctal232.c
|
||||
|
||||
gcov-files-virtio-y += i386-softmmu/hw/virtio/virtio.c
|
||||
check-qtest-virtio-y += tests/virtio-net-test$(EXESUF)
|
||||
gcov-files-virtio-y += i386-softmmu/hw/net/virtio-net.c
|
||||
|
||||
check-qtest-pci-y += tests/e1000-test$(EXESUF)
|
||||
gcov-files-pci-y += hw/net/e1000.c
|
||||
check-qtest-pci-y += tests/rtl8139-test$(EXESUF)
|
||||
gcov-files-pci-y += hw/net/rtl8139.c
|
||||
check-qtest-pci-y += tests/pcnet-test$(EXESUF)
|
||||
gcov-files-pci-y += hw/net/pcnet.c
|
||||
gcov-files-pci-y += hw/net/pcnet-pci.c
|
||||
check-qtest-pci-y += tests/eepro100-test$(EXESUF)
|
||||
gcov-files-pci-y += hw/net/eepro100.c
|
||||
check-qtest-pci-y += tests/ne2000-test$(EXESUF)
|
||||
gcov-files-pci-y += hw/net/ne2000.c
|
||||
check-qtest-pci-y += $(check-qtest-virtio-y)
|
||||
gcov-files-pci-y += $(gcov-files-virtio-y) hw/virtio/virtio-pci.c
|
||||
check-qtest-pci-y += tests/tpci200-test$(EXESUF)
|
||||
gcov-files-pci-y += hw/char/tpci200.c
|
||||
check-qtest-pci-y += $(check-qtest-ipack-y)
|
||||
gcov-files-pci-y += $(gcov-files-ipack-y) hw/ipack/tpci200.c
|
||||
|
||||
check-qtest-i386-y = tests/endianness-test$(EXESUF)
|
||||
check-qtest-i386-y += tests/fdc-test$(EXESUF)
|
||||
gcov-files-i386-y = hw/fdc.c
|
||||
gcov-files-i386-y = hw/block/fdc.c
|
||||
check-qtest-i386-y += tests/ide-test$(EXESUF)
|
||||
check-qtest-i386-y += tests/hd-geo-test$(EXESUF)
|
||||
gcov-files-i386-y += hw/hd-geometry.c
|
||||
gcov-files-i386-y += hw/block/hd-geometry.c
|
||||
check-qtest-i386-y += tests/boot-order-test$(EXESUF)
|
||||
check-qtest-i386-y += tests/acpi-test$(EXESUF)
|
||||
check-qtest-i386-y += tests/rtc-test$(EXESUF)
|
||||
check-qtest-i386-y += tests/i440fx-test$(EXESUF)
|
||||
check-qtest-i386-y += tests/fw_cfg-test$(EXESUF)
|
||||
check-qtest-i386-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-i386-y += tests/blockdev-test$(EXESUF)
|
||||
check-qtest-i386-y += tests/qdev-monitor-test$(EXESUF)
|
||||
check-qtest-i386-y += $(check-qtest-pci-y)
|
||||
gcov-files-i386-y += $(gcov-files-pci-y)
|
||||
check-qtest-i386-y += tests/vmxnet3-test$(EXESUF)
|
||||
gcov-files-i386-y += hw/net/vmxnet3.c
|
||||
gcov-files-i386-y += hw/net/vmxnet_rx_pkt.c
|
||||
gcov-files-i386-y += hw/net/vmxnet_tx_pkt.c
|
||||
check-qtest-x86_64-y = $(check-qtest-i386-y)
|
||||
gcov-files-i386-y += i386-softmmu/hw/mc146818rtc.c
|
||||
gcov-files-i386-y += i386-softmmu/hw/timer/mc146818rtc.c
|
||||
gcov-files-x86_64-y = $(subst i386-softmmu/,x86_64-softmmu/,$(gcov-files-i386-y))
|
||||
check-qtest-mips-y = tests/endianness-test$(EXESUF)
|
||||
check-qtest-mips64-y = tests/endianness-test$(EXESUF)
|
||||
check-qtest-mips64el-y = tests/endianness-test$(EXESUF)
|
||||
check-qtest-mips-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-mipsel-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-mips64-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-mips64el-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-ppc-y = tests/endianness-test$(EXESUF)
|
||||
check-qtest-ppc64-y = tests/endianness-test$(EXESUF)
|
||||
check-qtest-sh4-y = tests/endianness-test$(EXESUF)
|
||||
check-qtest-sh4eb-y = tests/endianness-test$(EXESUF)
|
||||
check-qtest-sh4-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-sh4eb-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-sparc64-y = tests/endianness-test$(EXESUF)
|
||||
#check-qtest-sparc-y = tests/m48t59-test$(EXESUF)
|
||||
#check-qtest-sparc64-y += tests/m48t59-test$(EXESUF)
|
||||
gcov-files-sparc-y += hw/m48t59.c
|
||||
gcov-files-sparc64-y += hw/m48t59.c
|
||||
check-qtest-sparc-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-sparc64-y += tests/qom-test$(EXESUF)
|
||||
gcov-files-sparc-y += hw/timer/m48t59.c
|
||||
gcov-files-sparc64-y += hw/timer/m48t59.c
|
||||
check-qtest-arm-y = tests/tmp105-test$(EXESUF)
|
||||
gcov-files-arm-y += hw/tmp105.c
|
||||
check-qtest-arm-y += tests/qom-test$(EXESUF)
|
||||
gcov-files-arm-y += hw/misc/tmp105.c
|
||||
check-qtest-ppc-y += tests/boot-order-test$(EXESUF)
|
||||
check-qtest-ppc64-y += tests/boot-order-test$(EXESUF)
|
||||
check-qtest-ppc-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-ppc64-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-ppcemb-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-alpha-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-cris-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-lm32-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-m68k-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-microblaze-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-microblazeel-y = $(check-qtest-microblaze-y)
|
||||
check-qtest-moxie-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-or32-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-s390x-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-unicore32-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-xtensa-y += tests/qom-test$(EXESUF)
|
||||
check-qtest-xtensaeb-y = $(check-qtest-xtensa-y)
|
||||
|
||||
# qom-test works for all sysemu architectures:
|
||||
$(foreach target,$(SYSEMU_TARGET_LIST), \
|
||||
$(eval check-qtest-$(target)-y += tests/qom-test$(EXESUF)))
|
||||
|
||||
check-qapi-schema-y := $(addprefix tests/qapi-schema/, \
|
||||
comments.json empty.json funny-char.json indented-expr.json \
|
||||
missing-colon.json missing-comma-list.json \
|
||||
|
@ -211,6 +229,15 @@ tests/acpi-test$(EXESUF): tests/acpi-test.o $(libqos-obj-y)
|
|||
tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
|
||||
tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y)
|
||||
tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y)
|
||||
tests/e1000-test$(EXESUF): tests/e1000-test.o
|
||||
tests/rtl8139-test$(EXESUF): tests/rtl8139-test.o
|
||||
tests/pcnet-test$(EXESUF): tests/pcnet-test.o
|
||||
tests/eepro100-test$(EXESUF): tests/eepro100-test.o
|
||||
tests/vmxnet3-test$(EXESUF): tests/vmxnet3-test.o
|
||||
tests/ne2000-test$(EXESUF): tests/ne2000-test.o
|
||||
tests/virtio-net-test$(EXESUF): tests/virtio-net-test.o
|
||||
tests/tpci200-test$(EXESUF): tests/tpci200-test.o
|
||||
tests/ipoctal232-test$(EXESUF): tests/ipoctal232-test.o
|
||||
tests/qom-test$(EXESUF): tests/qom-test.o
|
||||
tests/blockdev-test$(EXESUF): tests/blockdev-test.o $(libqos-pc-obj-y)
|
||||
tests/qdev-monitor-test$(EXESUF): tests/qdev-monitor-test.o $(libqos-pc-obj-y)
|
||||
|
|
33
tests/e1000-test.c
Normal file
33
tests/e1000-test.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* QTest testcase for e1000 NIC
|
||||
*
|
||||
* Copyright (c) 2013-2014 SUSE LINUX Products GmbH
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
/* Tests only initialization so far. TODO: Replace with functional tests */
|
||||
static void nop(void)
|
||||
{
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
qtest_add_func("/e1000/nop", nop);
|
||||
|
||||
qtest_start("-device e1000");
|
||||
ret = g_test_run();
|
||||
|
||||
qtest_end();
|
||||
|
||||
return ret;
|
||||
}
|
63
tests/eepro100-test.c
Normal file
63
tests/eepro100-test.c
Normal file
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
* QTest testcase for eepro100 NIC
|
||||
*
|
||||
* Copyright (c) 2013-2014 SUSE LINUX Products GmbH
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
static void test_device(gconstpointer data)
|
||||
{
|
||||
const char *model = data;
|
||||
QTestState *s;
|
||||
char *args;
|
||||
|
||||
args = g_strdup_printf("-device %s", model);
|
||||
s = qtest_start(args);
|
||||
|
||||
/* Tests only initialization so far. TODO: Implement functional tests */
|
||||
|
||||
if (s) {
|
||||
qtest_quit(s);
|
||||
}
|
||||
g_free(args);
|
||||
}
|
||||
|
||||
static const char *models[] = {
|
||||
"i82550",
|
||||
"i82551",
|
||||
"i82557a",
|
||||
"i82557b",
|
||||
"i82557c",
|
||||
"i82558a",
|
||||
"i82558b",
|
||||
"i82559a",
|
||||
"i82559b",
|
||||
"i82559c",
|
||||
"i82559er",
|
||||
"i82562",
|
||||
"i82801",
|
||||
};
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(models); i++) {
|
||||
char *path;
|
||||
|
||||
path = g_strdup_printf("/%s/eepro100/%s",
|
||||
qtest_get_arch(), models[i]);
|
||||
g_test_add_data_func(path, models[i], test_device);
|
||||
}
|
||||
|
||||
return g_test_run();
|
||||
}
|
|
@ -10,7 +10,6 @@
|
|||
* See the COPYING file in the top-level directory.
|
||||
*
|
||||
*/
|
||||
#include "libqtest.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <stdio.h>
|
||||
|
@ -18,6 +17,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "libqtest.h"
|
||||
#include "qemu/bswap.h"
|
||||
|
||||
typedef struct TestCase TestCase;
|
||||
|
|
|
@ -10,15 +10,14 @@
|
|||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#define NO_QEMU_PROTOS
|
||||
|
||||
#include "libqtest.h"
|
||||
#include "hw/nvram/fw_cfg.h"
|
||||
#include "libqos/fw_cfg.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <glib.h>
|
||||
|
||||
#include "libqtest.h"
|
||||
#define NO_QEMU_PROTOS
|
||||
#include "hw/nvram/fw_cfg.h"
|
||||
#include "libqos/fw_cfg.h"
|
||||
|
||||
static uint64_t ram_size = 128 << 20;
|
||||
static uint16_t nb_cpus = 1;
|
||||
static uint16_t max_cpus = 1;
|
||||
|
|
|
@ -12,12 +12,6 @@
|
|||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include "libqos/pci.h"
|
||||
#include "libqos/pci-pc.h"
|
||||
#include "libqtest.h"
|
||||
|
||||
#include "hw/pci/pci_regs.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
@ -26,6 +20,11 @@
|
|||
#include <sys/mman.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "libqtest.h"
|
||||
#include "libqos/pci.h"
|
||||
#include "libqos/pci-pc.h"
|
||||
#include "hw/pci/pci_regs.h"
|
||||
|
||||
#define BROKEN 1
|
||||
|
||||
#define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
|
||||
|
|
33
tests/ipoctal232-test.c
Normal file
33
tests/ipoctal232-test.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* QTest testcase for IndustryPack Octal-RS232
|
||||
*
|
||||
* Copyright (c) 2014 SUSE LINUX Products GmbH
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
/* Tests only initialization so far. TODO: Replace with functional tests */
|
||||
static void nop(void)
|
||||
{
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
qtest_add_func("/ipoctal232/tpci200/nop", nop);
|
||||
|
||||
qtest_start("-device tpci200,id=ipack0 -device ipoctal232,bus=ipack0.0");
|
||||
ret = g_test_run();
|
||||
|
||||
qtest_end();
|
||||
|
||||
return ret;
|
||||
}
|
|
@ -11,7 +11,6 @@
|
|||
* See the COPYING file in the top-level directory.
|
||||
*
|
||||
*/
|
||||
#include "libqtest.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <stdio.h>
|
||||
|
@ -19,6 +18,8 @@
|
|||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "libqtest.h"
|
||||
|
||||
#define RTC_SECONDS 0x9
|
||||
#define RTC_MINUTES 0xa
|
||||
#define RTC_HOURS 0xb
|
||||
|
|
33
tests/ne2000-test.c
Normal file
33
tests/ne2000-test.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* QTest testcase for ne2000 NIC
|
||||
*
|
||||
* Copyright (c) 2014 SUSE LINUX Products GmbH
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
/* Tests only initialization so far. TODO: Replace with functional tests */
|
||||
static void pci_nop(void)
|
||||
{
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
qtest_add_func("/ne2000/pci/nop", pci_nop);
|
||||
|
||||
qtest_start("-device ne2k_pci");
|
||||
ret = g_test_run();
|
||||
|
||||
qtest_end();
|
||||
|
||||
return ret;
|
||||
}
|
33
tests/pcnet-test.c
Normal file
33
tests/pcnet-test.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* QTest testcase for PC-Net NIC
|
||||
*
|
||||
* Copyright (c) 2013-2014 SUSE LINUX Products GmbH
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
/* Tests only initialization so far. TODO: Replace with functional tests */
|
||||
static void pci_nop(void)
|
||||
{
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
qtest_add_func("/pcnet/pci/nop", pci_nop);
|
||||
|
||||
qtest_start("-device pcnet");
|
||||
ret = g_test_run();
|
||||
|
||||
qtest_end();
|
||||
|
||||
return ret;
|
||||
}
|
294
tests/qom-test.c
294
tests/qom-test.c
|
@ -6,250 +6,94 @@
|
|||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
#include "libqtest.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
static void test_nop(gconstpointer data)
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/qmp/types.h"
|
||||
|
||||
static const char *blacklist_x86[] = {
|
||||
"xenfv", "xenpv", NULL
|
||||
};
|
||||
|
||||
static const struct {
|
||||
const char *arch;
|
||||
const char **machine;
|
||||
} blacklists[] = {
|
||||
{ "i386", blacklist_x86 },
|
||||
{ "x86_64", blacklist_x86 },
|
||||
};
|
||||
|
||||
static bool is_blacklisted(const char *arch, const char *mach)
|
||||
{
|
||||
int i;
|
||||
const char **p;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(blacklists); i++) {
|
||||
if (!strcmp(blacklists[i].arch, arch)) {
|
||||
for (p = blacklists[i].machine; *p; p++) {
|
||||
if (!strcmp(*p, mach)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static void test_machine(gconstpointer data)
|
||||
{
|
||||
QTestState *s;
|
||||
const char *machine = data;
|
||||
char *args;
|
||||
QDict *response;
|
||||
|
||||
args = g_strdup_printf("-machine %s", machine);
|
||||
s = qtest_start(args);
|
||||
if (s) {
|
||||
qtest_quit(s);
|
||||
}
|
||||
qtest_start(args);
|
||||
response = qmp("{ 'execute': 'quit' }");
|
||||
g_assert(qdict_haskey(response, "return"));
|
||||
qtest_end();
|
||||
g_free(args);
|
||||
}
|
||||
|
||||
static const char *x86_machines[] = {
|
||||
"pc",
|
||||
"isapc",
|
||||
"q35",
|
||||
};
|
||||
|
||||
static const char *alpha_machines[] = {
|
||||
"clipper",
|
||||
};
|
||||
|
||||
static const char *arm_machines[] = {
|
||||
"integratorcp",
|
||||
"versatilepb",
|
||||
"versatileab",
|
||||
"lm3s811evb",
|
||||
"lm3s6965evb",
|
||||
"collie",
|
||||
"akita",
|
||||
"spitz",
|
||||
"borzoi",
|
||||
"terrier",
|
||||
"tosa",
|
||||
"cheetah",
|
||||
"sx1-v1",
|
||||
"sx1",
|
||||
"realview-eb",
|
||||
"realview-eb-mpcore",
|
||||
"realview-pb-a8",
|
||||
"realview-pbx-a9",
|
||||
"musicpal",
|
||||
"mainstone",
|
||||
"connex",
|
||||
"verdex",
|
||||
"z2",
|
||||
"n800",
|
||||
"n810",
|
||||
"kzm",
|
||||
"vexpress-a9",
|
||||
"vexpress-a15",
|
||||
"smdkc210",
|
||||
"nuri",
|
||||
"xilinx-zynq-a9",
|
||||
"highbank",
|
||||
"midway",
|
||||
"canon-a1100",
|
||||
"cubieboard",
|
||||
};
|
||||
|
||||
static const char *cris_machines[] = {
|
||||
"axis-dev88",
|
||||
};
|
||||
|
||||
static const char *lm32_machines[] = {
|
||||
"lm32-evr",
|
||||
"lm32-uclinux",
|
||||
"milkymist",
|
||||
};
|
||||
|
||||
static const char *m68k_machines[] = {
|
||||
"mcf5208evb",
|
||||
"an5206",
|
||||
"dummy",
|
||||
};
|
||||
|
||||
static const char *microblaze_machines[] = {
|
||||
"petalogix-ml605",
|
||||
"petalogix-s3adsp1800",
|
||||
};
|
||||
|
||||
static const char *mips_machines[] = {
|
||||
"malta",
|
||||
"magnum",
|
||||
"mips",
|
||||
"mipssim",
|
||||
"pica61",
|
||||
};
|
||||
|
||||
static const char *moxie_machines[] = {
|
||||
"moxiesim",
|
||||
};
|
||||
|
||||
static const char *openrisc_machines[] = {
|
||||
"or32-sim",
|
||||
};
|
||||
|
||||
static const char *ppc_machines[] = {
|
||||
"g3beige",
|
||||
"mac99",
|
||||
"prep",
|
||||
"mpc8544ds",
|
||||
"ppce500",
|
||||
};
|
||||
|
||||
static const char *ppc64_machines[] = {
|
||||
"pseries",
|
||||
};
|
||||
|
||||
static const char *ppc405_machines[] = {
|
||||
"ref405ep",
|
||||
"taihu",
|
||||
};
|
||||
|
||||
static const char *ppc440_machines[] = {
|
||||
"bamboo",
|
||||
"virtex-ml507",
|
||||
};
|
||||
|
||||
static const char *s390_machines[] = {
|
||||
"s390-virtio",
|
||||
"s390-ccw-virtio",
|
||||
};
|
||||
|
||||
static const char *superh_machines[] = {
|
||||
"r2d",
|
||||
"shix",
|
||||
};
|
||||
|
||||
static const char *sparc_machines[] = {
|
||||
"SS-4",
|
||||
"SS-5",
|
||||
"SS-10",
|
||||
"SS-20",
|
||||
"SS-600MP",
|
||||
"LX",
|
||||
"SPARCClassic",
|
||||
"SPARCbook",
|
||||
"leon3_generic",
|
||||
};
|
||||
|
||||
static const char *sparc64_machines[] = {
|
||||
"sun4u",
|
||||
"sun4v",
|
||||
"Niagara",
|
||||
};
|
||||
|
||||
static const char *unicore32_machines[] = {
|
||||
"puv3",
|
||||
};
|
||||
|
||||
static const char *xtensa_machines[] = {
|
||||
"sim",
|
||||
"lx60",
|
||||
"lx200",
|
||||
};
|
||||
|
||||
static void add_test_cases(const char *arch, const char *machine)
|
||||
static void add_machine_test_cases(void)
|
||||
{
|
||||
char *path;
|
||||
path = g_strdup_printf("/%s/qom/%s", arch, machine);
|
||||
g_test_add_data_func(path, machine, test_nop);
|
||||
}
|
||||
const char *arch = qtest_get_arch();
|
||||
QDict *response, *minfo;
|
||||
QList *list;
|
||||
const QListEntry *p;
|
||||
QObject *qobj;
|
||||
QString *qstr;
|
||||
const char *mname, *path;
|
||||
|
||||
#define ADD_MACHINE_TESTS(arch, array) do { \
|
||||
int i; \
|
||||
for (i = 0; i < ARRAY_SIZE(array); i++) { \
|
||||
add_test_cases((arch), (array)[i]); \
|
||||
} \
|
||||
} while (false)
|
||||
qtest_start("-machine none");
|
||||
response = qmp("{ 'execute': 'query-machines' }");
|
||||
g_assert(response);
|
||||
list = qdict_get_qlist(response, "return");
|
||||
g_assert(list);
|
||||
|
||||
for (p = qlist_first(list); p; p = qlist_next(p)) {
|
||||
minfo = qobject_to_qdict(qlist_entry_obj(p));
|
||||
g_assert(minfo);
|
||||
qobj = qdict_get(minfo, "name");
|
||||
g_assert(qobj);
|
||||
qstr = qobject_to_qstring(qobj);
|
||||
g_assert(qstr);
|
||||
mname = qstring_get_str(qstr);
|
||||
if (!is_blacklisted(arch, mname)) {
|
||||
path = g_strdup_printf("/%s/qom/%s", arch, mname);
|
||||
g_test_add_data_func(path, mname, test_machine);
|
||||
}
|
||||
}
|
||||
qtest_end();
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *arch = qtest_get_arch();
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
|
||||
add_test_cases(arch, "none");
|
||||
|
||||
if (strcmp(arch, "i386") == 0 ||
|
||||
strcmp(arch, "x86_64") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, x86_machines);
|
||||
} else if (strcmp(arch, "alpha") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, alpha_machines);
|
||||
} else if (strcmp(arch, "arm") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, arm_machines);
|
||||
} else if (strcmp(arch, "cris") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, cris_machines);
|
||||
} else if (strcmp(arch, "lm32") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, lm32_machines);
|
||||
} else if (strcmp(arch, "m68k") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, m68k_machines);
|
||||
} else if (strcmp(arch, "microblaze") == 0 ||
|
||||
strcmp(arch, "microblazeel") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, microblaze_machines);
|
||||
} else if (strcmp(arch, "mips") == 0 ||
|
||||
strcmp(arch, "mipsel") == 0 ||
|
||||
strcmp(arch, "mips64") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, mips_machines);
|
||||
} else if (strcmp(arch, "mips64el") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, mips_machines);
|
||||
add_test_cases(arch, "fulong2e");
|
||||
} else if (strcmp(arch, "moxie") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, moxie_machines);
|
||||
} else if (strcmp(arch, "or32") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, openrisc_machines);
|
||||
} else if (strcmp(arch, "ppcemb") == 0) {
|
||||
#if 0
|
||||
/* XXX Available in ppcemb but don't work */
|
||||
ADD_MACHINE_TESTS(arch, ppc405_machines);
|
||||
#endif
|
||||
ADD_MACHINE_TESTS(arch, ppc440_machines);
|
||||
} else if (strcmp(arch, "ppc") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, ppc405_machines);
|
||||
ADD_MACHINE_TESTS(arch, ppc440_machines);
|
||||
ADD_MACHINE_TESTS(arch, ppc_machines);
|
||||
} else if (strcmp(arch, "ppc64") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, ppc405_machines);
|
||||
ADD_MACHINE_TESTS(arch, ppc440_machines);
|
||||
ADD_MACHINE_TESTS(arch, ppc_machines);
|
||||
ADD_MACHINE_TESTS(arch, ppc64_machines);
|
||||
} else if (strcmp(arch, "s390x") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, s390_machines);
|
||||
} else if (strcmp(arch, "sh4") == 0 ||
|
||||
strcmp(arch, "sh4eb") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, superh_machines);
|
||||
} else if (strcmp(arch, "sparc") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, sparc_machines);
|
||||
} else if (strcmp(arch, "sparc64") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, sparc64_machines);
|
||||
} else if (strcmp(arch, "unicore32") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, unicore32_machines);
|
||||
} else if (strcmp(arch, "xtensa") == 0 ||
|
||||
strcmp(arch, "xtensaeb") == 0) {
|
||||
ADD_MACHINE_TESTS(arch, xtensa_machines);
|
||||
}
|
||||
add_machine_test_cases();
|
||||
|
||||
return g_test_run();
|
||||
}
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
* See the COPYING file in the top-level directory.
|
||||
*
|
||||
*/
|
||||
#include "libqtest.h"
|
||||
#include "hw/timer/mc146818rtc_regs.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <stdio.h>
|
||||
|
@ -19,6 +17,9 @@
|
|||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "libqtest.h"
|
||||
#include "hw/timer/mc146818rtc_regs.h"
|
||||
|
||||
static uint8_t base = 0x70;
|
||||
|
||||
static int bcd2dec(int value)
|
||||
|
|
33
tests/rtl8139-test.c
Normal file
33
tests/rtl8139-test.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* QTest testcase for Realtek 8139 NIC
|
||||
*
|
||||
* Copyright (c) 2013-2014 SUSE LINUX Products GmbH
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
/* Tests only initialization so far. TODO: Replace with functional tests */
|
||||
static void nop(void)
|
||||
{
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
qtest_add_func("/rtl8139/nop", nop);
|
||||
|
||||
qtest_start("-device rtl8139");
|
||||
ret = g_test_run();
|
||||
|
||||
qtest_end();
|
||||
|
||||
return ret;
|
||||
}
|
|
@ -26,7 +26,7 @@ typedef struct TestOutputVisitorData {
|
|||
static void visitor_output_setup(TestOutputVisitorData *data,
|
||||
const void *unused)
|
||||
{
|
||||
data->sov = string_output_visitor_new();
|
||||
data->sov = string_output_visitor_new(false);
|
||||
g_assert(data->sov != NULL);
|
||||
|
||||
data->ov = string_output_get_visitor(data->sov);
|
||||
|
|
|
@ -1083,7 +1083,7 @@ static void string_serialize(void *native_in, void **datap,
|
|||
{
|
||||
StringSerializeData *d = g_malloc0(sizeof(*d));
|
||||
|
||||
d->sov = string_output_visitor_new();
|
||||
d->sov = string_output_visitor_new(false);
|
||||
visit(string_output_get_visitor(d->sov), &native_in, errp);
|
||||
*datap = d;
|
||||
}
|
||||
|
|
|
@ -6,12 +6,13 @@
|
|||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "libqtest.h"
|
||||
#include "libqos/i2c.h"
|
||||
#include "hw/misc/tmp105_regs.h"
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#define OMAP2_I2C_1_BASE 0x48070000
|
||||
|
||||
#define N8X0_ADDR 0x48
|
||||
|
|
33
tests/tpci200-test.c
Normal file
33
tests/tpci200-test.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* QTest testcase for tpci200 PCI-IndustryPack bridge
|
||||
*
|
||||
* Copyright (c) 2014 SUSE LINUX Products GmbH
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
/* Tests only initialization so far. TODO: Replace with functional tests */
|
||||
static void nop(void)
|
||||
{
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
qtest_add_func("/tpci200/nop", nop);
|
||||
|
||||
qtest_start("-device tpci200");
|
||||
ret = g_test_run();
|
||||
|
||||
qtest_end();
|
||||
|
||||
return ret;
|
||||
}
|
33
tests/virtio-net-test.c
Normal file
33
tests/virtio-net-test.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* QTest testcase for VirtIO NIC
|
||||
*
|
||||
* Copyright (c) 2014 SUSE LINUX Products GmbH
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
/* Tests only initialization so far. TODO: Replace with functional tests */
|
||||
static void pci_nop(void)
|
||||
{
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
qtest_add_func("/virtio/net/pci/nop", pci_nop);
|
||||
|
||||
qtest_start("-device virtio-net-pci");
|
||||
ret = g_test_run();
|
||||
|
||||
qtest_end();
|
||||
|
||||
return ret;
|
||||
}
|
33
tests/vmxnet3-test.c
Normal file
33
tests/vmxnet3-test.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* QTest testcase for vmxnet3 NIC
|
||||
*
|
||||
* Copyright (c) 2013-2014 SUSE LINUX Products GmbH
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <string.h>
|
||||
#include "libqtest.h"
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
/* Tests only initialization so far. TODO: Replace with functional tests */
|
||||
static void nop(void)
|
||||
{
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
qtest_add_func("/vmxnet3/nop", nop);
|
||||
|
||||
qtest_start("-device vmxnet3");
|
||||
ret = g_test_run();
|
||||
|
||||
qtest_end();
|
||||
|
||||
return ret;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue