diff mbox

[PULL,v2,01/50] tests: Add ivshmem qtest

Message ID 1444668104-22955-2-git-send-email-marcandre.lureau@redhat.com
State New
Headers show

Commit Message

Marc-André Lureau Oct. 12, 2015, 4:40 p.m. UTC
From: Andreas Färber <afaerber@suse.de>

Note that it launches two instances, as sharing memory is the purpose of
ivshmem.

Cc: Cam Macdonell <cam@cs.ualberta.ca>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
[ Remove Nahanni codename, add test to pci set - Marc-André ]
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/Makefile       |  3 +++
 tests/ivshmem-test.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+)
 create mode 100644 tests/ivshmem-test.c

Comments

Andreas Färber Oct. 12, 2015, 6 p.m. UTC | #1
Am 12.10.2015 um 18:40 schrieb marcandre.lureau@redhat.com:
> From: Andreas Färber <afaerber@suse.de>
> 
> Note that it launches two instances, as sharing memory is the purpose of
> ivshmem.
> 
> Cc: Cam Macdonell <cam@cs.ualberta.ca>
> Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> [ Remove Nahanni codename, add test to pci set - Marc-André ]
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  tests/Makefile       |  3 +++
>  tests/ivshmem-test.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 54 insertions(+)
>  create mode 100644 tests/ivshmem-test.c
> 
> diff --git a/tests/Makefile b/tests/Makefile
> index dbd32a6..c44b8de 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -149,6 +149,8 @@ gcov-files-pci-y += hw/display/virtio-gpu-pci.c
>  gcov-files-pci-$(CONFIG_VIRTIO_VGA) += hw/display/virtio-vga.c
>  check-qtest-pci-y += tests/intel-hda-test$(EXESUF)
>  gcov-files-pci-y += hw/audio/intel-hda.c hw/audio/hda-codec.c
> +check-qtest-pci-$(CONFIG_IVSHMEM) += tests/ivshmem-test$(EXESUF)
> +gcov-files-pci-y += hw/misc/ivshmem.c

Based on my comment from Saturday, this line is probably wrong... but
doesn't need to hold up this queue.

My patch adding it to i386 variable had used i386-softmmu/hw/... path.
We then have this for x86_64:

gcov-files-x86_64-y = $(subst
i386-softmmu/,x86_64-softmmu/,$(gcov-files-i386-y))

gcov-files-pci-y is currently only added to i386, so the prefix could
just be added back, whereas when we do pci tests also for ppc, arm, etc.
we'll have to copy that subst around or think of a better solution.

Marc-André, can you prepare a follow-up fix for ivshmem-test please?

Regards,
Andreas

>  
>  check-qtest-i386-y = tests/endianness-test$(EXESUF)
>  check-qtest-i386-y += tests/fdc-test$(EXESUF)
[snip]
diff mbox

Patch

diff --git a/tests/Makefile b/tests/Makefile
index dbd32a6..c44b8de 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -149,6 +149,8 @@  gcov-files-pci-y += hw/display/virtio-gpu-pci.c
 gcov-files-pci-$(CONFIG_VIRTIO_VGA) += hw/display/virtio-vga.c
 check-qtest-pci-y += tests/intel-hda-test$(EXESUF)
 gcov-files-pci-y += hw/audio/intel-hda.c hw/audio/hda-codec.c
+check-qtest-pci-$(CONFIG_IVSHMEM) += tests/ivshmem-test$(EXESUF)
+gcov-files-pci-y += hw/misc/ivshmem.c
 
 check-qtest-i386-y = tests/endianness-test$(EXESUF)
 check-qtest-i386-y += tests/fdc-test$(EXESUF)
@@ -440,6 +442,7 @@  tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_hel
 tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y)
 tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y)
 tests/test-netfilter$(EXESUF): tests/test-netfilter.o $(qtest-obj-y)
+tests/ivshmem-test$(EXESUF): tests/ivshmem-test.o
 
 ifeq ($(CONFIG_POSIX),y)
 LIBS += -lutil
diff --git a/tests/ivshmem-test.c b/tests/ivshmem-test.c
new file mode 100644
index 0000000..2f6bec8
--- /dev/null
+++ b/tests/ivshmem-test.c
@@ -0,0 +1,51 @@ 
+/*
+ * QTest testcase for ivshmem
+ *
+ * Copyright (c) 2014 SUSE LINUX Products GmbH
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "libqtest.h"
+#include "qemu/osdep.h"
+
+static char dev_shm_path[] = "/dev/shm/qtest.XXXXXX";
+
+/* Tests only initialization so far. TODO: Replace with functional tests */
+static void nop(void)
+{
+}
+
+int main(int argc, char **argv)
+{
+    QTestState *s1, *s2;
+    char *cmd;
+    int ret, fd;
+
+    g_test_init(&argc, &argv, NULL);
+    qtest_add_func("/ivshmem/nop", nop);
+
+    fd = mkstemp(dev_shm_path);
+    g_assert(fd >= 0);
+    close(fd);
+    unlink(dev_shm_path);
+
+    cmd = g_strdup_printf("-device ivshmem,shm=%s,size=1M", &dev_shm_path[9]);
+    s1 = qtest_start(cmd);
+    s2 = qtest_start(cmd);
+    g_free(cmd);
+
+    ret = g_test_run();
+
+    qtest_quit(s1);
+    qtest_quit(s2);
+
+    unlink(dev_shm_path);
+
+    return ret;
+}