From: David Gibson <david@gibson.dropbear.id.au>
To: mst@redhat.com
Cc: thuth@redhat.com, qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PATCH 2/4] tests/pxe-test: Use table of testcases rather than open-coding
Date: Fri, 15 Dec 2017 21:16:49 +1100 [thread overview]
Message-ID: <20171215101651.13911-3-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20171215101651.13911-1-david@gibson.dropbear.id.au>
Currently pxe-tests open codes the list of tests for each architecture.
This changes it to use tables of test parameters, somewhat similar to
boot-serial-test.
This adds the machine type into the table as well, giving us the ability
to perform tests on multiple machine types for architectures where there's
more than one machine type that matters.
NOTE: This changes the names of the tests in the output, to include the
machine type and IPv4 vs. IPv6. I'm not sure if this has the
potential to break existing tooling.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
tests/pxe-test.c | 94 +++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 72 insertions(+), 22 deletions(-)
diff --git a/tests/pxe-test.c b/tests/pxe-test.c
index eb70aa2bc6..f9bca8976d 100644
--- a/tests/pxe-test.c
+++ b/tests/pxe-test.c
@@ -22,29 +22,86 @@
static char disk[] = "tests/pxe-test-disk-XXXXXX";
-static void test_pxe_one(const char *params, bool ipv6)
+typedef struct testdef {
+ const char *machine; /* Machine type */
+ const char *model; /* NIC device model (human readable)*/
+ const char *extra; /* Extra parameters, overriding default */
+} testdef_t;
+
+static testdef_t x86_tests[] = {
+ { "pc", "e1000" },
+ { "pc", "virtio", "-device virtio-net-pci,netdev=" NETNAME },
+ { NULL },
+};
+
+static testdef_t x86_tests_slow[] = {
+ { "pc", "ne2000", "-device ne2k_pci,netdev=" NETNAME },
+ { "pc", "eepro100", "-device i82550,netdev=" NETNAME },
+ { "pc", "rtl8139" },
+ { "pc", "vmxnet3" },
+ { NULL },
+};
+
+static testdef_t ppc64_tests[] = {
+ { "pseries", "spapr-vlan" },
+ { NULL },
+};
+
+static testdef_t ppc64_tests_slow[] = {
+ { "pseries", "virtio", "-device virtio-net-pci,netdev=" NETNAME },
+ { "pseries", "e1000" },
+ { NULL },
+};
+
+static testdef_t s390x_tests[] = {
+ { "s390-ccw-virtio", "virtio-ccw",
+ "-device virtio-net-ccw,bootindex=1,netdev=" NETNAME },
+ { NULL },
+};
+
+static void test_pxe_one(const testdef_t *test, bool ipv6)
{
char *args;
+ char *defextra;
+ const char *extra = test->extra;
+
+ defextra = g_strdup_printf("-device %s,netdev=" NETNAME, test->model);
+ if (!extra) {
+ extra = defextra;
+ }
- args = g_strdup_printf("-machine accel=kvm:tcg -nodefaults -boot order=n "
- "-netdev user,id=" NETNAME ",tftp=./,bootfile=%s,"
- "ipv4=%s,ipv6=%s %s", disk, ipv6 ? "off" : "on",
- ipv6 ? "on" : "off", params);
+ args = g_strdup_printf(
+ "-machine %s,accel=kvm:tcg -nodefaults -boot order=n "
+ "-netdev user,id=" NETNAME ",tftp=./,bootfile=%s,ipv4=%s,ipv6=%s %s",
+ test->machine, disk, ipv6 ? "off" : "on", ipv6 ? "on" : "off", extra);
qtest_start(args);
boot_sector_test();
qtest_quit(global_qtest);
g_free(args);
+ g_free(defextra);
}
static void test_pxe_ipv4(gconstpointer data)
{
- const char *model = data;
- char *dev_arg;
+ const testdef_t *test = data;
+
+ test_pxe_one(test, false);
+}
- dev_arg = g_strdup_printf("-device %s,netdev=" NETNAME, model);
- test_pxe_one(dev_arg, false);
- g_free(dev_arg);
+static void test_batch(const testdef_t *tests)
+{
+ int i;
+
+ for (i = 0; tests[i].machine; i++) {
+ const testdef_t *test = &tests[i];
+ char *testname;
+
+ testname = g_strdup_printf("pxe/ipv4/%s/%s",
+ test->machine, test->model);
+ qtest_add_data_func(testname, test, test_pxe_ipv4);
+ g_free(testname);
+ }
}
int main(int argc, char *argv[])
@@ -59,24 +116,17 @@ int main(int argc, char *argv[])
g_test_init(&argc, &argv, NULL);
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
- qtest_add_data_func("pxe/e1000", "e1000", test_pxe_ipv4);
- qtest_add_data_func("pxe/virtio", "virtio-net-pci", test_pxe_ipv4);
+ test_batch(x86_tests);
if (g_test_slow()) {
- qtest_add_data_func("pxe/ne2000", "ne2k_pci", test_pxe_ipv4);
- qtest_add_data_func("pxe/eepro100", "i82550", test_pxe_ipv4);
- qtest_add_data_func("pxe/pcnet", "pcnet", test_pxe_ipv4);
- qtest_add_data_func("pxe/rtl8139", "rtl8139", test_pxe_ipv4);
- qtest_add_data_func("pxe/vmxnet3", "vmxnet3", test_pxe_ipv4);
+ test_batch(x86_tests_slow);
}
} else if (strcmp(arch, "ppc64") == 0) {
- qtest_add_data_func("pxe/spapr-vlan", "spapr-vlan", test_pxe_ipv4);
+ test_batch(ppc64_tests);
if (g_test_slow()) {
- qtest_add_data_func("pxe/virtio", "virtio-net-pci", test_pxe_ipv4);
- qtest_add_data_func("pxe/e1000", "e1000", test_pxe_ipv4);
+ test_batch(ppc64_tests_slow);
}
} else if (g_str_equal(arch, "s390x")) {
- qtest_add_data_func("pxe/virtio-ccw",
- "virtio-net-ccw,bootindex=1", test_pxe_ipv4);
+ test_batch(s390x_tests);
}
ret = g_test_run();
boot_sector_cleanup(disk);
--
2.14.3
next prev parent reply other threads:[~2017-12-15 10:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-15 10:16 [Qemu-devel] [PATCH 0/4] Improvements to pxe-test David Gibson
2017-12-15 10:16 ` [Qemu-devel] [PATCH 1/4] tests/pxe-test: Remove unnecessary special case test functions David Gibson
2017-12-15 10:54 ` Thomas Huth
2017-12-15 10:16 ` David Gibson [this message]
2017-12-15 11:08 ` [Qemu-devel] [PATCH 2/4] tests/pxe-test: Use table of testcases rather than open-coding Thomas Huth
2017-12-15 12:54 ` David Gibson
2017-12-15 10:16 ` [Qemu-devel] [PATCH 3/4] tests/pxe-test: Test net booting over IPv6 in some cases David Gibson
2017-12-15 11:10 ` Thomas Huth
2017-12-15 12:56 ` David Gibson
2017-12-15 14:15 ` [Qemu-devel] [Qemu-ppc] " Thomas Huth
2017-12-15 10:16 ` [Qemu-devel] [PATCH 4/4] tests/pxe-test: Add some extra tests David Gibson
2017-12-15 10:51 ` Thomas Huth
2017-12-15 12:59 ` David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171215101651.13911-3-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).