]> xenbits.xensource.com Git - people/andrewcoop/hwloc.git/commitdiff
tests/hwloc_insert_misc: Add more objects and c...
authorBrice Goglin <brice.goglin@inria.fr>
Mon, 24 Jun 2013 10:00:16 +0000 (10:00 +0000)
committerBrice Goglin <brice.goglin@inria.fr>
Mon, 24 Jun 2013 10:00:16 +0000 (10:00 +0000)
tests/hwloc_insert_misc: Add more objects and check that XML import/export works fine

This commit was SVN r5711.

tests/hwloc_insert_misc.c

index 74180c1eb209e04b7bb9447a1f3efdb92084f897..42ce7eef5593906fa12648c24b2b4facdec93583 100644 (file)
 
 int main(void)
 {
-  hwloc_topology_t topology;
+  hwloc_topology_t topology, reload;
   hwloc_bitmap_t cpuset;
   hwloc_obj_t obj;
+  char *buf1, *buf2;
+  int buflen1, buflen2, err;
 
   hwloc_topology_init(&topology);
   hwloc_topology_load(topology);
   hwloc_topology_check(topology);
+
+  /* insert by cpuset below root */
+  cpuset = hwloc_bitmap_alloc();
+  hwloc_bitmap_copy(cpuset, hwloc_topology_get_topology_cpuset(topology));
+  obj = hwloc_topology_insert_misc_object_by_cpuset(topology, cpuset, "test by cpuset under root");
+  assert(obj);
+  hwloc_bitmap_free(cpuset);
+
+  /* insert by cpuset below first available PU */
   cpuset = hwloc_bitmap_alloc();
   hwloc_bitmap_set(cpuset, hwloc_bitmap_first(hwloc_topology_get_topology_cpuset(topology)));
-  obj = hwloc_topology_insert_misc_object_by_cpuset(topology, cpuset, "test");
+  obj = hwloc_topology_insert_misc_object_by_cpuset(topology, cpuset, "test by cpuset under first available PU");
   assert(obj);
   hwloc_bitmap_free(cpuset);
-  hwloc_topology_insert_misc_object_by_parent(topology, obj, "test2");
+
+  /* insert by parent below root */
+  obj = hwloc_get_root_obj(topology);
+  obj = hwloc_topology_insert_misc_object_by_parent(topology, obj, "test by parent below root");
+  assert(obj);
+
+  /* insert by parent below previous Misc */
+  obj = hwloc_topology_insert_misc_object_by_parent(topology, obj, "test by parent below previous Misc");
+  assert(obj);
+
+  /* insert by parent below first PU */
+  obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0);
+  obj = hwloc_topology_insert_misc_object_by_parent(topology, obj, "test by parent below first PU");
+  assert(obj);
+
   hwloc_topology_check(topology);
+
+  /* export, reimport and check things are in consistent state */
+  hwloc_topology_export_xmlbuffer(topology, &buf1, &buflen1);
+  hwloc_topology_init(&reload);
+  hwloc_topology_set_xmlbuffer(reload, buf1, buflen1);
+  hwloc_topology_load(reload);
+  hwloc_topology_export_xmlbuffer(reload, &buf2, &buflen2);
+  assert(buflen1 == buflen2);
+  err = strcmp(buf1, buf2);
+  assert(!err);
+  hwloc_free_xmlbuffer(reload, buf2);
+  hwloc_topology_destroy(reload);
+  hwloc_free_xmlbuffer(topology, buf1);
+
   hwloc_topology_destroy(topology);
 
   return 0;