static c_avl_tree_t *cache_tree;
static pthread_mutex_t cache_lock = PTHREAD_MUTEX_INITIALIZER;
-/* TODO(bkjg): change to return status and return time in pointer given as
- * argument */
-cdtime_t uc_get_last_time(char *name) {
- cache_entry_t *ce = NULL;
-
- pthread_mutex_lock(&cache_lock);
-
- if (c_avl_get(cache_tree, name, (void *)&ce) == 0) {
- assert(ce != NULL);
-
- /* remove missing values from getval */
- if (ce->state == STATE_MISSING) {
- pthread_mutex_unlock(&cache_lock);
- return UINT64_MAX;
- } else {
- pthread_mutex_unlock(&cache_lock);
- return ce->last_time;
- }
- } else {
- DEBUG("utils_cache: uc_get_time_of_last_update: No such value: %s", name);
- pthread_mutex_unlock(&cache_lock);
- return UINT64_MAX;
- }
-}
-
-/* TODO(bkjg): change to return status and return time in pointer given as
- * argument */
-cdtime_t uc_get_last_update(char *name) {
- cache_entry_t *ce = NULL;
-
- pthread_mutex_lock(&cache_lock);
-
- if (c_avl_get(cache_tree, name, (void *)&ce) == 0) {
- assert(ce != NULL);
-
- /* remove missing values from getval */
- if (ce->state == STATE_MISSING) {
- pthread_mutex_unlock(&cache_lock);
- return UINT64_MAX;
- } else {
- pthread_mutex_unlock(&cache_lock);
- return ce->last_update;
- }
- } else {
- DEBUG("utils_cache: uc_get_time_of_last_update: No such value: %s", name);
- pthread_mutex_unlock(&cache_lock);
- return UINT64_MAX;
- }
-}
-
static int cache_compare(const cache_entry_t *a, const cache_entry_t *b) {
#if COLLECT_DEBUG
assert((a != NULL) && (b != NULL));
return ret;
} /* int uc_inc_hits */
+int uc_get_last_time(char *name, cdtime_t *ret_value) {
+ cache_entry_t *ce = NULL;
+
+ pthread_mutex_lock(&cache_lock);
+
+ if (c_avl_get(cache_tree, name, (void *)&ce) == 0) {
+ assert(ce != NULL);
+
+ /* remove missing values from getval */
+ if (ce->state == STATE_MISSING) {
+ pthread_mutex_unlock(&cache_lock);
+ return -1;
+ } else {
+ *ret_value = ce->last_time;
+ }
+ } else {
+ DEBUG("utils_cache: uc_get_time_of_last_time: No such value: %s", name);
+ pthread_mutex_unlock(&cache_lock);
+ return -1;
+ }
+ pthread_mutex_unlock(&cache_lock);
+ return 0;
+}
+
+int uc_get_last_update(char *name, cdtime_t *ret_value) {
+ cache_entry_t *ce = NULL;
+
+ pthread_mutex_lock(&cache_lock);
+
+ if (c_avl_get(cache_tree, name, (void *)&ce) == 0) {
+ assert(ce != NULL);
+
+ /* remove missing values from getval */
+ if (ce->state == STATE_MISSING) {
+ pthread_mutex_unlock(&cache_lock);
+ return -1;
+ } else {
+ *ret_value = ce->last_update;
+ }
+ } else {
+ DEBUG("utils_cache: uc_get_time_of_last_update: No such value: %s", name);
+ pthread_mutex_unlock(&cache_lock);
+ return -1;
+ }
+
+ pthread_mutex_unlock(&cache_lock);
+ return 0;
+}
+
/*
* Iterator interface
*/
static metric_family_t *create_metric_family_for_test1(char *name,
size_t num_metrics,
- gauge_t *gauges) {
+ const gauge_t *gauges) {
metric_family_t *fam = calloc(1, sizeof(metric_family_t));
fam->name = name;
fam->type = METRIC_TYPE_GAUGE;
static metric_family_t *create_metric_family_for_test2(char *name,
double *want_ret_value,
size_t num_metrics,
- counter_t *counters,
- uint64_t *times) {
+ const counter_t *counters,
+ const uint64_t *times) {
metric_family_t *fam = calloc(1, sizeof(metric_family_t));
fam->name = name;
fam->type = METRIC_TYPE_COUNTER;
static metric_family_t *create_metric_family_for_test3(char *name,
size_t num_metrics,
- gauge_t *gauges) {
+ const gauge_t *gauges) {
metric_family_t *fam = calloc(1, sizeof(metric_family_t));
fam->name = name;
fam->type = METRIC_TYPE_UNTYPED;
}
}
+ cdtime_t time;
EXPECT_EQ_INT(cases[i].want_get, uc_update(cases[i].fam));
- EXPECT_EQ_UINT64(
- cases[i].fam->metric.ptr[cases[i].fam->metric.num - 1].time,
- uc_get_last_time(cases[i].fam->name));
- EXPECT_EQ_UINT64(cdtime(), uc_get_last_update(cases[i].fam->name));
+ CHECK_ZERO(uc_get_last_time(cases[i].fam->name, &time));
+ EXPECT_EQ_UINT64( cases[i].fam->metric.ptr[cases[i].fam->metric.num - 1].time, time);
+ CHECK_ZERO(uc_get_last_update(cases[i].fam->name, &time));
+ EXPECT_EQ_UINT64(cdtime(), time);
CHECK_ZERO(metric_family_metric_reset(cases[i].fam));
free(cases[i].fam);