From 35eb8ec6f3f6a2deab49ff70b0e9a8587adfd6de Mon Sep 17 00:00:00 2001 From: Oran Agra Date: Mon, 26 Oct 2020 11:55:24 +0200 Subject: [PATCH] Attempt to fix sporadic test failures due to wait_for_log_messages (#7955) The tests sometimes fail to find a log message. Recently i added a print that shows the log files that are searched and it shows that the message was in deed there. The only reason i can't think of for this seach to fail, is we we happened to read an incomplete line, which didn't match our pattern and then on the next iteration we would continue reading from the line after it. The fix is to always re-evaluation the previous line. --- tests/support/util.tcl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/support/util.tcl b/tests/support/util.tcl index b4c1a3841..3268bc974 100644 --- a/tests/support/util.tcl +++ b/tests/support/util.tcl @@ -128,6 +128,8 @@ proc wait_for_log_messages {srv_idx patterns from_line maxtries delay} { set next_line [expr $from_line + 1] ;# searching form the line after set stdout [srv $srv_idx stdout] while {$retry} { + # re-read the last line (unless it's before to our first), last time we read it, it might have been incomplete + set next_line [expr $next_line - 1 > $from_line + 1 ? $next_line - 1 : $from_line + 1] set result [exec tail -n +$next_line < $stdout] set result [split $result "\n"] foreach line $result {