fbc8207b73
Update to qemu 3.1.0-rc5. Is almost certainly the last rc, so should be same as 3.1.0 final. Putting into devel project 'early' because of SLE and Leap needs, not to get into Factory early. Look for the final 3.1 within a week. OBS-URL: https://build.opensuse.org/request/show/655897 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=433
142 lines
4.5 KiB
Diff
142 lines
4.5 KiB
Diff
From 10ae07e61d611fd6d60080412e6f4399de7f07eb Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>
|
|
Date: Fri, 25 Sep 2015 12:31:11 +0200
|
|
Subject: [PATCH] tests: Add scsi-disk test
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Test scsi-{disk,hd,cd} wwn properties for correct 64-bit parsing.
|
|
|
|
For now piggyback on virtio-scsi.
|
|
|
|
Cc: Paolo Bonzini <pbonzini@redhat.com>
|
|
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
|
---
|
|
MAINTAINERS | 1 +
|
|
tests/Makefile.include | 2 +
|
|
tests/scsi-disk-test.c | 83 ++++++++++++++++++++++++++++++++++++++++++
|
|
3 files changed, 86 insertions(+)
|
|
|
|
diff --git a/MAINTAINERS b/MAINTAINERS
|
|
index d8521ade0d..d1e90f6f64 100644
|
|
--- a/MAINTAINERS
|
|
+++ b/MAINTAINERS
|
|
@@ -1286,6 +1286,7 @@ R: Fam Zheng <famz@redhat.com>
|
|
S: Supported
|
|
F: include/hw/scsi/*
|
|
F: hw/scsi/*
|
|
+F: tests/scsi-disk-test.c
|
|
F: tests/virtio-scsi-test.c
|
|
T: git https://github.com/bonzini/qemu.git scsi-next
|
|
|
|
diff --git a/tests/Makefile.include b/tests/Makefile.include
|
|
index f7e6b841cb..d6f67eed85 100644
|
|
--- a/tests/Makefile.include
|
|
+++ b/tests/Makefile.include
|
|
@@ -151,6 +151,7 @@ check-qtest-virtio-y += tests/virtio-balloon-test$(EXESUF)
|
|
check-qtest-virtio-y += tests/virtio-blk-test$(EXESUF)
|
|
check-qtest-virtio-y += tests/virtio-rng-test$(EXESUF)
|
|
check-qtest-virtio-y += tests/virtio-scsi-test$(EXESUF)
|
|
+check-qtest-virtio-y += tests/scsi-disk-test$(EXESUF)
|
|
ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy)
|
|
check-qtest-virtio-y += tests/virtio-9p-test$(EXESUF)
|
|
endif
|
|
@@ -748,6 +749,7 @@ tests/migration-test$(EXESUF): tests/migration-test.o
|
|
tests/vhost-user-test$(EXESUF): tests/vhost-user-test.o $(test-util-obj-y) \
|
|
$(qtest-obj-y) $(test-io-obj-y) $(libqos-virtio-obj-y) $(libqos-pc-obj-y) \
|
|
$(chardev-obj-y)
|
|
+tests/scsi-disk-test$(EXESUF): tests/scsi-disk-test.o
|
|
tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o
|
|
tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y)
|
|
tests/test-keyval$(EXESUF): tests/test-keyval.o $(test-util-obj-y) $(test-qapi-obj-y)
|
|
diff --git a/tests/scsi-disk-test.c b/tests/scsi-disk-test.c
|
|
new file mode 100644
|
|
index 0000000000..cd8c807200
|
|
--- /dev/null
|
|
+++ b/tests/scsi-disk-test.c
|
|
@@ -0,0 +1,83 @@
|
|
+/*
|
|
+ * QTest testcase for SCSI disks
|
|
+ * See virtio-scsi-test for more integrated tests.
|
|
+ *
|
|
+ * Copyright (c) 2015 SUSE Linux 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 "qemu/osdep.h"
|
|
+#include <glib.h>
|
|
+#include "libqtest.h"
|
|
+#include "qapi/qmp/qnum.h"
|
|
+#include "qapi/qmp/qdict.h"
|
|
+
|
|
+static void test_scsi_disk_common(const char *type, const char *id)
|
|
+{
|
|
+ char *cmdline, *path;
|
|
+ QDict *response;
|
|
+ QNum *value;
|
|
+
|
|
+ cmdline = g_strdup_printf(
|
|
+ "-drive id=drv0,if=none,file=/dev/null,format=raw "
|
|
+ "-device virtio-scsi-pci,id=scsi0 "
|
|
+ "-device %s,id=%s,bus=scsi0.0,drive=drv0"
|
|
+ ",wwn=0x%" PRIx64 ",port_wwn=0x%" PRIx64,
|
|
+ type, id, UINT64_MAX, UINT64_C(1) << 63);
|
|
+ qtest_start(cmdline);
|
|
+ g_free(cmdline);
|
|
+
|
|
+ path = g_strdup_printf("/machine/peripheral/%s", id);
|
|
+
|
|
+ response = qmp("{ 'execute': 'qom-get',"
|
|
+ " 'arguments': { 'path': %s,"
|
|
+ " 'property': 'wwn' } }",
|
|
+ path);
|
|
+ g_assert(response);
|
|
+ g_assert(qdict_haskey(response, "return"));
|
|
+ value = qobject_to(QNum, qdict_get(response, "return"));
|
|
+ g_assert_cmpint(qnum_get_uint(value), ==, UINT64_MAX);
|
|
+
|
|
+ response = qmp("{ 'execute': 'qom-get',"
|
|
+ " 'arguments': { 'path': %s,"
|
|
+ " 'property': 'port_wwn' } }",
|
|
+ path);
|
|
+ g_assert(response);
|
|
+ g_assert(qdict_haskey(response, "return"));
|
|
+ value = qobject_to(QNum, qdict_get(response, "return"));
|
|
+ g_assert_cmpint(qnum_get_uint(value), ==, UINT64_C(1) << 63);
|
|
+
|
|
+ g_free(path);
|
|
+ qtest_end();
|
|
+}
|
|
+
|
|
+static void test_scsi_disk(void)
|
|
+{
|
|
+ test_scsi_disk_common("scsi-disk", "disk0");
|
|
+}
|
|
+
|
|
+static void test_scsi_hd(void)
|
|
+{
|
|
+ test_scsi_disk_common("scsi-hd", "hd0");
|
|
+}
|
|
+
|
|
+static void test_scsi_cd(void)
|
|
+{
|
|
+ test_scsi_disk_common("scsi-cd", "cd0");
|
|
+}
|
|
+
|
|
+int main(int argc, char **argv)
|
|
+{
|
|
+ int ret;
|
|
+
|
|
+ g_test_init(&argc, &argv, NULL);
|
|
+ qtest_add_func("/scsi-disk/props", test_scsi_disk);
|
|
+ qtest_add_func("/scsi-hd/props", test_scsi_hd);
|
|
+ qtest_add_func("/scsi-cd/props", test_scsi_cd);
|
|
+
|
|
+ ret = g_test_run();
|
|
+
|
|
+ return ret;
|
|
+}
|