diff --git a/.gitignore b/.gitignore index edd5d26180c178690e40573f6c7e223363f416a7..d8e90842eda58165194a1fa69f33eadd72093db2 100644 --- a/.gitignore +++ b/.gitignore @@ -209,6 +209,7 @@ /tests/virkeycodetest /tests/virkeyfiletest /tests/virlockspacetest +/tests/virlogtest /tests/virnet*test /tests/virportallocatortest /tests/virshtest diff --git a/src/util/virlog.c b/src/util/virlog.c index 3bbde813698be5446090792632f1b452d5c4922c..72e30cd1be8682933f0ebcc5916372fc472353eb 100644 --- a/src/util/virlog.c +++ b/src/util/virlog.c @@ -83,7 +83,7 @@ static regex_t *virLogRegex = NULL; #define VIR_LOG_DATE_REGEX "[0-9]{4}-[0-9]{2}-[0-9]{2}" #define VIR_LOG_TIME_REGEX "[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}\\+[0-9]{4}" #define VIR_LOG_PID_REGEX "[0-9]+" -#define VIR_LOG_LEVEL_REGEX "debug|info|warning|error" +#define VIR_LOG_LEVEL_REGEX "(debug|info|warning|error)" #define VIR_LOG_REGEX \ VIR_LOG_DATE_REGEX " " VIR_LOG_TIME_REGEX ": " \ @@ -1633,6 +1633,9 @@ virLogSetFromEnv(void) { char *debugEnv; + if (virLogInitialize() < 0) + return; + debugEnv = getenv("LIBVIRT_DEBUG"); if (debugEnv && *debugEnv) virLogParseDefaultPriority(debugEnv); diff --git a/tests/Makefile.am b/tests/Makefile.am index 597048b4b9fb6b63459718eebf1a5c1b34a98692..1c54f44f5e84eb62313332f6dc1dd83026c6b468 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -126,6 +126,7 @@ test_programs = virshtest sockettest \ viridentitytest \ virkeycodetest \ virlockspacetest \ + virlogtest \ virstringtest \ virportallocatortest \ sysinfotest \ @@ -702,6 +703,10 @@ virlockspacetest_SOURCES = \ virlockspacetest.c testutils.h testutils.c virlockspacetest_LDADD = $(LDADDS) +virlogtest_SOURCES = \ + virlogtest.c testutils.h testutils.c +virlogtest_LDADD = $(LDADDS) + virportallocatortest_SOURCES = \ virportallocatortest.c testutils.h testutils.c virportallocatortest_LDADD = $(LDADDS) diff --git a/tests/virlogtest.c b/tests/virlogtest.c new file mode 100644 index 0000000000000000000000000000000000000000..4ebc60e75b58c75b2b8db483f22998752aac72fc --- /dev/null +++ b/tests/virlogtest.c @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2013 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + * + */ + +#include + +#include "testutils.h" + +#include "virlog.h" + +struct testLogMatchData { + const char *str; + bool res; +}; + +static int +testLogMatch(const void *opaque) +{ + const struct testLogMatchData *data = opaque; + + bool got = virLogProbablyLogMessage(data->str); + if (got != data->res) { + fprintf(stderr, "Expected '%d' but got '%d' for '%s'\n", + data->res, got, data->str); + return -1; + } + return 0; +} + + +static int +mymain(void) +{ + int ret = 0; + +#define TEST_LOG_MATCH(str, res) \ + do { \ + struct testLogMatchData data = { \ + str, res \ + }; \ + if (virtTestRun("testLogMatch " # str, 0, testLogMatch, &data) < 0) \ + ret = -1; \ + } while (0) + + TEST_LOG_MATCH("2013-10-11 15:43:43.866+0000: 28302: info : libvirt version: 1.1.3", true); + + TEST_LOG_MATCH("libvirt: error : cannot execute binary /usr/libexec/libvirt_lxc: No such file or directory", false); + + return ret; +} + +VIRT_TEST_MAIN(mymain)