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