testing: Print command output if test fails
This is quite helpful to debug why a pattern didn't match. As it could produce quite a lot of output if something is not found in a log file, the complete output is only printed in verbose mode, otherwise, `head` is used to print the first 10 lines of output. We only get stdout from SSH, so the stderr redirection is only really for errors ssh itself produces.
This commit is contained in:
parent
60719e39bf
commit
5cfd7311d0
|
@ -444,20 +444,22 @@ do
|
|||
next
|
||||
}
|
||||
printf("cmd_err=\044(tempfile -p test -s err); ")
|
||||
printf("cmd_out=\044(tempfile -p test -s out); ")
|
||||
if (command == "tcpdump")
|
||||
{
|
||||
printf("if [ \044TDUP_%s == \"true\" ]; then stop_tcpdump %s; fi; \n", host, host)
|
||||
printf("cmd_out=\044(ssh \044SSHCONF root@\044ipv4_%s cat /tmp/tcpdump.log | grep \"%s\"); ", host, pattern)
|
||||
printf("ssh \044SSHCONF root@\044ipv4_%s cat /tmp/tcpdump.log > \044cmd_out; ", host)
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("cmd_out=\044(ssh \044SSHCONF root@\044ipv4_%s %s 2>\044cmd_err | grep \"%s\"); ", host, command, pattern)
|
||||
printf("ssh \044SSHCONF root@\044ipv4_%s %s >\044cmd_out 2>\044cmd_err; ", host, command)
|
||||
}
|
||||
printf("cmd_res=\044(cat \044cmd_out | grep \"%s\"); ", pattern)
|
||||
printf("cmd_exit=\044?; ")
|
||||
printf("cmd_fail=0; ")
|
||||
if (hit ~ /^[0-9]+$/)
|
||||
{
|
||||
printf("if [ \044(echo \"\044cmd_out\" | wc -l) -ne %d ] ", hit)
|
||||
printf("if [ \044(echo \"\044cmd_res\" | wc -l) -ne %d ] ", hit)
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -475,9 +477,14 @@ do
|
|||
{
|
||||
printf("echo \"$(print_time)%s# %s | grep \047%s\047 [%s]\"; ", host, command, pattern, hit)
|
||||
}
|
||||
printf("if [ -n \"\044cmd_out\" ]; then echo \"\044cmd_out\"; fi; \n")
|
||||
printf("cat \044cmd_err; rm -f -- \044cmd_err; \n")
|
||||
printf("if [ \044cmd_fail -ne 0 ]; then echo \"~~~~~~~~~~~~~~~~~~~~\"; fi; \n")
|
||||
printf("if [ -n \"\044cmd_res\" ]; then echo \"\044cmd_res\"; fi; \n")
|
||||
printf("cat \044cmd_err; \n")
|
||||
printf("if [ \044cmd_fail -ne 0 ]; then \n")
|
||||
printf("if [ -s \044cmd_out ]; then echo \"~~ output ~~~~~~~~~~\"; \n")
|
||||
printf("if [ \"\044verbose\" == \"YES\" ]; then cat \044cmd_out;\n")
|
||||
printf("else cat \044cmd_out | head; fi; fi; \n")
|
||||
printf("echo \"~~~~~~~~~~~~~~~~~~~~\"; fi; \n")
|
||||
printf("rm -f -- \044cmd_out \044cmd_err; \n")
|
||||
printf("echo; ")
|
||||
}' $TESTDIR/evaltest.dat` >> $CONSOLE_LOG 2>&1
|
||||
|
||||
|
|
Loading…
Reference in New Issue