void test_statsd_msg__split_buffer(void) { struct brubeck_sampler sampler; struct brubeck_server server = {}; int i; server.at_capacity = true; // don't try to allocate server.metrics = brubeck_hashtable_new(1 << 1); sampler.server = &server; sampler.type = BRUBECK_SAMPLER_STATSD; for(i = 0; test_values[i].metric != NULL; i++) { try_split(&sampler, test_values[i].metric, test_values[i].parse == 0 ? 1 : 0); } try_split(&sampler, "missing.metric.type:0\n" "ab.cd.ef:0|g\n" ":0|g\n" ":0\n" "|g\n" "missing.metric.value|g\n" "ghi.jkl.mnop:-1|g" , 2); try_split(&sampler, "missing.metric.type:0@trail\n" "ab.cd.ef:0|g@foo\n" "gh.ij.k:0|[email protected]\n" "missing.metric.value|g\n" "x.y.z:-1|g\n" , 2); }
static void load_config(struct brubeck_server *server, const char *path) { json_error_t error; /* required */ int capacity; json_t *backends, *samplers; /* optional */ int expire = 0; char *http = NULL; server->name = "brubeck"; server->config_name = get_config_name(path); server->dump_path = NULL; server->config = json_load_file(path, 0, &error); if (!server->config) { die("failed to load config file, %s (%s:%d:%d)", error.text, error.source, error.line, error.column); } json_unpack_or_die(server->config, "{s?:s, s:s, s:i, s:o, s:o, s?:s, s?:i}", "server_name", &server->name, "dumpfile", &server->dump_path, "capacity", &capacity, "backends", &backends, "samplers", &samplers, "http", &http, "expire", &expire); gh_log_set_instance(server->name); server->metrics = brubeck_hashtable_new(1 << capacity); if (!server->metrics) die("failed to initialize hash table (size: %lu)", 1ul << capacity); load_backends(server, backends); load_samplers(server, samplers); if (http) brubeck_http_endpoint_init(server, http); if (expire) server->fd_expire = load_timerfd(expire); }