1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

tests: extend harness with output of /var/log/messages

Add a very simple hack for embeding /var/log/messages into
the tests output - it's not ideal since it sometimes breaks lines,
but still gives valuable info.
This commit is contained in:
Zdenek Kabelac 2013-09-12 13:30:12 +02:00
parent 4dc1668467
commit 4d54400486

View File

@ -219,7 +219,8 @@ static const char *_append_with_stamp(const char *buf, int stamp)
return bb;
}
static void drain(void) {
static void drain(int fd)
{
char buf[4096];
const char *bp;
int stamp = 0;
@ -228,7 +229,7 @@ static void drain(void) {
static int stdout_last = -1, stdout_counter = 0;
static int outfile_last = -1, outfile_counter = 0;
while ((sz = read(fds[1], buf, sizeof(buf) - 1)) > 0) {
while ((sz = read(fd, buf, sizeof(buf) - 1)) > 0) {
if (fullbuffer)
continue;
buf[sz] = '\0';
@ -368,6 +369,8 @@ static void run(int i, char *f) {
fd_set set;
int runaway = 0;
int no_write = 0;
FILE *varlogmsg;
int fd_vlm = -1;
snprintf(buf, sizeof(buf), "%s ...", f);
printf("Running %-60s ", buf);
@ -378,6 +381,13 @@ static void run(int i, char *f) {
if (!(outfile = fopen(outpath, "w")))
perror("fopen");
/* Mix in kernel log message */
if (!(varlogmsg = fopen("/var/log/messages", "r")))
perror("fopen");
else if (((fd_vlm = fileno(varlogmsg)) >= 0) &&
fseek(varlogmsg, 0L, SEEK_END))
perror("fseek");
while ((w = wait4(pid, &st, WNOHANG, &usage)) == 0) {
if ((fullbuffer && fullbuffer++ == 8000) ||
(no_write > 180 * 2)) /* a 3 minute timeout */
@ -401,14 +411,18 @@ static void run(int i, char *f) {
no_write++;
continue;
}
drain();
drain(fds[1]);
no_write = 0;
if (fd_vlm >= 0)
drain(fd_vlm);
}
if (w != pid) {
perror("waitpid");
exit(206);
}
drain();
drain(fds[1]);
if (fd_vlm >= 0)
drain(fd_vlm);
if (die == 2)
interrupted(i, f);
else if (runaway) {
@ -423,6 +437,8 @@ static void run(int i, char *f) {
} else
failed(i, f, st);
if (varlogmsg)
fclose(varlogmsg);
if (outfile)
fclose(outfile);
if (fullbuffer)