[libvirt] [PATCH v5 1/1] tests: add a test for driver.c:virConnectValidateURIPath()

Daniel Henrique Barboza danielhb413 at gmail.com
Wed Oct 9 19:11:44 UTC 2019


Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
---
 tests/Makefile.am                 |  7 ++-
 tests/virdriverconnvalidatetest.c | 90 +++++++++++++++++++++++++++++++
 2 files changed, 96 insertions(+), 1 deletion(-)
 create mode 100644 tests/virdriverconnvalidatetest.c

diff --git a/tests/Makefile.am b/tests/Makefile.am
index d88ad7f686..c7f563d24d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -433,7 +433,8 @@ test_scripts += $(libvirtd_test_scripts)
 
 test_programs += \
 	eventtest \
-	virdrivermoduletest
+	virdrivermoduletest \
+	virdriverconnvalidatetest
 else ! WITH_LIBVIRTD
 EXTRA_DIST += $(libvirtd_test_scripts)
 endif ! WITH_LIBVIRTD
@@ -1485,6 +1486,10 @@ if WITH_LIBVIRTD
 virdrivermoduletest_SOURCES = \
 	virdrivermoduletest.c testutils.h testutils.c
 virdrivermoduletest_LDADD = $(LDADDS)
+
+virdriverconnvalidatetest_SOURCES = \
+	virdriverconnvalidatetest.c testutils.h testutils.c
+virdriverconnvalidatetest_LDADD = $(LDADDS)
 endif WITH_LIBVIRTD
 
 if WITH_LIBVIRTD
diff --git a/tests/virdriverconnvalidatetest.c b/tests/virdriverconnvalidatetest.c
new file mode 100644
index 0000000000..6f4cefb61e
--- /dev/null
+++ b/tests/virdriverconnvalidatetest.c
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2019 IBM Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "testutils.h"
+#include "virerror.h"
+#include "viralloc.h"
+#include "virlog.h"
+#include "driver.h"
+
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+VIR_LOG_INIT("tests.driverconnvalidatetest");
+
+struct testDriverConnValidateData {
+    const char *uriPath;
+    const char *entityName;
+    bool privileged;
+    bool expectFailure;
+};
+
+
+static int testDriverConnValidate(const void *args)
+{
+    const struct testDriverConnValidateData *data = args;
+
+    bool ret = virConnectValidateURIPath(data->uriPath,
+                                         data->entityName,
+                                         data->privileged);
+    if (data->expectFailure)
+        ret = !ret;
+
+    return ret ? 0 : -1;
+}
+
+
+static int
+mymain(void)
+{
+    int ret = 0;
+
+#define DO_TEST_INTERNAL(name, entity, uri, _privileged, expectFail) \
+    do { \
+        static struct testDriverConnValidateData data = { \
+            .entityName = entity, \
+            .uriPath = uri, \
+            .privileged = _privileged, \
+            .expectFailure = expectFail, \
+        }; \
+        if (virTestRun("Test conn URI path validate ok " name, \
+                       testDriverConnValidate, &data) < 0) \
+            ret = -1; \
+    } while (0)
+
+#define DO_TEST_SUCCESS(name, entity, uri, _privileged) \
+    DO_TEST_INTERNAL(name, entity, uri, _privileged, false)
+
+#define DO_TEST_FAIL(name, entity, uri, _privileged) \
+    DO_TEST_INTERNAL(name, entity, uri, _privileged, true)
+
+    DO_TEST_SUCCESS("non-privileged /session", "any", "/session", false);
+    DO_TEST_FAIL("non-privileged non-session fail", "any", "/system", false);
+
+    DO_TEST_SUCCESS("privileged /system", "any", "/system", true);
+    DO_TEST_FAIL("privileged non-system fail", "any", "any", true);
+
+    DO_TEST_SUCCESS("privileged qemu /session", "qemu", "/session", true);
+    DO_TEST_SUCCESS("privileged vbox /session", "vbox", "/session", true);
+    DO_TEST_FAIL("privileged other /session fail", "any", "/session", true);
+
+    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+VIR_TEST_MAIN(mymain)
-- 
2.21.0




More information about the libvir-list mailing list