char *value;
} label_pair_t;
-/* label_t represents a key/value pair. It is similar to label_pair_t, except
- * that is has const fields. label_t is used in function arguments to prevent
- * the called function from modifying its argument. Internally labels are
- * stored as label_pair_t to allow modification, e.g. by targets in the "filter
- * chain". */
-typedef struct {
- char const *name;
- char const *value;
-} label_t;
-
/* label_set_t is a sorted set of labels. */
typedef struct {
label_pair_t *ptr;
DEF_TEST(metric_identity) {
struct {
char *name;
- label_t *labels;
+ label_pair_t *labels;
size_t labels_num;
char const *want;
} cases[] = {
{
.name = "metric_with_labels",
.labels =
- (label_t[]){
+ (label_pair_t[]){
{"sorted", "yes"},
{"alphabetically", "true"},
},
{
.name = "escape_sequences",
.labels =
- (label_t[]){
+ (label_pair_t[]){
{"newline", "\n"},
{"quote", "\""},
{"tab", "\t"},
gauge_t v;
metric_t *templ;
int want_err;
- label_t *want_labels;
+ label_pair_t *want_labels;
size_t want_labels_num;
gauge_t want_value;
cdtime_t want_time;
.lvalue = "test",
.v = 42,
.want_labels =
- (label_t[]){
+ (label_pair_t[]){
{"type", "test"},
},
.want_labels_num = 1,
},
},
.want_labels =
- (label_t[]){
+ (label_pair_t[]){
{"common", "label"},
{"type", "test"},
},
#endif
typedef struct {
- label_t *expected_labels;
+ label_pair_t *expected_labels;
size_t expected_labels_num;
- label_t *current_label;
+ label_pair_t *current_label;
} test_case_t;
#if HAVE_YAJL_V2
c->current_label = NULL;
for (i = 0; i < c->expected_labels_num; i++) {
- label_t *l = c->expected_labels + i;
+ label_pair_t *l = c->expected_labels + i;
if ((strlen(l->name) == key_len) &&
(strncmp(l->name, (char const *)key, key_len) == 0)) {
c->current_label = l;
test_case_t *c = ctx;
if (c->current_label != NULL) {
- label_t *l = c->current_label;
+ label_pair_t *l = c->current_label;
char *got;
int status;
return 1; /* continue */
}
-static int expect_json_labels(char *json, label_t *labels, size_t labels_num) {
+static int expect_json_labels(char *json, label_pair_t *labels,
+ size_t labels_num) {
yajl_callbacks funcs = {
.yajl_string = test_string,
.yajl_map_key = test_map_key,
}
DEF_TEST(notification) {
- label_t labels[] = {
+ label_pair_t labels[] = {
{"summary", "this is a message"},
{"alertname", "collectd_unit_test"},
{"instance", "example.com"},
struct {
char *name;
metric_type_t type;
- label_t *labels;
+ label_pair_t *labels;
size_t labels_num;
char *want;
} cases[] = {
.name = "metric_with_labels",
.type = METRIC_TYPE_GAUGE,
.labels =
- (label_t[]){
+ (label_pair_t[]){
{"region", "here be dragons"},
{"instance", "example.com"},
},
.family = &fam,
};
for (size_t j = 0; j < cases[i].labels_num; j++) {
- label_t *l = cases[i].labels + j;
+ label_pair_t *l = cases[i].labels + j;
EXPECT_EQ_INT(0, metric_label_set(&m, l->name, l->value));
}