[libvirt] [PATCH 02/29] vbox: Add test case for vboxUniformedAPI

Taowei uaedante at gmail.com
Fri Jul 18 07:46:44 UTC 2014


The test case will make sure each API will filled
with something. So we will not to define an API,
use it, yet forgot to implement.
---
 tests/Makefile.am            |    9 +++-
 tests/vboxuniformedapitest.c |   98 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 105 insertions(+), 2 deletions(-)
 create mode 100644 tests/vboxuniformedapitest.c

diff --git a/tests/Makefile.am b/tests/Makefile.am
index bc1040a..f73d25d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -241,7 +241,7 @@ test_programs += esxutilstest
 endif WITH_ESX
 
 if WITH_VBOX
-test_programs += vboxsnapshotxmltest
+test_programs += vboxsnapshotxmltest vboxuniformedapitest
 endif WITH_VBOX
 
 if WITH_VMX
@@ -638,8 +638,13 @@ vboxsnapshotxmltest_SOURCES = \
 	testutils.c testutils.h
 vbox_LDADDS = ../src/libvirt_driver_vbox_impl.la
 vboxsnapshotxmltest_LDADD = $(LDADDS) $(vbox_LDADDS)
+
+vboxuniformedapitest_SOURCES = \
+	vboxuniformedapitest.c \
+	testutils.c testutils.h
+vboxuniformedapitest_LDADD = $(vbox_LDADDS) $(LDADDS)
 else ! WITH_VBOX
-EXTRA_DIST += vboxsnapshotxmltest.c
+EXTRA_DIST += vboxsnapshotxmltest.c vboxuniformedapitest.c
 endif ! WITH_VBOX
 
 if WITH_VMX
diff --git a/tests/vboxuniformedapitest.c b/tests/vboxuniformedapitest.c
new file mode 100644
index 0000000..933cdb7
--- /dev/null
+++ b/tests/vboxuniformedapitest.c
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2014, Taowei Luo (uaedante at gmail.com)
+ *
+ * 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"
+
+#ifdef WITH_VBOX
+
+# include "datatypes.h"
+# include "domain_event.h"
+# include "vbox/vbox_common.h"
+# include "vbox/vbox_uniformed_api.h"
+
+# define VIR_FROM_THIS VIR_FROM_NONE
+
+static vboxUniformedAPI vboxAPI;
+typedef void (*installAPI_f)(vboxUniformedAPI *pVBoxAPI);
+
+/* This test make sure all APIs in vboxUniformedAPI is
+ * filled with something (say not null). It helps to
+ * make sure you will not leave an API defined (and used
+ * probably) but not implemented yet.
+ */
+
+static int testUniformedAPI(const void *args)
+{
+    installAPI_f installAPI = (installAPI_f)args;
+    void **iter;
+
+    memset(&vboxAPI, 0, sizeof(vboxUniformedAPI));
+    installAPI(&vboxAPI);
+
+    /* Assuming that the vboxUniformedAPI is in the range
+     * of [initializeFWatch, fWatchNeedInitialize).
+     */
+    for (iter = (void **)&vboxAPI.initializeFWatch;
+         iter < (void **)&vboxAPI.fWatchNeedInitialize;
+         iter ++)
+    {
+        if ((void *)(*iter) == NULL)
+            return -1;
+    }
+    return 0;
+}
+
+static int
+mymain(void)
+{
+    int ret = 0;
+
+# define TEST(version)                                                      \
+    do  {                                                                   \
+        if (virtTestRun("Test uniformedAPI " # version,                     \
+                        testUniformedAPI,                                   \
+                        vbox##version##InstallUniformedAPI) < 0)            \
+            ret = -1;                                                       \
+    } while (0)
+
+    TEST(22);
+    TEST(30);
+    TEST(31);
+    TEST(32);
+    TEST(40);
+    TEST(41);
+    TEST(42);
+    TEST(42_20);
+    TEST(43);
+    TEST(43_4);
+
+    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+VIRT_TEST_MAIN(mymain)
+
+#else
+
+int main(void)
+{
+    return EXIT_AM_SKIP;
+}
+
+#endif /*WITH_VBOX*/
-- 
1.7.9.5




More information about the libvir-list mailing list