Commit 6ebb8d2a authored by Thomas Huth's avatar Thomas Huth
Browse files

tests: qpci_unplug_acpi_device_test() should not rely on global_qtest



libqos functions should not use functions that require global_qtest to
be set, since such library functions could also be used by tests that
deal with multiple test states. Add a parameter to this function to
explicitly specify the test state.

Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <20190508143209.24350-1-thuth@redhat.com>
Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
parent a771729c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -231,8 +231,10 @@ static void test_e1000e_multiple_transfers(void *obj, void *data,

static void test_e1000e_hotplug(void *obj, void *data, QGuestAllocator * alloc)
{
    QTestState *qts = global_qtest;  /* TODO: get rid of global_qtest here */

    qtest_qmp_device_add("e1000e", "e1000e_net", "{'addr': '0x06'}");
    qpci_unplug_acpi_device_test("e1000e_net", 0x06);
    qpci_unplug_acpi_device_test(qts, "e1000e_net", 0x06);
}

static void data_test_clear(void *sockets)
+6 −3
Original line number Diff line number Diff line
@@ -383,18 +383,21 @@ static void test_ivshmem_server(void)

static void test_ivshmem_hotplug(void)
{
    QTestState *qts;
    const char *arch = qtest_get_arch();

    qtest_start("-object memory-backend-ram,size=1M,id=mb1");
    qts = qtest_init("-object memory-backend-ram,size=1M,id=mb1");

    global_qtest = qts;  /* TODO: Get rid of global_qtest here */
    qtest_qmp_device_add("ivshmem-plain", "iv1",
                         "{'addr': %s, 'memdev': 'mb1'}",
                         stringify(PCI_SLOT_HP));
    if (strcmp(arch, "ppc64") != 0) {
        qpci_unplug_acpi_device_test("iv1", PCI_SLOT_HP);
        qpci_unplug_acpi_device_test(qts, "iv1", PCI_SLOT_HP);
    }

    qtest_end();
    qtest_quit(qts);
    global_qtest = NULL;
}

static void test_ivshmem_memdev(void)
+5 −5
Original line number Diff line number Diff line
@@ -176,19 +176,19 @@ void qpci_free_pc(QPCIBus *bus)
    g_free(s);
}

void qpci_unplug_acpi_device_test(const char *id, uint8_t slot)
void qpci_unplug_acpi_device_test(QTestState *qts, const char *id, uint8_t slot)
{
    QDict *response;

    response = qmp("{'execute': 'device_del', 'arguments': {'id': %s}}",
                   id);
    response = qtest_qmp(qts, "{'execute': 'device_del',"
                              " 'arguments': {'id': %s}}", id);
    g_assert(response);
    g_assert(!qdict_haskey(response, "error"));
    qobject_unref(response);

    outb(ACPI_PCIHP_ADDR + PCI_EJ_BASE, 1 << slot);
    qtest_outb(qts, ACPI_PCIHP_ADDR + PCI_EJ_BASE, 1 << slot);

    qmp_eventwait("DEVICE_DELETED");
    qtest_qmp_eventwait(qts, "DEVICE_DELETED");
}

static void qpci_pc_register_nodes(void)
+1 −1
Original line number Diff line number Diff line
@@ -123,7 +123,7 @@ QPCIBar qpci_iomap(QPCIDevice *dev, int barno, uint64_t *sizeptr);
void qpci_iounmap(QPCIDevice *dev, QPCIBar addr);
QPCIBar qpci_legacy_iomap(QPCIDevice *dev, uint16_t addr);

void qpci_unplug_acpi_device_test(const char *id, uint8_t slot);
void qpci_unplug_acpi_device_test(QTestState *qs, const char *id, uint8_t slot);

void add_qpci_address(QOSGraphEdgeOptions *opts, QPCIAddress *addr);
#endif
+2 −1
Original line number Diff line number Diff line
@@ -679,6 +679,7 @@ static void pci_hotplug(void *obj, void *data, QGuestAllocator *t_alloc)
{
    QVirtioPCIDevice *dev1 = obj;
    QVirtioPCIDevice *dev;
    QTestState *qts = dev1->pdev->bus->qts;

    /* plug secondary disk */
    qtest_qmp_device_add("virtio-blk-pci", "drv1",
@@ -693,7 +694,7 @@ static void pci_hotplug(void *obj, void *data, QGuestAllocator *t_alloc)
    qos_object_destroy((QOSGraphObject *)dev);

    /* unplug secondary disk */
    qpci_unplug_acpi_device_test("drv1", PCI_SLOT_HP);
    qpci_unplug_acpi_device_test(qts, "drv1", PCI_SLOT_HP);
}

/*
Loading