From: Christian Brauner Date: Thu, 9 Jan 2020 16:10:14 +0000 (+0100) Subject: tests: log api reboot test failures X-Git-Tag: lxc-4.0.0~61^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3919322d524dcf249baf9cc5fcf8718b3dbb1017;p=thirdparty%2Flxc.git tests: log api reboot test failures Signed-off-by: Christian Brauner --- diff --git a/src/tests/api_reboot.c b/src/tests/api_reboot.c index f6864e877..9b5de4970 100644 --- a/src/tests/api_reboot.c +++ b/src/tests/api_reboot.c @@ -29,17 +29,46 @@ #include "lxc/lxccontainer.h" #include "lxctest.h" +#include "utils.h" + +#ifndef HAVE_STRLCPY +#include "include/strlcpy.h" +#endif + +#define TSTNAME "lxc-api-reboot" int main(int argc, char *argv[]) { int i; struct lxc_container *c; int ret = EXIT_FAILURE; + struct lxc_log log; + char template[sizeof(P_tmpdir"/reboot_XXXXXX")]; + + (void)strlcpy(template, P_tmpdir"/reboot_XXXXXX", sizeof(template)); + + i = lxc_make_tmpfile(template, false); + if (i < 0) { + lxc_error("Failed to create temporary log file for container %s\n", TSTNAME); + exit(EXIT_FAILURE); + } else { + lxc_debug("Using \"%s\" as temporary log file for container %s\n", template, TSTNAME); + close(i); + } + + log.name = TSTNAME; + log.file = template; + log.level = "TRACE"; + log.prefix = "reboot"; + log.quiet = false; + log.lxcpath = NULL; + if (lxc_log_init(&log)) + exit(ret); /* Test that the reboot() API function properly waits for containers to * restart. */ - c = lxc_container_new("reboot", NULL); + c = lxc_container_new(TSTNAME, NULL); if (!c) { lxc_error("%s", "Failed to create container \"reboot\""); exit(ret); @@ -120,8 +149,24 @@ on_error_stop: on_error_put: lxc_container_put(c); - if (ret == EXIT_SUCCESS) + if (ret == EXIT_SUCCESS) { lxc_debug("%s\n", "All reboot tests passed"); + } else { + int fd; + + fd = open(template, O_RDONLY); + if (fd >= 0) { + char buf[4096]; + ssize_t buflen; + while ((buflen = read(fd, buf, 1024)) > 0) { + buflen = write(STDERR_FILENO, buf, buflen); + if (buflen <= 0) + break; + } + close(fd); + } + } + (void)unlink(template); exit(ret); }