summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2010-08-31 12:05:38 +0100
committerDaniel P. Berrange <berrange@redhat.com>2010-08-31 12:08:52 +0100
commit7a395674e3000d044de0af91da5d57965136cc72 (patch)
treec758421023d47443c3848e38f80c87d89aada234
parentc43af5932df1d3bcbb32498e54df9bbdb044970e (diff)
downloadlibosinfo-7a395674e3000d044de0af91da5d57965136cc72.tar.gz
Avoid directly exposing internal lists in OsinfoDb
Don't directly expose the OsinfoList objects used by the OsinfoDb class. Instead return a shallow copy of the lists. Add formal APIs for adding entities to the DB. * osinfo/osinfo_devicelist.c, osinfo/osinfo_devicelist.h, osinfo/osinfo_hypervisorlist.c, osinfo/osinfo_hypervisorlist.h, osinfo/osinfo_oslist.c, osinfo/osinfo_oslist.h: Add new constructor to copy an existing list * osinfo/osinfo_list.c, osinfo/osinfo_list.h: Add API to copy elements of an existing list * osinfo/osinfo_db.c, osinfo/osinfo_db.h: Shallow copy the lists before returning them. New APIs for adding entities to the DB. * test/test-list.c, test/test-db.c: Update for changed APIs
-rw-r--r--osinfo/libosinfo.syms8
-rw-r--r--osinfo/osinfo_db.c34
-rw-r--r--osinfo/osinfo_db.h4
-rw-r--r--osinfo/osinfo_devicelist.c8
-rw-r--r--osinfo/osinfo_devicelist.h1
-rw-r--r--osinfo/osinfo_hypervisorlist.c7
-rw-r--r--osinfo/osinfo_hypervisorlist.h1
-rw-r--r--osinfo/osinfo_list.c12
-rw-r--r--osinfo/osinfo_list.h1
-rw-r--r--osinfo/osinfo_loader.c9
-rw-r--r--osinfo/osinfo_oslist.c8
-rw-r--r--osinfo/osinfo_oslist.h1
-rw-r--r--test/test-db.c109
-rw-r--r--test/test-list.c7
14 files changed, 148 insertions, 62 deletions
diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
index 7286f99..854eddb 100644
--- a/osinfo/libosinfo.syms
+++ b/osinfo/libosinfo.syms
@@ -8,6 +8,9 @@ LIBOSINFO_0.0.1 {
osinfo_db_get_os_list;
osinfo_db_get_hypervisor_list;
osinfo_db_get_device_list;
+ osinfo_db_add_os;
+ osinfo_db_add_hypervisor;
+ osinfo_db_add_device;
osinfo_db_unique_values_for_property_in_os;
osinfo_db_unique_values_for_property_in_hv;
osinfo_db_unique_values_for_property_in_dev;
@@ -16,6 +19,7 @@ LIBOSINFO_0.0.1 {
osinfo_device_new;
osinfo_devicelist_get_type;
osinfo_devicelist_new;
+ osinfo_devicelist_new_copy;
osinfo_devicelist_new_filtered;
osinfo_devicelist_new_intersection;
osinfo_devicelist_new_union;
@@ -40,17 +44,20 @@ LIBOSINFO_0.0.1 {
osinfo_hypervisor_add_device;
osinfo_hypervisorlist_get_type;
osinfo_hypervisorlist_new;
+ osinfo_hypervisorlist_new_copy;
osinfo_hypervisorlist_new_filtered;
osinfo_hypervisorlist_new_intersection;
osinfo_hypervisorlist_new_union;
osinfo_list_get_type;
osinfo_list_get_length;
osinfo_list_get_nth;
+ osinfo_list_get_element_type;
osinfo_list_find_by_id;
osinfo_list_add;
osinfo_list_add_filtered;
osinfo_list_add_intersection;
osinfo_list_add_union;
+ osinfo_list_add_all;
osinfo_list_foreach;
osinfo_osfilter_get_type;
osinfo_osfilter_new;
@@ -67,6 +74,7 @@ LIBOSINFO_0.0.1 {
osinfo_os_add_related_os;
osinfo_oslist_get_type;
osinfo_oslist_new;
+ osinfo_oslist_new_copy;
osinfo_oslist_new_filtered;
osinfo_oslist_new_intersection;
osinfo_oslist_new_union;
diff --git a/osinfo/osinfo_db.c b/osinfo/osinfo_db.c
index b5bf48c..bbd860f 100644
--- a/osinfo/osinfo_db.c
+++ b/osinfo/osinfo_db.c
@@ -110,23 +110,51 @@ OsinfoOsList *osinfo_db_get_os_list(OsinfoDb *self)
{
g_return_val_if_fail(OSINFO_IS_DB(self), NULL);
- return self->priv->oses;
+ return osinfo_oslist_new_copy(self->priv->oses);
}
OsinfoHypervisorList *osinfo_db_get_hypervisor_list(OsinfoDb *self)
{
g_return_val_if_fail(OSINFO_IS_DB(self), NULL);
- return self->priv->hypervisors;
+ return osinfo_hypervisorlist_new_copy(self->priv->hypervisors);
}
OsinfoDeviceList *osinfo_db_get_device_list(OsinfoDb *self)
{
g_return_val_if_fail(OSINFO_IS_DB(self), NULL);
- return self->priv->devices;
+ return osinfo_devicelist_new_copy(self->priv->devices);
}
+
+void osinfo_db_add_os(OsinfoDb *self, OsinfoOs *os)
+{
+ g_return_if_fail(OSINFO_IS_DB(self));
+ g_return_if_fail(OSINFO_IS_OS(os));
+
+ osinfo_list_add(OSINFO_LIST(self->priv->oses), OSINFO_ENTITY(os));
+}
+
+
+void osinfo_db_add_hypervisor(OsinfoDb *self, OsinfoHypervisor *hv)
+{
+ g_return_if_fail(OSINFO_IS_DB(self));
+ g_return_if_fail(OSINFO_IS_HYPERVISOR(hv));
+
+ osinfo_list_add(OSINFO_LIST(self->priv->hypervisors), OSINFO_ENTITY(hv));
+}
+
+
+void osinfo_db_add_device(OsinfoDb *self, OsinfoDevice *device)
+{
+ g_return_if_fail(OSINFO_IS_DB(self));
+ g_return_if_fail(OSINFO_IS_DEVICE(device));
+
+ osinfo_list_add(OSINFO_LIST(self->priv->devices), OSINFO_ENTITY(device));
+}
+
+
struct osinfo_db_populate_values_args {
GHashTable *values;
const gchar *property;
diff --git a/osinfo/osinfo_db.h b/osinfo/osinfo_db.h
index 22994b7..cce1896 100644
--- a/osinfo/osinfo_db.h
+++ b/osinfo/osinfo_db.h
@@ -94,6 +94,10 @@ OsinfoOsList *osinfo_db_get_os_list(OsinfoDb *self);
OsinfoHypervisorList *osinfo_db_get_hypervisor_list(OsinfoDb *self);
OsinfoDeviceList *osinfo_db_get_device_list(OsinfoDb *self);
+void osinfo_db_add_os(OsinfoDb *self, OsinfoOs *os);
+void osinfo_db_add_hypervisor(OsinfoDb *self, OsinfoHypervisor *hv);
+void osinfo_db_add_device(OsinfoDb *self, OsinfoDevice *device);
+
// Get me all unique values for property "vendor" among operating systems
GList *osinfo_db_unique_values_for_property_in_os(OsinfoDb *self, const gchar *propName);
diff --git a/osinfo/osinfo_devicelist.c b/osinfo/osinfo_devicelist.c
index 0b7505e..d1c89ff 100644
--- a/osinfo/osinfo_devicelist.c
+++ b/osinfo/osinfo_devicelist.c
@@ -67,6 +67,14 @@ OsinfoDeviceList *osinfo_devicelist_new(void)
NULL);
}
+OsinfoDeviceList *osinfo_devicelist_new_copy(OsinfoDeviceList *source)
+{
+ OsinfoDeviceList *newList = osinfo_devicelist_new();
+ osinfo_list_add_all(OSINFO_LIST(newList),
+ OSINFO_LIST(source));
+ return newList;
+}
+
OsinfoDeviceList *osinfo_devicelist_new_filtered(OsinfoDeviceList *source, OsinfoFilter *filter)
{
OsinfoDeviceList *newList = osinfo_devicelist_new();
diff --git a/osinfo/osinfo_devicelist.h b/osinfo/osinfo_devicelist.h
index bb625af..b55ba34 100644
--- a/osinfo/osinfo_devicelist.h
+++ b/osinfo/osinfo_devicelist.h
@@ -67,6 +67,7 @@ struct _OsinfoDeviceListClass
GType osinfo_devicelist_get_type(void);
OsinfoDeviceList *osinfo_devicelist_new(void);
+OsinfoDeviceList *osinfo_devicelist_new_copy(OsinfoDeviceList *source);
OsinfoDeviceList *osinfo_devicelist_new_filtered(OsinfoDeviceList *source, OsinfoFilter *filter);
OsinfoDeviceList *osinfo_devicelist_new_intersection(OsinfoDeviceList *sourceOne, OsinfoDeviceList *sourceTwo);
OsinfoDeviceList *osinfo_devicelist_new_union(OsinfoDeviceList *sourceOne, OsinfoDeviceList *sourceTwo);
diff --git a/osinfo/osinfo_hypervisorlist.c b/osinfo/osinfo_hypervisorlist.c
index 3f59a77..6a847a6 100644
--- a/osinfo/osinfo_hypervisorlist.c
+++ b/osinfo/osinfo_hypervisorlist.c
@@ -68,6 +68,13 @@ OsinfoHypervisorList *osinfo_hypervisorlist_new(void)
NULL);
}
+OsinfoHypervisorList *osinfo_hypervisorlist_new_copy(OsinfoHypervisorList *source)
+{
+ OsinfoHypervisorList *newList = osinfo_hypervisorlist_new();
+ osinfo_list_add_all(OSINFO_LIST(newList),
+ OSINFO_LIST(source));
+ return newList;
+}
OsinfoHypervisorList *osinfo_hypervisorlist_new_filtered(OsinfoHypervisorList *source, OsinfoFilter *filter)
{
diff --git a/osinfo/osinfo_hypervisorlist.h b/osinfo/osinfo_hypervisorlist.h
index 47b00fe..93a8ac9 100644
--- a/osinfo/osinfo_hypervisorlist.h
+++ b/osinfo/osinfo_hypervisorlist.h
@@ -67,6 +67,7 @@ struct _OsinfoHypervisorListClass
GType osinfo_hypervisorlist_get_type(void);
OsinfoHypervisorList *osinfo_hypervisorlist_new(void);
+OsinfoHypervisorList *osinfo_hypervisorlist_new_copy(OsinfoHypervisorList *source);
OsinfoHypervisorList *osinfo_hypervisorlist_new_filtered(OsinfoHypervisorList *source, OsinfoFilter *filter);
OsinfoHypervisorList *osinfo_hypervisorlist_new_intersection(OsinfoHypervisorList *sourceOne, OsinfoHypervisorList *sourceTwo);
OsinfoHypervisorList *osinfo_hypervisorlist_new_union(OsinfoHypervisorList *sourceOne, OsinfoHypervisorList *sourceTwo);
diff --git a/osinfo/osinfo_list.c b/osinfo/osinfo_list.c
index fca77aa..39b98ad 100644
--- a/osinfo/osinfo_list.c
+++ b/osinfo/osinfo_list.c
@@ -251,6 +251,18 @@ void osinfo_list_add_union(OsinfoList *self, OsinfoList *sourceOne, OsinfoList *
g_hash_table_unref(newSet);
}
+void osinfo_list_add_all(OsinfoList *self, OsinfoList *source)
+{
+ int i, len;
+ g_return_if_fail(self->priv->elementType == source->priv->elementType);
+
+ len = osinfo_list_get_length(source);
+ for (i = 0; i < len; i++) {
+ OsinfoEntity *entity = osinfo_list_get_nth(source, i);
+ osinfo_list_add(self, entity);
+ }
+}
+
void osinfo_list_foreach(OsinfoList *self, osinfo_list_iterator iter, gpointer data)
{
diff --git a/osinfo/osinfo_list.h b/osinfo/osinfo_list.h
index aa324d3..dff948d 100644
--- a/osinfo/osinfo_list.h
+++ b/osinfo/osinfo_list.h
@@ -71,6 +71,7 @@ void osinfo_list_add(OsinfoList *self, OsinfoEntity *entity);
void osinfo_list_add_filtered(OsinfoList *self, OsinfoList *source, OsinfoFilter *filter);
void osinfo_list_add_intersection(OsinfoList *self, OsinfoList *sourceOne, OsinfoList *sourceTwo);
void osinfo_list_add_union(OsinfoList *self, OsinfoList *sourceOne, OsinfoList *sourceTwo);
+void osinfo_list_add_all(OsinfoList *self, OsinfoList *source);
typedef gboolean (*osinfo_list_iterator)(OsinfoList *self, OsinfoEntity *entity, gpointer data);
void osinfo_list_foreach(OsinfoList *self, osinfo_list_iterator iter, gpointer data);
diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c
index 7662104..670f9fe 100644
--- a/osinfo/osinfo_loader.c
+++ b/osinfo/osinfo_loader.c
@@ -183,9 +183,8 @@ static OsinfoDevice *osinfo_loader_get_device(OsinfoLoader *loader,
{
OsinfoDevice *dev = osinfo_db_get_device(loader->priv->db, id);
if (!dev) {
- OsinfoDeviceList *list = osinfo_db_get_device_list(loader->priv->db);
dev = osinfo_device_new(id);
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev));
+ osinfo_db_add_device(loader->priv->db, dev);
g_object_unref(dev);
}
return dev;
@@ -197,9 +196,8 @@ static OsinfoOs *osinfo_loader_get_os(OsinfoLoader *loader,
{
OsinfoOs *os = osinfo_db_get_os(loader->priv->db, id);
if (!os) {
- OsinfoOsList *list = osinfo_db_get_os_list(loader->priv->db);
os = osinfo_os_new(id);
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(os));
+ osinfo_db_add_os(loader->priv->db, os);
g_object_unref(os);
}
return os;
@@ -211,9 +209,8 @@ static OsinfoHypervisor *osinfo_loader_get_hypervisor(OsinfoLoader *loader,
{
OsinfoHypervisor *hv = osinfo_db_get_hypervisor(loader->priv->db, id);
if (!hv) {
- OsinfoHypervisorList *list = osinfo_db_get_hypervisor_list(loader->priv->db);
hv = osinfo_hypervisor_new(id);
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(hv));
+ osinfo_db_add_hypervisor(loader->priv->db, hv);
g_object_unref(hv);
}
return hv;
diff --git a/osinfo/osinfo_oslist.c b/osinfo/osinfo_oslist.c
index 0a21dc3..aa415d5 100644
--- a/osinfo/osinfo_oslist.c
+++ b/osinfo/osinfo_oslist.c
@@ -69,6 +69,14 @@ OsinfoOsList *osinfo_oslist_new(void)
}
+OsinfoOsList *osinfo_oslist_new_copy(OsinfoOsList *source)
+{
+ OsinfoOsList *newList = osinfo_oslist_new();
+ osinfo_list_add_all(OSINFO_LIST(newList),
+ OSINFO_LIST(source));
+ return newList;
+}
+
OsinfoOsList *osinfo_oslist_new_filtered(OsinfoOsList *source, OsinfoFilter *filter)
{
OsinfoOsList *newList = osinfo_oslist_new();
diff --git a/osinfo/osinfo_oslist.h b/osinfo/osinfo_oslist.h
index 82d1df6..c8cbdaf 100644
--- a/osinfo/osinfo_oslist.h
+++ b/osinfo/osinfo_oslist.h
@@ -67,6 +67,7 @@ struct _OsinfoOsListClass
GType osinfo_oslist_get_type(void);
OsinfoOsList *osinfo_oslist_new(void);
+OsinfoOsList *osinfo_oslist_new_copy(OsinfoOsList *source);
OsinfoOsList *osinfo_oslist_new_filtered(OsinfoOsList *source, OsinfoFilter *filter);
OsinfoOsList *osinfo_oslist_new_intersection(OsinfoOsList *sourceOne, OsinfoOsList *sourceTwo);
OsinfoOsList *osinfo_oslist_new_union(OsinfoOsList *sourceOne, OsinfoOsList *sourceTwo);
diff --git a/test/test-db.c b/test/test-db.c
index 92f08e0..d0c659c 100644
--- a/test/test-db.c
+++ b/test/test-db.c
@@ -20,11 +20,15 @@ START_TEST(test_device)
OsinfoDevice *dev2 = osinfo_device_new("dev2");
OsinfoDevice *dev3 = osinfo_device_new("dev3");
- OsinfoDeviceList *list = osinfo_db_get_device_list(db);
+ osinfo_db_add_device(db, dev1);
+ osinfo_db_add_device(db, dev2);
+ osinfo_db_add_device(db, dev3);
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev1));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev2));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev3));
+ OsinfoDeviceList *list = osinfo_db_get_device_list(db);
+ fail_unless(OSINFO_ENTITY(dev1) == osinfo_list_get_nth(OSINFO_LIST(list), 0), "Dev 1 is missing");
+ fail_unless(OSINFO_ENTITY(dev2) == osinfo_list_get_nth(OSINFO_LIST(list), 1), "Dev 2 is missing");
+ fail_unless(OSINFO_ENTITY(dev3) == osinfo_list_get_nth(OSINFO_LIST(list), 2), "Dev 3 is missing");
+ g_object_unref(list);
OsinfoDevice *dev = osinfo_db_get_device(db, "dev2");
fail_unless(dev != NULL, "Device is NULL");
@@ -41,23 +45,27 @@ END_TEST
START_TEST(test_hypervisor)
{
OsinfoDb *db = osinfo_db_new();
- OsinfoHypervisor *dev1 = osinfo_hypervisor_new("dev1");
- OsinfoHypervisor *dev2 = osinfo_hypervisor_new("dev2");
- OsinfoHypervisor *dev3 = osinfo_hypervisor_new("dev3");
+ OsinfoHypervisor *hv1 = osinfo_hypervisor_new("hv1");
+ OsinfoHypervisor *hv2 = osinfo_hypervisor_new("hv2");
+ OsinfoHypervisor *hv3 = osinfo_hypervisor_new("hv3");
- OsinfoHypervisorList *list = osinfo_db_get_hypervisor_list(db);
+ osinfo_db_add_hypervisor(db, hv1);
+ osinfo_db_add_hypervisor(db, hv2);
+ osinfo_db_add_hypervisor(db, hv3);
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev1));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev2));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev3));
+ OsinfoHypervisorList *list = osinfo_db_get_hypervisor_list(db);
+ fail_unless(OSINFO_ENTITY(hv1) == osinfo_list_get_nth(OSINFO_LIST(list), 0), "Hv 1 is missing");
+ fail_unless(OSINFO_ENTITY(hv2) == osinfo_list_get_nth(OSINFO_LIST(list), 1), "Hv 2 is missing");
+ fail_unless(OSINFO_ENTITY(hv3) == osinfo_list_get_nth(OSINFO_LIST(list), 2), "Hv 3 is missing");
+ g_object_unref(list);
- OsinfoHypervisor *dev = osinfo_db_get_hypervisor(db, "dev2");
- fail_unless(dev != NULL, "Hypervisor is NULL");
- fail_unless(dev == dev2, "Hypervisor was not dev2");
+ OsinfoHypervisor *hv = osinfo_db_get_hypervisor(db, "hv2");
+ fail_unless(hv != NULL, "Hypervisor is NULL");
+ fail_unless(hv == hv2, "Hypervisor was not hv2");
- g_object_unref(dev1);
- g_object_unref(dev2);
- g_object_unref(dev3);
+ g_object_unref(hv1);
+ g_object_unref(hv2);
+ g_object_unref(hv3);
g_object_unref(db);
}
END_TEST
@@ -66,23 +74,27 @@ END_TEST
START_TEST(test_os)
{
OsinfoDb *db = osinfo_db_new();
- OsinfoOs *dev1 = osinfo_os_new("dev1");
- OsinfoOs *dev2 = osinfo_os_new("dev2");
- OsinfoOs *dev3 = osinfo_os_new("dev3");
+ OsinfoOs *os1 = osinfo_os_new("os1");
+ OsinfoOs *os2 = osinfo_os_new("os2");
+ OsinfoOs *os3 = osinfo_os_new("os3");
- OsinfoOsList *list = osinfo_db_get_os_list(db);
+ osinfo_db_add_os(db, os1);
+ osinfo_db_add_os(db, os2);
+ osinfo_db_add_os(db, os3);
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev1));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev2));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev3));
+ OsinfoOsList *list = osinfo_db_get_os_list(db);
+ fail_unless(OSINFO_ENTITY(os1) == osinfo_list_get_nth(OSINFO_LIST(list), 0), "Os 1 is missing");
+ fail_unless(OSINFO_ENTITY(os2) == osinfo_list_get_nth(OSINFO_LIST(list), 1), "Os 2 is missing");
+ fail_unless(OSINFO_ENTITY(os3) == osinfo_list_get_nth(OSINFO_LIST(list), 2), "Os 3 is missing");
+ g_object_unref(list);
- OsinfoOs *dev = osinfo_db_get_os(db, "dev2");
- fail_unless(dev != NULL, "Os is NULL");
- fail_unless(dev == dev2, "Os was not dev2");
+ OsinfoOs *os = osinfo_db_get_os(db, "os2");
+ fail_unless(os != NULL, "Os is NULL");
+ fail_unless(os == os2, "Os was not os2");
- g_object_unref(dev1);
- g_object_unref(dev2);
- g_object_unref(dev3);
+ g_object_unref(os1);
+ g_object_unref(os2);
+ g_object_unref(os3);
g_object_unref(db);
}
END_TEST
@@ -102,11 +114,9 @@ START_TEST(test_prop_device)
osinfo_entity_add_param(OSINFO_ENTITY(dev3), "class", "display");
osinfo_entity_add_param(OSINFO_ENTITY(dev3), "fruit", "apple");
- OsinfoDeviceList *list = osinfo_db_get_device_list(db);
-
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev1));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev2));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(dev3));
+ osinfo_db_add_device(db, dev1);
+ osinfo_db_add_device(db, dev2);
+ osinfo_db_add_device(db, dev3);
GList *uniq = osinfo_db_unique_values_for_property_in_dev(db, "class");
GList *tmp = uniq;
@@ -157,11 +167,9 @@ START_TEST(test_prop_hypervisor)
osinfo_entity_add_param(OSINFO_ENTITY(hv3), "vendor", "dog");
osinfo_entity_add_param(OSINFO_ENTITY(hv3), "arch", "x86");
- OsinfoHypervisorList *list = osinfo_db_get_hypervisor_list(db);
-
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(hv1));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(hv2));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(hv3));
+ osinfo_db_add_hypervisor(db, hv1);
+ osinfo_db_add_hypervisor(db, hv2);
+ osinfo_db_add_hypervisor(db, hv3);
GList *uniq = osinfo_db_unique_values_for_property_in_hv(db, "vendor");
GList *tmp = uniq;
@@ -208,12 +216,9 @@ START_TEST(test_prop_os)
osinfo_entity_add_param(OSINFO_ENTITY(os3), "vendor", "dog");
osinfo_entity_add_param(OSINFO_ENTITY(os3), "arch", "x86");
-
- OsinfoOsList *list = osinfo_db_get_os_list(db);
-
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(os1));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(os2));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(os3));
+ osinfo_db_add_os(db, os1);
+ osinfo_db_add_os(db, os2);
+ osinfo_db_add_os(db, os3);
GList *uniq = osinfo_db_unique_values_for_property_in_os(db, "vendor");
GList *tmp = uniq;
@@ -257,13 +262,11 @@ START_TEST(test_rel_os)
OsinfoOs *os4 = osinfo_os_new("os4");
OsinfoOs *os5 = osinfo_os_new("os5");
- OsinfoOsList *list = osinfo_db_get_os_list(db);
-
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(os1));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(os2));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(os3));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(os4));
- osinfo_list_add(OSINFO_LIST(list), OSINFO_ENTITY(os5));
+ osinfo_db_add_os(db, os1);
+ osinfo_db_add_os(db, os2);
+ osinfo_db_add_os(db, os3);
+ osinfo_db_add_os(db, os4);
+ osinfo_db_add_os(db, os5);
osinfo_os_add_related_os(os1, OSINFO_OS_RELATIONSHIP_DERIVES_FROM, os2);
osinfo_os_add_related_os(os1, OSINFO_OS_RELATIONSHIP_DERIVES_FROM, os3);
diff --git a/test/test-list.c b/test/test-list.c
index d90440d..68e0eba 100644
--- a/test/test-list.c
+++ b/test/test-list.c
@@ -53,6 +53,13 @@ START_TEST(test_basic)
fail_unless(osinfo_list_get_length(list) == 0, "List was not empty");
fail_unless(osinfo_list_find_by_id(list, "wibble") == NULL, "List was not empty");
+ GType type;
+ g_object_get(list, "element-type", &type, NULL);
+ fail_unless(type == OSINFO_TYPE_ENTITY, "Type is not entity");
+
+ type = osinfo_list_get_element_type(list);
+ fail_unless(type == OSINFO_TYPE_ENTITY, "Type is not entity");
+
g_object_unref(list);
}
END_TEST