static int
mymain(void)
{
    int ret = 0;
    unsigned int flags = VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;

#define DO_TEST_FULL(shouldFail, pool, vol, inputpool, inputvol, cmdline,    \
                     flags, imgformat)                                       \
    do {                                                                     \
        struct testInfo info = { shouldFail, pool, vol, inputpool, inputvol, \
                                 cmdline, flags, imgformat };                \
        if (virtTestRun("Storage Vol XML-2-argv " cmdline,                   \
                        1, testCompareXMLToArgvHelper, &info) < 0)           \
            ret = -1;                                                        \
       }                                                                     \
    while (0);

#define DO_TEST(pool, ...)                                                 \
    DO_TEST_FULL(false, pool, __VA_ARGS__)

#define DO_TEST_FAIL(pool, ...)                                            \
    DO_TEST_FULL(true, pool, __VA_ARGS__)

    DO_TEST("pool-dir", "vol-qcow2",
            NULL, NULL,
            "qcow2", 0, FMT_OPTIONS);
    DO_TEST_FAIL("pool-dir", "vol-qcow2",
                 NULL, NULL,
                 "qcow2-prealloc", flags, FMT_OPTIONS);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            NULL, NULL,
            "qcow2-nobacking-prealloc", flags, FMT_OPTIONS);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            "pool-dir", "vol-file",
            "qcow2-nobacking-convert-prealloc", flags, FMT_OPTIONS);
    DO_TEST_FAIL("pool-dir", "vol-qcow2",
                 "pool-dir", "vol-file",
                 "qcow2-convert-prealloc", flags, FMT_OPTIONS);
    DO_TEST("pool-dir", "vol-qcow2",
            NULL, NULL,
            "qcow2-flag", 0, FMT_FLAG);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            NULL, NULL,
            "qcow2-nobacking-flag", 0, FMT_FLAG);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            "pool-dir", "vol-file",
            "qcow2-nobacking-convert-flag", 0, FMT_FLAG);
    DO_TEST("pool-dir", "vol-qcow2",
            NULL, NULL,
            "qcow2-none", 0, FMT_NONE);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            NULL, NULL,
            "qcow2-nobacking-none", 0, FMT_NONE);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            "pool-dir", "vol-file",
            "qcow2-nobacking-convert-none", 0, FMT_NONE);
    DO_TEST("pool-dir", "vol-qcow2-lazy",
            NULL, NULL,
            "qcow2-lazy", 0, FMT_OPTIONS);
    DO_TEST("pool-dir", "vol-qcow2-1.1",
            NULL, NULL,
            "qcow2-1.1", 0, FMT_OPTIONS);
    DO_TEST_FAIL("pool-dir", "vol-qcow2-0.10-lazy",
                 NULL, NULL,
                 "qcow2-0.10-lazy", 0, FMT_OPTIONS);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            "pool-logical", "vol-logical",
            "qcow2-from-logical", 0, FMT_OPTIONS);
    DO_TEST("pool-logical", "vol-logical",
            "pool-dir", "vol-qcow2-nobacking",
            "logical-from-qcow2", 0, FMT_OPTIONS);

    DO_TEST("pool-dir", "vol-qcow2",
            NULL, NULL,
            "qcow2-compat", 0, FMT_COMPAT);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            NULL, NULL,
            "qcow2-nobacking-prealloc-compat", flags, FMT_COMPAT);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            "pool-dir", "vol-file",
            "qcow2-nobacking-convert-prealloc-compat", flags, FMT_COMPAT);
    DO_TEST("pool-dir", "vol-qcow2-lazy",
            NULL, NULL,
            "qcow2-lazy", 0, FMT_COMPAT);
    DO_TEST("pool-dir", "vol-qcow2-1.1",
            NULL, NULL,
            "qcow2-1.1", 0, FMT_COMPAT);
    DO_TEST_FAIL("pool-dir", "vol-qcow2-0.10-lazy",
                 NULL, NULL,
                 "qcow2-0.10-lazy", 0, FMT_COMPAT);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            "pool-logical", "vol-logical",
            "qcow2-from-logical-compat", 0, FMT_COMPAT);
    DO_TEST("pool-logical", "vol-logical",
            "pool-dir", "vol-qcow2-nobacking",
            "logical-from-qcow2", 0, FMT_COMPAT);

    return ret==0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
Example #2
0
static int
mymain(void)
{
    int ret = 0;
    unsigned int flags = VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;

#define DO_TEST_FULL(shouldFail, parseflags, pool, vol, inputpool, inputvol, \
                     cmdline, flags) \
    do { \
        struct testInfo info = { shouldFail, pool, vol, inputpool, inputvol, \
                                 cmdline, flags, parseflags }; \
        if (virTestRun("Storage Vol XML-2-argv " cmdline, \
                       testCompareXMLToArgvHelper, &info) < 0) \
            ret = -1; \
       } \
    while (0);

#define DO_TEST(pool, ...) \
    DO_TEST_FULL(false, 0, pool, __VA_ARGS__)

#define DO_TEST_FAIL(pool, ...) \
    DO_TEST_FULL(true, 0, pool, __VA_ARGS__)

    DO_TEST("pool-dir", "vol-qcow2",
            NULL, NULL,
            "qcow2-compat", 0);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            NULL, NULL,
            "qcow2-nobacking-prealloc-compat", flags);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            "pool-dir", "vol-file",
            "qcow2-nobacking-convert-prealloc-compat", flags);
    DO_TEST("pool-dir", "vol-qcow2-lazy",
            NULL, NULL,
            "qcow2-lazy", 0);
    DO_TEST("pool-dir", "vol-qcow2-1.1",
            NULL, NULL,
            "qcow2-1.1", 0);
    DO_TEST_FAIL("pool-dir", "vol-qcow2-0.10-lazy",
                 NULL, NULL,
                 "qcow2-0.10-lazy", 0);
    DO_TEST("pool-dir", "vol-qcow2-nobacking",
            "pool-logical", "vol-logical",
            "qcow2-from-logical-compat", 0);
    DO_TEST("pool-logical", "vol-logical",
            "pool-dir", "vol-qcow2-nobacking",
            "logical-from-qcow2", 0);
    DO_TEST("pool-dir", "vol-qcow2-nocow",
            NULL, NULL,
            "qcow2-nocow-compat", 0);
    DO_TEST("pool-dir", "vol-qcow2-nocapacity",
            "pool-dir", "vol-file",
            "qcow2-nocapacity-convert-prealloc", flags);
    DO_TEST("pool-dir", "vol-qcow2-zerocapacity",
            NULL, NULL,
            "qcow2-zerocapacity", 0);
    DO_TEST_FULL(false, VIR_VOL_XML_PARSE_OPT_CAPACITY,
                 "pool-dir", "vol-qcow2-nocapacity-backing", NULL, NULL,
                 "qcow2-nocapacity", 0);

    DO_TEST("pool-dir", "vol-file-iso",
            NULL, NULL,
            "iso", 0);
    DO_TEST("pool-dir", "vol-file",
            "pool-dir", "vol-file-iso",
            "iso-input", 0);

    DO_TEST_FAIL("pool-dir", "vol-qcow2-encryption",
                 NULL, NULL,
                 "qcow2-encryption", 0);

    DO_TEST("pool-dir", "vol-luks",
            NULL, NULL,
            "luks", 0);
    DO_TEST("pool-dir", "vol-luks-cipher",
            NULL, NULL,
            "luks-cipher", 0);

    DO_TEST("pool-dir", "vol-luks-convert",
            "pool-dir", "vol-file",
            "luks-convert", 0);

    DO_TEST("pool-dir", "vol-luks-convert",
            "pool-dir", "vol-file-qcow2",
            "luks-convert-qcow2", 0);

    DO_TEST("pool-dir", "vol-encrypt2",
            "pool-dir", "vol-encrypt1",
            "luks-convert-encrypt", 0);

    DO_TEST("pool-dir", "vol-file",
            "pool-dir", "vol-encrypt2",
            "luks-convert-encrypt2fileraw", 0);

    DO_TEST("pool-dir", "vol-file-qcow2",
            "pool-dir", "vol-encrypt2",
            "luks-convert-encrypt2fileqcow2", 0);

    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
static int
mymain(void)
{
    int ret = 0;
    unsigned int section;

#define DO_TEST_FULL(name, updatexml, netxml, outxml, command, section,     \
                     parentIndex, flags, expectFailure)                     \
    do {                                                                    \
        const struct testInfo info = {name, updatexml, netxml, outxml,      \
                                      command, section, flags,              \
                                      parentIndex, expectFailure};          \
        if (virtTestRun("Network XML-2-XML " name,                          \
                        testCompareXMLToXMLHelper, &info) < 0)              \
            ret = -1;                                                       \
    } while (0)

#define DO_TEST(name, updatexml, netxml, outxml, command)                   \
    DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, -12435, \
                 0, false)
#define DO_TEST_FAIL(name, updatexml, netxml, command)                      \
    DO_TEST_FULL(name, updatexml, netxml, "n/a", command, section, -12345,  \
                 0, true)

#define DO_TEST_INDEX(name, updatexml, netxml, outxml, command, index)      \
    DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, index,  \
                 0, false)
#define DO_TEST_INDEX_FAIL(name, updatexml, netxml, command, index)         \
    DO_TEST_FULL(name, updatexml, netxml, "n/a", command, section, index,   \
                 0, true)


    section = VIR_NETWORK_SECTION_IP_DHCP_HOST;
    DO_TEST_INDEX_FAIL("add-host-incomplete",
                       "host-incomplete",
                       "nat-network",
                       VIR_NETWORK_UPDATE_COMMAND_ADD_LAST,
                       0);
    DO_TEST_INDEX_FAIL("add-host-new-incomplete",
                       "host-new-incomplete",
                       "nat-network",
                       VIR_NETWORK_UPDATE_COMMAND_ADD_LAST,
                       0);
    DO_TEST_INDEX_FAIL("add-host-existing",
                       "host-existing",
                       "nat-network",
                       VIR_NETWORK_UPDATE_COMMAND_ADD_LAST,
                       0);
    DO_TEST_INDEX("add-host-new",
                  "host-new",
                  "nat-network",
                  "nat-network-hosts",
                  VIR_NETWORK_UPDATE_COMMAND_ADD_LAST,
                  0);
    DO_TEST_INDEX_FAIL("modify-host-missing",
                       "host-new",
                       "nat-network",
                       VIR_NETWORK_UPDATE_COMMAND_MODIFY,
                      0);
    DO_TEST_INDEX_FAIL("modify-host-incomplete",
                       "host-incomplete",
                       "nat-network",
                       VIR_NETWORK_UPDATE_COMMAND_MODIFY,
                      0);
    DO_TEST_INDEX("modify-host",
                  "host-updated",
                  "nat-network",
                  "nat-network-host-updated",
                  VIR_NETWORK_UPDATE_COMMAND_MODIFY,
                  0);
    DO_TEST_INDEX("delete-host-incomplete",
                  "host-incomplete",
                  "nat-network",
                  "nat-network-one-host",
                  VIR_NETWORK_UPDATE_COMMAND_DELETE,
                  0);
    DO_TEST_INDEX("delete-host-existing",
                  "host-existing",
                  "nat-network",
                  "nat-network-one-host",
                  VIR_NETWORK_UPDATE_COMMAND_DELETE,
                  0);
    DO_TEST_INDEX_FAIL("delete-host-missing",
                       "host-new",
                       "nat-network",
                       VIR_NETWORK_UPDATE_COMMAND_DELETE,
                       0);


    section = VIR_NETWORK_SECTION_IP_DHCP_RANGE;
    DO_TEST_INDEX("add-dhcp-range",
                  "dhcp-range",
                  "dhcp6host-routed-network",
                  "dhcp6host-routed-network-range",
                  VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST,
                  0);
    DO_TEST_INDEX("append-dhcp-range",
                  "dhcp-range",
                  "dhcp6host-routed-network",
                  "dhcp6host-routed-network-another-range",
                  VIR_NETWORK_UPDATE_COMMAND_ADD_LAST,
                  1);
    DO_TEST_INDEX("delete-dhcp-range",
                  "dhcp-range-existing",
                  "nat-network",
                  "nat-network-no-range",
                  VIR_NETWORK_UPDATE_COMMAND_DELETE,
                  0);
    DO_TEST_INDEX_FAIL("delete-dhcp-range",
                       "dhcp-range",
                       "nat-network",
                       VIR_NETWORK_UPDATE_COMMAND_DELETE,
                       0);


    section = VIR_NETWORK_SECTION_FORWARD_INTERFACE;
    DO_TEST("insert-forward-interface",
            "interface-eth47",
            "nat-network-dns-srv-record",
            "nat-network-forward-ifaces",
            VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST);
    DO_TEST("delete-forward-interface",
            "interface-eth1",
            "nat-network-dns-srv-record",
            "nat-network-no-forward-ifaces",
            VIR_NETWORK_UPDATE_COMMAND_DELETE);
    DO_TEST_FAIL("delete-forward-interface",
                 "interface-eth47",
                 "nat-network-dns-srv-record",
                 VIR_NETWORK_UPDATE_COMMAND_DELETE);


    section = VIR_NETWORK_SECTION_PORTGROUP;
    DO_TEST("insert-portgroup",
            "portgroup-alison",
            "openvswitch-net",
            "openvswitch-net-more-portgroups",
            VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST);
    DO_TEST_FAIL("append-duplicate-portgroup",
                 "portgroup-alice-new",
                 "openvswitch-net",
                 VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
    DO_TEST("modify-portgroup",
            "portgroup-alice-new",
            "openvswitch-net",
            "openvswitch-net-modified",
            VIR_NETWORK_UPDATE_COMMAND_MODIFY);
    DO_TEST_FAIL("modify-missing-portgroup",
                 "portgroup-alison",
                 "openvswitch-net",
                 VIR_NETWORK_UPDATE_COMMAND_MODIFY);
    DO_TEST("delete-portgroup",
            "portgroup-alice-new",
            "openvswitch-net",
            "openvswitch-net-without-alice",
            VIR_NETWORK_UPDATE_COMMAND_DELETE);
    DO_TEST_FAIL("delete-missing-portgroup",
                 "portgroup-alice-new",
                 "nat-network-dns-srv-record",
                 VIR_NETWORK_UPDATE_COMMAND_DELETE);


    section = VIR_NETWORK_SECTION_DNS_HOST;
    DO_TEST_FAIL("insert-incomplete-host",
                 "dns-host-gateway-incomplete",
                 "nat-network-dns-hosts",
                 VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST);
    DO_TEST("insert-host",
            "dns-host-pudding",
            "nat-network-dns-hosts",
            "nat-network-dns-more-hosts",
            VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST);
    DO_TEST_FAIL("delete-missing-unparsable-dns-host",
                 "unparsable-dns-host",
                 "nat-network",
                 VIR_NETWORK_UPDATE_COMMAND_DELETE);
    DO_TEST("delete-dns-host",
            "dns-host-gateway-incomplete",
            "nat-network-dns-hosts",
            "nat-network-no-hosts",
            VIR_NETWORK_UPDATE_COMMAND_DELETE);


    section = VIR_NETWORK_SECTION_DNS_TXT;
    DO_TEST("insert-dns-txt-record",
            "dns-txt-record-snowman",
            "nat-network-dns-txt-record",
            "nat-network-dns-txt-records",
            VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST);
    DO_TEST_FAIL("append-duplicate-dns-txt-record",
                 "dns-txt-record-example",
                 "nat-network-dns-txt-record",
                 VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
    DO_TEST("delete-dns-txt-record",
            "dns-txt-record-example",
            "nat-network-dns-txt-record",
            "nat-network-dns-txt-none",
            VIR_NETWORK_UPDATE_COMMAND_DELETE);
    DO_TEST_FAIL("delete-missing-dns-txt-record",
                 "dns-txt-record-snowman",
                 "nat-network-dns-txt-record",
                 VIR_NETWORK_UPDATE_COMMAND_DELETE);


    section = VIR_NETWORK_SECTION_DNS_SRV;
    DO_TEST("insert-first-srv-record-service",
            "srv-record",
            "nat-network",
            "nat-network-dns-srv-record",
            VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST);
    DO_TEST("append-first-srv-record-service",
            "srv-record",
            "nat-network",
            "nat-network-dns-srv-record",
            VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
    DO_TEST_FAIL("add-existing-dns-srv-record",
                 "srv-record",
                 "nat-network-dns-srv-record",
                 VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
    DO_TEST("append-srv-record-service",
            "srv-record-donkey",
            "nat-network-dns-srv-record",
            "nat-network-dns-srv-records",
            VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);

    DO_TEST_FAIL("delete-missing-srv-record-service",
                 "srv-record-service",
                 "nat-network",
                 VIR_NETWORK_UPDATE_COMMAND_DELETE);
    DO_TEST_FAIL("delete-srv-record-invalid",
                 "srv-record-invalid",
                 "nat-network-dns-srv-record",
                 VIR_NETWORK_UPDATE_COMMAND_DELETE);
    DO_TEST("delete-srv-record-donkey",
            "srv-record-donkey",
            "nat-network-dns-srv-records",
            "nat-network-dns-srv-record",
            VIR_NETWORK_UPDATE_COMMAND_DELETE);
    DO_TEST_FAIL("delete-ambiguous-srv-record-service",
                 "srv-record-service",
                 "nat-network-dns-srv-records",
                 VIR_NETWORK_UPDATE_COMMAND_DELETE);
    DO_TEST("delete-srv-record-protocol",
            "srv-record-protocol",
            "nat-network-dns-srv-record",
            "nat-network",
            VIR_NETWORK_UPDATE_COMMAND_DELETE);


    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}