[Libosinfo] [libosinfo PATCH 3/4] test-os-resources: Make test_minimum_recommended_resources generic

Fabiano Fidêncio fidencio at redhat.com
Wed Nov 14 15:54:14 UTC 2018


https://gitlab.com/libosinfo/osinfo-db/issues/11

Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
 tests/test-os-resources.c | 136 ++++++++++++++++++++------------------
 1 file changed, 72 insertions(+), 64 deletions(-)

diff --git a/tests/test-os-resources.c b/tests/test-os-resources.c
index fe16b72..fa9df6a 100644
--- a/tests/test-os-resources.c
+++ b/tests/test-os-resources.c
@@ -24,53 +24,96 @@
 #include <osinfo/osinfo.h>
 
 
-static void test_n_cpus(OsinfoResources *minimum, OsinfoResources *recommended)
+static void test_n_cpus(OsinfoResources *resources1, OsinfoResources *resources2)
 {
-    gint minimum_cpus, recommended_cpus;
+    gint resources1_cpus, resources2_cpus;
 
-    minimum_cpus = osinfo_resources_get_n_cpus(minimum);
-    recommended_cpus = osinfo_resources_get_n_cpus(recommended);
+    resources1_cpus = osinfo_resources_get_n_cpus(resources1);
+    resources2_cpus = osinfo_resources_get_n_cpus(resources2);
 
-    if (recommended_cpus >= 0 && minimum_cpus >= 0)
-        g_assert_true(recommended_cpus >= minimum_cpus);
+    if (resources2_cpus >= 0 && resources1_cpus >= 0)
+        g_assert_true(resources2_cpus >= resources1_cpus);
 }
 
 
-static void test_cpu(OsinfoResources *minimum, OsinfoResources *recommended)
+static void test_cpu(OsinfoResources *resources1, OsinfoResources *resources2)
 {
-    gint64 minimum_cpu, recommended_cpu;
+    gint64 resources1_cpu, resources2_cpu;
 
-    minimum_cpu = osinfo_resources_get_cpu(minimum);
-    recommended_cpu = osinfo_resources_get_cpu(recommended);
+    resources1_cpu = osinfo_resources_get_cpu(resources1);
+    resources2_cpu = osinfo_resources_get_cpu(resources2);
 
-    if (recommended_cpu >= 0 && minimum_cpu >= 0)
-        g_assert_true(recommended_cpu >= minimum_cpu);
+    if (resources2_cpu >= 0 && resources1_cpu >= 0)
+        g_assert_true(resources2_cpu >= resources1_cpu);
 }
 
 
-static void test_ram(OsinfoResources *minimum, OsinfoResources *recommended)
+static void test_ram(OsinfoResources *resources1, OsinfoResources *resources2)
 {
-    gint64 minimum_ram, recommended_ram;
+    gint64 resources1_ram, resources2_ram;
 
-    minimum_ram = osinfo_resources_get_ram(minimum);
-    recommended_ram = osinfo_resources_get_ram(recommended);
+    resources1_ram = osinfo_resources_get_ram(resources1);
+    resources2_ram = osinfo_resources_get_ram(resources2);
 
-    if (recommended_ram >= 0 && minimum_ram >= 0)
-        g_assert_true(recommended_ram >= minimum_ram);
+    if (resources2_ram >= 0 && resources1_ram >= 0)
+        g_assert_true(resources2_ram >= resources1_ram);
 }
 
 
-static void test_storage(OsinfoResources *minimum, OsinfoResources *recommended)
+static void test_storage(OsinfoResources *resources1, OsinfoResources *resources2)
 {
-    gint64 minimum_storage, recommended_storage;
+    gint64 resources1_storage, resources2_storage;
 
-    minimum_storage = osinfo_resources_get_storage(minimum);
-    recommended_storage = osinfo_resources_get_storage(recommended);
+    resources1_storage = osinfo_resources_get_storage(resources1);
+    resources2_storage = osinfo_resources_get_storage(resources2);
 
-    if (recommended_storage >= 0 && minimum_storage >= 0)
-        g_assert_true(recommended_storage >= minimum_storage);
+    if (resources2_storage >= 0 && resources1_storage >= 0)
+        g_assert_true(resources2_storage >= resources1_storage);
 }
 
+
+static void
+compare_resources(OsinfoOs *os,
+                  OsinfoList *resourceslist1,
+                  OsinfoList *resourceslist2)
+{
+    GList *list1, *list2;
+
+    list1 = osinfo_list_get_elements(resourceslist1);
+    list2 = osinfo_list_get_elements(resourceslist2);
+
+    if (list1 == NULL || list2 == NULL)
+        return;
+
+    for (GList *it1 = list1; it1 != NULL; it1 = it1->next) {
+        OsinfoResources *resources1 = it1->data;
+        const gchar *arch1;
+
+        arch1 = osinfo_resources_get_architecture(resources1);
+
+        for (GList *it2 = list2; it2 != NULL; it2 = it2->next) {
+            OsinfoResources *resources2 = it2->data;
+            const gchar *arch2 = osinfo_resources_get_architecture(resources2);
+
+             if (g_str_equal(arch1, arch2)) {
+                const gchar *name;
+
+                name = osinfo_product_get_name(OSINFO_PRODUCT(os));
+
+                g_test_message("checking %s (architecture: %s)",
+                               name, arch1);
+
+                test_n_cpus(resources1, resources2);
+                test_cpu(resources1, resources2);
+                test_ram(resources1, resources2);
+                test_storage(resources1, resources2);
+                break;
+            }
+        }
+    }
+}
+
+
 static void
 test_minimum_recommended_resources(void)
 {
@@ -93,51 +136,16 @@ test_minimum_recommended_resources(void)
     for (oses_it = oses; oses_it != NULL; oses_it = oses_it->next) {
         OsinfoOs *os = oses->data;
         OsinfoResourcesList *minimum_list, *recommended_list;
-        GList *minimum_resources, *recommended_resources;
-        GList *resources_it;
-        const gchar *minimum_arch, *recommended_arch;
 
         minimum_list = osinfo_os_get_minimum_resources(os);
-        minimum_resources = osinfo_list_get_elements(OSINFO_LIST(minimum_list));
-
         recommended_list = osinfo_os_get_recommended_resources(os);
-        recommended_resources = osinfo_list_get_elements(OSINFO_LIST(recommended_list));
-
-        /* That's fine as not all OSes have those fields filled */
-        if (minimum_resources == NULL || recommended_resources == NULL)
-            goto next;
-
-        for (resources_it = minimum_resources; resources_it != NULL; resources_it = resources_it->next) {
-            OsinfoResources *minimum = resources_it->data;
-            GList *tmp = recommended_resources;
-
-            minimum_arch = osinfo_resources_get_architecture(minimum);
 
-            for (; tmp != NULL; tmp = tmp->next) {
-                OsinfoResources *recommended = tmp->data;
-
-                recommended_arch = osinfo_resources_get_architecture(recommended);
-
-                 if (g_str_equal(minimum_arch, recommended_arch)) {
-                    const gchar *name;
-
-                    name = osinfo_product_get_name(OSINFO_PRODUCT(os));
-
-                    g_test_message("checking %s (architecture: %s)",
-                                   name, minimum_arch);
-
-                    test_n_cpus(minimum, recommended);
-                    test_cpu(minimum, recommended);
-                    test_ram(minimum, recommended);
-                    test_storage(minimum, recommended);
-                    break;
-                }
-            }
-        }
+        if (osinfo_list_get_length(OSINFO_LIST(minimum_list)) > 0 &&
+            osinfo_list_get_length(OSINFO_LIST(recommended_list)) > 0)
+            compare_resources(os,
+                              OSINFO_LIST(minimum_list),
+                              OSINFO_LIST(recommended_list));
 
-next:
-        g_list_free(minimum_resources);
-        g_list_free(recommended_resources);
         g_object_unref(minimum_list);
         g_object_unref(recommended_list);
     }
-- 
2.19.1




More information about the Libosinfo mailing list