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:
Peter Maydell 2014-02-20 13:05:47 +00:00
commit 61e8a92364
124 changed files with 1049 additions and 865 deletions

View file

@ -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
View 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
View 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();
}

View file

@ -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;

View file

@ -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;

View file

@ -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
View 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;
}

View file

@ -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
View 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
View 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;
}

View file

@ -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();
}

View file

@ -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
View 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;
}

View file

@ -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);

View file

@ -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;
}

View file

@ -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
View 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
View 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
View 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;
}