+static void
+test_stats (void)
+{
+ clib_mem_trace_enable_disable(1);
+ clib_mem_trace (1);
+
+ int rv = stat_segment_connect (STAT_SEGMENT_SOCKET_FILE);
+ assert(rv == 0);
+
+ u32 *dir;
+ int i, j, k;
+ stat_segment_data_t *res;
+ u8 **pattern = 0;
+ vec_add1(pattern, (u8 *)"/if/names");
+ vec_add1(pattern, (u8 *)"/err");
+
+ dir = stat_segment_ls ((u8 **)pattern);
+
+ res = stat_segment_dump (dir);
+ for (i = 0; i < vec_len (res); i++) {
+ switch (res[i].type) {
+ case STAT_DIR_TYPE_NAME_VECTOR:
+ if (res[i].name_vector == 0)
+ continue;
+ for (k = 0; k < vec_len (res[i].name_vector); k++)
+ if (res[i].name_vector[k])
+ fformat (stdout, "[%d]: %s %s\n", k, res[i].name_vector[k],
+ res[i].name);
+ break;
+ case STAT_DIR_TYPE_ERROR_INDEX:
+ for (j = 0; j < vec_len (res[i].error_vector); j++)
+ fformat (stdout, "%llu %s\n", res[i].error_vector[j],
+ res[i].name);
+ break;
+ default:
+ assert(0);
+ }
+ }
+ stat_segment_data_free (res);
+ stat_segment_disconnect();
+
+ vec_free(pattern);
+ vec_free(dir);
+
+ (void) clib_mem_trace_enable_disable (0);
+ u8 *leak_report = format (0, "%U", format_mheap, clib_mem_get_heap (),
+ 1 /* verbose, i.e. print leaks */ );
+ printf("%s", leak_report);
+ vec_free (leak_report);
+ clib_mem_trace (0);
+}
+