static void test_table_with_int_key(void) { census_ht_option opt = {CENSUS_HT_UINT64, 7, NULL, NULL, NULL, NULL}; census_ht *ht = census_ht_create(&opt); uint64_t i = 0; uint64_t sum_of_keys = 0; size_t num_elements; census_ht_kv *elements = NULL; GPR_ASSERT(ht != NULL); GPR_ASSERT(census_ht_get_size(ht) == 0); elements = census_ht_get_all_elements(ht, &num_elements); GPR_ASSERT(num_elements == 0); GPR_ASSERT(elements == NULL); for (i = 0; i < 20; ++i) { census_ht_key key; key.val = i; census_ht_insert(ht, key, (void *)(intptr_t)i); GPR_ASSERT(census_ht_get_size(ht) == i + 1); } for (i = 0; i < 20; i++) { uint64_t *val = NULL; census_ht_key key; key.val = i; val = census_ht_find(ht, key); GPR_ASSERT(val == (void *)(intptr_t)i); } elements = census_ht_get_all_elements(ht, &num_elements); GPR_ASSERT(elements != NULL); GPR_ASSERT(num_elements == 20); for (i = 0; i < num_elements; i++) { sum_of_keys += elements[i].k.val; } GPR_ASSERT(sum_of_keys == 190); gpr_free(elements); census_ht_destroy(ht); }
/* Get stats from input stats store */ static void get_stats(census_ht *store, census_aggregated_rpc_stats *data) { GPR_ASSERT(data != NULL); if (data->num_entries != 0) { census_aggregated_rpc_stats_set_empty(data); } gpr_mu_lock(&g_mu); if (store != NULL) { size_t n; unsigned i, j; gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); census_ht_kv *kv = census_ht_get_all_elements(store, &n); if (kv != NULL) { data->num_entries = n; data->stats = (per_method_stats *)gpr_malloc(sizeof(per_method_stats) * n); for (i = 0; i < n; i++) { census_window_stats_sums sums[NUM_INTERVALS]; for (j = 0; j < NUM_INTERVALS; j++) { sums[j].statistic = (void *)census_rpc_stats_create_empty(); } data->stats[i].method = gpr_strdup(kv[i].k.ptr); census_window_stats_get_sums(kv[i].v, now, sums); data->stats[i].minute_stats = *(census_rpc_stats *)sums[MINUTE_INTERVAL].statistic; data->stats[i].hour_stats = *(census_rpc_stats *)sums[HOUR_INTERVAL].statistic; data->stats[i].total_stats = *(census_rpc_stats *)sums[TOTAL_INTERVAL].statistic; for (j = 0; j < NUM_INTERVALS; j++) { gpr_free(sums[j].statistic); } } gpr_free(kv); } } gpr_mu_unlock(&g_mu); }