Ejemplo n.º 1
0
void debuglogger(void) {
	cp_context_t *ctx;
	struct log_count_t lc = { CP_LOG_DEBUG, 0, 0 };

	ctx = init_context(CP_LOG_INFO, NULL);
	check(cp_register_logger(ctx, counting_logger, &lc, CP_LOG_DEBUG) == CP_OK);
	cp_destroy();
	check(lc.count_max > 0 && lc.count_above_max == 0);
}
Ejemplo n.º 2
0
CP_HIDDEN cp_context_t *init_context(cp_log_severity_t min_disp_sev, int *error_counter) {
	cp_context_t *ctx;
	cp_status_t status;
	
	check(cp_init() == CP_OK);
	check((ctx = cp_create_context(&status)) != NULL && status == CP_OK);
	if (error_counter != NULL) {
		*error_counter = 0;
	}
	if (error_counter != NULL || min_disp_sev <= CP_LOG_ERROR) {
		if (min_disp_sev <= CP_LOG_ERROR) {
			check(cp_register_logger(ctx, full_logger, error_counter, min_disp_sev) == CP_OK);
		} else {
			check(cp_register_logger(ctx, counting_logger, error_counter, CP_LOG_ERROR) == CP_OK);
		}
	}
	return ctx;
}
Ejemplo n.º 3
0
void warninglogger(void) {
	cp_context_t *ctx;
	struct log_count_t lc = { CP_LOG_WARNING, 0, 0 };

	ctx = init_context(CP_LOG_ERROR, NULL);
	check(cp_register_logger(ctx, counting_logger, &lc, CP_LOG_WARNING) == CP_OK);
	check(cp_start_plugin(ctx, "nonexisting") == CP_ERR_UNKNOWN);
	cp_destroy();
	check(lc.count_max > 0 && lc.count_above_max == 0);
}
Ejemplo n.º 4
0
void twologgers(void) {
	cp_context_t *ctx;
	cp_plugin_info_t *plugin;
	cp_status_t status;
	struct log_count_t lc = { CP_LOG_DEBUG, 0, 0 };
	int count = 0;
	int errors;

	ctx = init_context(CP_LOG_ERROR, &errors);
	check(cp_register_logger(ctx, counting_logger, &lc, CP_LOG_DEBUG) == CP_OK);
	check(count == 0 && lc.count_max > 0 && lc.count_above_max == 0);
	check(cp_register_logger(ctx, increment_logger, &count, CP_LOG_INFO) == CP_OK);
	check(count == 0 && lc.count_max > 0 && lc.count_above_max == 0);
	check((plugin = cp_load_plugin_descriptor(ctx, plugindir("minimal"), &status)) != NULL && status == CP_OK);
	check(cp_install_plugin(ctx, plugin) == CP_OK);
	cp_release_info(ctx, plugin);
	check(count > 0 && lc.count_max > 0 && lc.count_above_max > 0);
	cp_destroy();
	check(errors == 0);
}
Ejemplo n.º 5
0
static void logmsg_sev(cp_context_t *ctx, cp_log_severity_t severity, const char *msg) {
	struct log_info_t li = { -1, NULL, NULL };

	check(cp_register_logger(ctx, store_logger, &li, CP_LOG_DEBUG) == CP_OK);
	cp_log(ctx, severity, msg);
	check(li.severity == severity);
	check(li.msg != NULL && !strcmp(li.msg, msg));
	check(li.apid == NULL);
	free(li.msg);
	li.msg = NULL;
	cp_unregister_logger(ctx, store_logger);
}
Ejemplo n.º 6
0
void infologger(void) {
	cp_context_t *ctx;
	cp_plugin_info_t *plugin;
	cp_status_t status;
	struct log_count_t lc = { CP_LOG_INFO, 0, 0 };

	ctx = init_context(CP_LOG_WARNING, NULL);
	check(cp_register_logger(ctx, counting_logger, &lc, CP_LOG_INFO) == CP_OK);
	check((plugin = cp_load_plugin_descriptor(ctx, plugindir("minimal"), &status)) != NULL && status == CP_OK);
	check(cp_install_plugin(ctx, plugin) == CP_OK);
	cp_release_info(ctx, plugin);
	cp_destroy();
	check(lc.count_max > 0 && lc.count_above_max == 0);
}
Ejemplo n.º 7
0
static int start(void *d) {
	struct runtime_data *data = d;
	char **argv;

	data->counters->start++;
	argv = cp_get_context_args(data->ctx, NULL);
	if (argv != NULL && argv[0] != NULL) {
		if ((data->counters->context_arg_0 = strdup(argv[0])) == NULL) {
			return CP_ERR_RESOURCE;
		}
	}
	if (cp_define_symbol(data->ctx, "cbc_counters", data->counters) != CP_OK
		|| cp_register_logger(data->ctx, logger, data, CP_LOG_WARNING) != CP_OK
		|| cp_register_plistener(data->ctx, listener, data) != CP_OK
		|| cp_run_function(data->ctx, run) != CP_OK) {
		return CP_ERR_RUNTIME;
	} else {
		return CP_OK;
	}
}
Ejemplo n.º 8
0
static void islogged_sev(cp_context_t *ctx, cp_log_severity_t severity) {
	int count = 0;

	check(!cp_is_logged(ctx, severity));
	check(cp_register_logger(ctx, increment_logger, &count, severity) == CP_OK);
	check(cp_is_logged(ctx, CP_LOG_ERROR));
	check(cp_is_logged(ctx, severity));
	switch (severity) {
		case CP_LOG_DEBUG:
			break;
		case CP_LOG_INFO:
			check(!cp_is_logged(ctx, CP_LOG_DEBUG));
			break;
		case CP_LOG_WARNING:
			check(!cp_is_logged(ctx, CP_LOG_INFO));
			break;
		case CP_LOG_ERROR:
			check(!cp_is_logged(ctx, CP_LOG_WARNING));
			break;
	}
	cp_unregister_logger(ctx, increment_logger);
}