提交 72c17940 编写于 作者: H haozi007

improve check driver of log

1. add llt for log
2. improve init driver of log
Signed-off-by: Nhaozi007 <liuhao27@huawei.com>
上级 a6421f36
%global _version 2.0.2
%global _release 20200526.162423.gitf1095eab
%global _release 20200609.145938.gita2be0373
%global _inner_name isula_libutils
Name: lcr
......
......@@ -33,11 +33,11 @@
TEST(json_testcase, test_oci_runtime_spec_hooks)
{
const char *fname = "./ocihook.json";
oci_runtime_spec_hooks *hooks = NULL;
oci_runtime_spec_hooks *hooks = nullptr;
parser_error jerr = nullptr;
char *jstr = nullptr;
hooks = oci_runtime_spec_hooks_parse_file(fname, NULL, &jerr);
hooks = oci_runtime_spec_hooks_parse_file(fname, nullptr, &jerr);
ASSERT_EQ(jerr, nullptr) << "parse hook failed: " << jerr;
ASSERT_NE(hooks, nullptr);
......@@ -82,11 +82,22 @@ TEST(json_testcase, test_oci_runtime_spec_hooks)
TEST(json_testcase, test_json_readfile)
{
const char *fname = "./ocihook.json";
char *jstr = NULL;
const char *not_exist = "/tmp/not_exist.json";
char *jstr = nullptr;
size_t len = 0;
jstr = read_file(fname, &len);
ASSERT_NE(jstr, nullptr);
ASSERT_EQ(len, 527);
free(jstr);
len = 0;
jstr = read_file(not_exist, &len);
ASSERT_EQ(jstr, nullptr);
ASSERT_EQ(len, 0);
len = 0;
jstr = read_file(nullptr, nullptr);
ASSERT_EQ(jstr, nullptr);
}
......@@ -42,7 +42,7 @@ TEST(log_testcases, test_isula_libutils_default_log_config)
ASSERT_EQ(tconf.file, nullptr);
ASSERT_EQ(tconf.driver, nullptr);
EXPECT_STREQ(name, tconf.name);
EXPECT_STREQ("FATAL", tconf.priority);
EXPECT_STREQ("NOTSET", tconf.priority);
// not quiet configs check
tconf.quiet = false;
......@@ -79,28 +79,65 @@ TEST(log_testcases, test_isula_libutils_log_enable)
struct isula_libutils_log_config tconf = {0};
const char *prefix = "fake";
const char *prio = "INFO";
const char *invalid_prio = "INVALID";
const char *fname = "/tmp/fake.fifo";
int fd = -1;
int ret = 0;
ret = isula_libutils_log_enable(nullptr);
ASSERT_NE(ret, 0);
fd = isula_libutils_get_log_fd();
ASSERT_EQ(fd, -1);
tconf.driver = ISULA_LOG_DRIVER_FIFO;
tconf.prefix = prefix;
tconf.priority = prio;
tconf.file = nullptr;
ret = isula_libutils_log_enable(&tconf);
ASSERT_NE(ret, 0);
fd = isula_libutils_get_log_fd();
ASSERT_EQ(fd, -1);
tconf.driver = nullptr;
tconf.prefix = prefix;
tconf.priority = prio;
tconf.file = fname;
isula_libutils_log_enable(&tconf);
ret = isula_libutils_log_enable(&tconf);
ASSERT_EQ(ret, 0);
fd = isula_libutils_get_log_fd();
ASSERT_EQ(fd, -1);
tconf.driver = ISULA_LOG_DRIVER_FIFO;
tconf.prefix = prefix;
tconf.priority = invalid_prio;
tconf.file = fname;
ret = isula_libutils_log_enable(&tconf);
ASSERT_EQ(ret, 0);
fd = isula_libutils_get_log_fd();
ASSERT_GE(fd, 0);
DEBUG("debug log");
check_log(fd, false, false, "debug log");
isula_libutils_log_disable();
tconf.driver = ISULA_LOG_DRIVER_FIFO;
tconf.prefix = prefix;
tconf.priority = prio;
tconf.file = fname;
ret = isula_libutils_log_enable(&tconf);
ASSERT_EQ(ret, 0);
fd = isula_libutils_get_log_fd();
ASSERT_GE(fd, 0);
INFO("info log");
check_log(fd, true, true, "info log");
DEBUG("debug log");
check_log(fd, false, false, "debug log");
isula_libutils_log_disable();
}
TEST(log_testcases, test_isula_libutils_log_prefix)
{
struct isula_libutils_log_config tconf = {0};
const char *default_prefix = "iSula";
const char *prefix = "prefix";
const char *prio = "INFO";
const char *fname = "/tmp/fake.fifo";
......@@ -121,5 +158,15 @@ TEST(log_testcases, test_isula_libutils_log_prefix)
isula_libutils_free_log_prefix();
INFO("fake log");
check_log(fd, true, false, prefix);
INFO("fake log");
check_log(fd, true, true, default_prefix);
isula_libutils_set_log_prefix(nullptr);
INFO("fake log");
check_log(fd, true, true, default_prefix);
isula_libutils_set_log_prefix("");
INFO("fake log");
check_log(fd, true, true, default_prefix);
}
......@@ -79,7 +79,8 @@ void isula_libutils_default_log_config(const char *name, struct isula_libutils_l
{
log->name = name;
log->file = NULL;
log->priority = "FATAL";
// use to disable log
log->priority = "NOTSET";
if (!log->quiet) {
log->driver = ISULA_LOG_DRIVER_STDOUT;
}
......@@ -87,7 +88,7 @@ void isula_libutils_default_log_config(const char *name, struct isula_libutils_l
void isula_libutils_set_log_prefix(const char *prefix)
{
if (prefix == NULL) {
if (prefix == NULL || strlen(prefix) == 0) {
return;
}
......@@ -336,12 +337,45 @@ static int open_fifo(const char *fifo_path)
return fifo_fd;
}
static bool check_log_driver(const struct isula_libutils_log_config *log)
static void clean_pre_init()
{
g_lxc_log_category_lxc.appender = &log_appender_stderr;
g_lxc_log_category_lxc.priority = LXC_LOG_LEVEL_ERROR;
}
static bool init_log_file(const char *fname)
{
if (fname == NULL) {
return false;
}
if (strcmp(fname, "none") == 0) {
return true;
}
if (lcr_util_build_dir(fname) != 0) {
CMD_SYSERROR("build log path \"%s\" failed", fname);
goto clean_out;
}
g_lxc_log_fd = open_fifo(fname);
if (g_lxc_log_fd == -1) {
CMD_SYSERROR("Open log fifo \"%s\" failed", fname);
goto clean_out;
}
free(log_fname);
log_fname = lcr_util_strdup_s(fname);
return true;
clean_out:
clean_pre_init();
return false;
}
static bool choice_log_driver(const struct isula_libutils_log_config *log)
{
bool is_fifo = false;
// if driver is null, mean disable log
if (log->driver == NULL) {
g_lxc_log_category_lxc.priority = LXC_LOG_LEVEL_NOTSET;
return true;
}
g_lxc_log_category_lxc.appender = &log_appender_logfile;
......@@ -350,10 +384,11 @@ static bool check_log_driver(const struct isula_libutils_log_config *log)
// if set file, only use log_append_logfile
// we only support fifo driver with file
if (log->file != NULL) {
return is_fifo;
}
if (is_fifo) {
return init_log_file(log->file);
}
if (log->file != NULL) {
clean_pre_init();
return false;
}
......@@ -363,16 +398,8 @@ static bool check_log_driver(const struct isula_libutils_log_config *log)
return true;
}
static void clean_pre_init()
{
g_lxc_log_category_lxc.appender = &log_appender_stderr;
g_lxc_log_category_lxc.priority = LXC_LOG_LEVEL_ERROR;
}
int isula_libutils_log_enable(const struct isula_libutils_log_config *log)
{
int ret = 0;
int lxc_priority = LXC_LOG_LEVEL_ERROR;
if (log == NULL)
......@@ -383,7 +410,7 @@ int isula_libutils_log_enable(const struct isula_libutils_log_config *log)
return 0;
}
if (!check_log_driver(log)) {
if (!choice_log_driver(log)) {
COMMAND_ERROR("Invalid log config of driver");
return -1;
}
......@@ -395,29 +422,8 @@ int isula_libutils_log_enable(const struct isula_libutils_log_config *log)
isula_libutils_set_log_prefix(log->prefix != NULL ? log->prefix : log->name);
if (log->file) {
if (strcmp(log->file, "none") == 0) {
ret = 0;
goto clean_out;
}
if (lcr_util_build_dir(log->file) != 0) {
CMD_SYSERROR("build log path \"%s\" failed", log->file);
ret = -1;
goto clean_out;
}
g_lxc_log_fd = open_fifo(log->file);
if (g_lxc_log_fd == -1) {
CMD_SYSERROR("Open log fifo \"%s\" failed", log->file);
ret = -1;
goto clean_out;
}
log_fname = lcr_util_strdup_s(log->file);
}
return 0;
clean_out:
clean_pre_init();
return ret;
}
static inline void lxc_log_close(void)
......
......@@ -448,6 +448,7 @@ void isula_libutils_default_log_config(const char *name, struct isula_libutils_l
int isula_libutils_log_enable(const struct isula_libutils_log_config *log);
void isula_libutils_set_log_prefix(const char *prefix);
void isula_libutils_free_log_prefix(void);
void isula_libutils_log_disable();
int isula_libutils_get_log_fd(void);
......
......@@ -91,7 +91,7 @@ function pclint_check() {
local start_time=$(date +%s)
local files
if [[ ${1} == "all" ]]; then
files=$(find ./src ./test -regextype posix-extended -regex ".*\.(c|cc)")
files=$(find ./src ./tests -regextype posix-extended -regex ".*\.(c|cc)")
else
files=$(git diff --name-only HEAD | grep -E "*.c$")
fi
......@@ -157,7 +157,7 @@ function codestyle_check() {
local start_time=$(date +%s)
local files
if [[ ${1} == "all" ]]; then
files=$(find ./src ./test -regextype posix-extended -regex ".*\.(h|c|cc)")
files=$(find ./src ./tests -regextype posix-extended -regex ".*\.(h|c|cc)")
else
files=$(git diff --name-only HEAD | grep -E "*.h$|*.c$|*.cc$")
fi
......@@ -313,7 +313,7 @@ function astyle_format() {
/_/ |_|/____/ /_/ /_//_____//_____/ /_/ \____//_/ |_|/_/ /_//_/ |_|/_/ \033[0m]
================================================================================================="
local start_time=$(date +%s)
local files=$(find ./src ./test -regextype posix-extended -regex ".*\.(h|c|cc)")
local files=$(find ./src ./tests -regextype posix-extended -regex ".*\.(h|c|cc)")
files=(${files// / })
local total=${#files[@]}
local failure_num=0
......@@ -368,7 +368,7 @@ echo -e "\
local start_time=$(date +%s)
local files
if [[ ${1} == "all" ]]; then
files=$(find ./src ./test -regextype posix-extended -regex ".*\.(h|c|cc)")
files=$(find ./src ./tests -regextype posix-extended -regex ".*\.(h|c|cc)")
else
files=$(git diff --name-only HEAD | grep -E "*.h$|*.c$|*.cc$")
fi
......@@ -428,7 +428,7 @@ function cmetrics_check() {
local start_time=$(date +%s)
local files
if [[ ${1} == "all" ]]; then
files=$(find ./src ./test -regextype posix-extended -regex ".*\.(h|c|cc)")
files=$(find ./src ./tests -regextype posix-extended -regex ".*\.(h|c|cc)")
else
files=$(git diff --name-only HEAD | grep -E "*.h$|*.c$|*.cc$")
fi
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册