コード例 #1
0
ファイル: hash_table_test.c プロジェクト: github188/grpc
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);
}
コード例 #2
0
ファイル: census_rpc_stats.c プロジェクト: bjori/grpc
/* 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);
}