]> git.saurik.com Git - redis.git/blobdiff - tests/support/util.tcl
Merge branch 'master' into integration
[redis.git] / tests / support / util.tcl
index 3f4a42592b73bbb63affe5aa4360fd48bc77bf2b..09a5804c17ea91ca32fbc8c38867987dbd3ea387 100644 (file)
@@ -25,10 +25,33 @@ proc zlistAlikeSort {a b} {
     string compare [lindex $a 1] [lindex $b 1]
 }
 
+# Return all log lines starting with the first line that contains a warning.
+# Generally, this will be an assertion error with a stack trace.
+proc warnings_from_file {filename} {
+    set lines [split [exec cat $filename] "\n"]
+    set matched 0
+    set result {}
+    foreach line $lines {
+        if {[regexp {^\[\d+\]\s+\d+\s+\w+\s+\d{2}:\d{2}:\d{2} \#} $line]} {
+            set matched 1
+        }
+        if {$matched} {
+            lappend result $line
+        }
+    }
+    join $result "\n"
+}
+
+# Return value for INFO property
+proc status {r property} {
+    if {[regexp "\r\n$property:(.*?)\r\n" [$r info] _ value]} {
+        set _ $value
+    }
+}
+
 proc waitForBgsave r {
     while 1 {
-        set i [$r info]
-        if {[string match {*bgsave_in_progress:1*} $i]} {
+        if {[status r bgsave_in_progress] eq 1} {
             puts -nonewline "\nWaiting for background save to finish... "
             flush stdout
             after 1000
@@ -40,8 +63,7 @@ proc waitForBgsave r {
 
 proc waitForBgrewriteaof r {
     while 1 {
-        set i [$r info]
-        if {[string match {*bgrewriteaof_in_progress:1*} $i]} {
+        if {[status r bgrewriteaof_in_progress] eq 1} {
             puts -nonewline "\nWaiting for background AOF rewrite to finish... "
             flush stdout
             after 1000
@@ -51,6 +73,16 @@ proc waitForBgrewriteaof r {
     }
 }
 
+proc wait_for_sync r {
+    while 1 {
+        if {[status r master_link_status] eq "down"} {
+            after 10
+        } else {
+            break
+        }
+    }
+}
+
 proc randomInt {max} {
     expr {int(rand()*$max)}
 }