Пример #1
0
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);
}
Пример #2
0
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);
}