[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 05/19] i440fx-test: give each GTest case its own qtes
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 05/19] i440fx-test: give each GTest case its own qtest |
Date: |
Mon, 23 Dec 2013 18:11:43 +0200 |
From: Laszlo Ersek <address@hidden>
The current two GTest cases, /i440fx/defaults and /i440fx/pam can share a
qemu process, but the next two cases will need dedicated instances. It is
messy (and order-dependent) to dynamically configure GTest cases one by
one to start, stop, or keep the current qtest (*); let's just have each
GTest work with its own qtest. The performance difference should be
negligible.
(*) As g_test_run() can be invoked at most once per process startup, and
it runs GTest cases in sequence, we'd need clumsy data structures to
control each GTest case to start/stop/keep the qemu instance. Or, we'd
have to code the same information into the test methods themselves, which
would make them even more order-dependent.
Signed-off-by: Laszlo Ersek <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
tests/i440fx-test.c | 32 +++++++++++++++++++-------------
1 file changed, 19 insertions(+), 13 deletions(-)
diff --git a/tests/i440fx-test.c b/tests/i440fx-test.c
index 6ac46bf..3962bca 100644
--- a/tests/i440fx-test.c
+++ b/tests/i440fx-test.c
@@ -28,16 +28,27 @@
typedef struct TestData
{
int num_cpus;
- QPCIBus *bus;
} TestData;
+static QPCIBus *test_start_get_bus(const TestData *s)
+{
+ char *cmdline;
+
+ cmdline = g_strdup_printf("-smp %d", s->num_cpus);
+ qtest_start(cmdline);
+ g_free(cmdline);
+ return qpci_init_pc();
+}
+
static void test_i440fx_defaults(gconstpointer opaque)
{
const TestData *s = opaque;
+ QPCIBus *bus;
QPCIDevice *dev;
uint32_t value;
- dev = qpci_device_find(s->bus, QPCI_DEVFN(0, 0));
+ bus = test_start_get_bus(s);
+ dev = qpci_device_find(bus, QPCI_DEVFN(0, 0));
g_assert(dev != NULL);
/* 3.2.2 */
@@ -121,6 +132,8 @@ static void test_i440fx_defaults(gconstpointer opaque)
g_assert_cmpint(qpci_config_readb(dev, 0x91), ==, 0x00); /* ERRSTS */
/* 3.2.26 */
g_assert_cmpint(qpci_config_readb(dev, 0x93), ==, 0x00); /* TRC */
+
+ qtest_end();
}
#define PAM_RE 1
@@ -179,6 +192,7 @@ static void write_area(uint32_t start, uint32_t end,
uint8_t value)
static void test_i440fx_pam(gconstpointer opaque)
{
const TestData *s = opaque;
+ QPCIBus *bus;
QPCIDevice *dev;
int i;
static struct {
@@ -201,7 +215,8 @@ static void test_i440fx_pam(gconstpointer opaque)
{ 0xEC000, 0xEFFFF }, /* BIOS Extension */
};
- dev = qpci_device_find(s->bus, QPCI_DEVFN(0, 0));
+ bus = test_start_get_bus(s);
+ dev = qpci_device_find(bus, QPCI_DEVFN(0, 0));
g_assert(dev != NULL);
for (i = 0; i < ARRAY_SIZE(pam_area); i++) {
@@ -254,30 +269,21 @@ static void test_i440fx_pam(gconstpointer opaque)
/* Verify the area is not our new mask */
g_assert(!verify_area(pam_area[i].start, pam_area[i].end, 0x82));
}
+ qtest_end();
}
int main(int argc, char **argv)
{
TestData data;
- char *cmdline;
int ret;
g_test_init(&argc, &argv, NULL);
data.num_cpus = 1;
- cmdline = g_strdup_printf("-smp %d", data.num_cpus);
- qtest_start(cmdline);
- g_free(cmdline);
-
- data.bus = qpci_init_pc();
-
g_test_add_data_func("/i440fx/defaults", &data, test_i440fx_defaults);
g_test_add_data_func("/i440fx/pam", &data, test_i440fx_pam);
ret = g_test_run();
-
- qtest_end();
-
return ret;
}
--
MST
- [Qemu-devel] [PULL 00/19] acpi, pci, pc, fedora, virtio fixes and enhancements, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 01/19] piix: gigabyte alignment for ram, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 02/19] pc_piix: document gigabyte_align, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 03/19] hw/i386/pc_sysfw: support two flash drives, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 04/19] i440fx-test: qtest_start() should be paired with qtest_end(), Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 05/19] i440fx-test: give each GTest case its own qtest,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 06/19] i440fx-test: generate temporary firmware blob, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 07/19] i440fx-test: verify firmware under 4G and 1M, both -bios and -pflash, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 08/19] acpi: piix4: remove not needed GPE0 mask, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 09/19] acpi: factor out common pm_update_sci() into acpi core, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 10/19] acpi: ich9: allow guest to clear SCI rised by GPE, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 11/19] ACPI: Q35 DSDT: fix CPU hotplug GPE0.2 handler, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 12/19] ACPI/DSDT-CPU: cleanup bogus comment, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 13/19] pci: do not export pci_bus_reset, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 15/19] qdev: allow both pre- and post-order vists in qdev walking functions, Michael S. Tsirkin, 2013/12/23
- [Qemu-devel] [PULL 14/19] pci: clean up resetting of IRQs, Michael S. Tsirkin, 2013/12/23