]> git.saurik.com Git - redis.git/commitdiff
EVAL replication test: less false positives.
authorantirez <antirez@gmail.com>
Sat, 2 Jun 2012 21:29:57 +0000 (23:29 +0200)
committerantirez <antirez@gmail.com>
Sat, 2 Jun 2012 21:29:57 +0000 (23:29 +0200)
wait_for_condition is now used instead of the usual "after 1000" (that
is the way to sleep in Tcl). This should avoid to find the replica in
a state where it is loading the RDB in memory, returning -LOADING error.

This test used to fail when running the test over valgrind, due to the
added latencies.

tests/support/util.tcl
tests/unit/scripting.tcl

index a2a9f85133ea4dbe058dee73ad6c78bd91b16ed4..96af279d84118cbcbe9ea0855ceb9d14c682b914 100644 (file)
@@ -83,7 +83,7 @@ proc waitForBgrewriteaof r {
 
 proc wait_for_sync r {
     while 1 {
 
 proc wait_for_sync r {
     while 1 {
-        if {[status r master_link_status] eq "down"} {
+        if {[status $r master_link_status] eq "down"} {
             after 10
         } else {
             break
             after 10
         } else {
             break
index daf0c0f26e78cff9359c8810abad9a291b3ccfc7..ec6e5c2a6be5fface52a5e69d75164e3d1d2adb0 100644 (file)
@@ -319,9 +319,13 @@ start_server {tags {"scripting repl"}} {
 
         test {Connect a slave to the main instance} {
             r -1 slaveof [srv 0 host] [srv 0 port]
 
         test {Connect a slave to the main instance} {
             r -1 slaveof [srv 0 host] [srv 0 port]
-            after 1000
-            s -1 role
-        } {slave}
+            wait_for_condition 50 100 {
+                [s -1 role] eq {slave} &&
+                [string match {*master_link_status:up*} [r -1 info replication]]
+            } else {
+                fail "Can't turn the instance into a slave"
+            }
+        }
 
         test {Now use EVALSHA against the master} {
             r evalsha ae3477e27be955de7e1bc9adfdca626b478d3cb2 0
 
         test {Now use EVALSHA against the master} {
             r evalsha ae3477e27be955de7e1bc9adfdca626b478d3cb2 0