]> git.saurik.com Git - redis.git/commitdiff
better random dataset creation function in test. master-slave replication test now...
authorantirez <antirez@gmail.com>
Wed, 28 Jul 2010 12:08:46 +0000 (14:08 +0200)
committerantirez <antirez@gmail.com>
Wed, 28 Jul 2010 12:08:46 +0000 (14:08 +0200)
tests/integration/replication.tcl
tests/support/util.tcl

index 39d77c8f9c07e90d8bf3261325ab7955e5c142ef..4b2588251ebd93c8f743ec1ac549f8ba0f0eb530 100644 (file)
@@ -8,6 +8,19 @@ start_server {tags {"repl"}} {
 
         test {MASTER and SLAVE dataset should be identical after complex ops} {
             createComplexDataset r 10000
+            after 500
+            if {[r debug digest] ne [r -1 debug digest]} {
+                set csv1 [csvdump r]
+                set csv2 [csvdump {r -1}]
+                set fd [open /tmp/repldump1.txt w]
+                puts -nonewline $fd $csv1
+                close $fd
+                set fd [open /tmp/repldump2.txt w]
+                puts -nonewline $fd $csv2
+                close $fd
+                puts "Master - Slave inconsistency"
+                puts "Run diff -u against /tmp/repldump*.txt for more info"
+            }
             assert_equal [r debug digest] [r -1 debug digest]
         }
     }
index 26cf1dc177f24b0b3ca057697bbde8f1c874f8b4..b9c89aa892021b939792eeefaed30e5cf3aff38f 100644 (file)
@@ -44,7 +44,7 @@ proc warnings_from_file {filename} {
 
 # Return value for INFO property
 proc status {r property} {
-    if {[regexp "\r\n$property:(.*?)\r\n" [$r info] _ value]} {
+    if {[regexp "\r\n$property:(.*?)\r\n" [{*}$r info] _ value]} {
         set _ $value
     }
 }
@@ -129,11 +129,11 @@ proc randomKey {} {
 
 proc findKeyWithType {r type} {
     for {set j 0} {$j < 20} {incr j} {
-        set k [$r randomkey]
+        set k [{*}$r randomkey]
         if {$k eq {}} {
             return {}
         }
-        if {[$r type $k] eq $type} {
+        if {[{*}$r type $k] eq $type} {
             return $k
         }
     }
@@ -159,23 +159,23 @@ proc createComplexDataset {r ops} {
         } {
             randpath {set d +inf} {set d -inf}
         }
-        set t [$r type $k]
+        set t [{*}$r type $k]
 
         if {$t eq {none}} {
             randpath {
-                $r set $k $v
+                {*}$r set $k $v
             } {
-                $r lpush $k $v
+                {*}$r lpush $k $v
             } {
-                $r sadd $k $v
+                {*}$r sadd $k $v
             } {
-                $r zadd $k $d $v
+                {*}$r zadd $k $d $v
             } {
-                $r hset $k $f $v
+                {*}$r hset $k $f $v
             } {
-                $r del $k
+                {*}$r del $k
             }
-            set t [$r type $k]
+            set t [{*}$r type $k]
         }
 
         switch $t {
@@ -183,35 +183,45 @@ proc createComplexDataset {r ops} {
                 # Nothing to do
             }
             {list} {
-                randpath {$r lpush $k $v} \
-                        {$r rpush $k $v} \
-                        {$r lrem $k 0 $v} \
-                        {$r rpop $k} \
-                        {$r lpop $k}
+                randpath {{*}$r lpush $k $v} \
+                        {{*}$r rpush $k $v} \
+                        {{*}$r lrem $k 0 $v} \
+                        {{*}$r rpop $k} \
+                        {{*}$r lpop $k}
             }
             {set} {
-                randpath {$r sadd $k $v} \
-                        {$r srem $k $v} \
+                randpath {{*}$r sadd $k $v} \
+                        {{*}$r srem $k $v} \
                         {
                             set otherset [findKeyWithType r set]
                             if {$otherset ne {}} {
-                                $r sunionstore $k2 $k $otherset
+                                randpath {
+                                    {*}$r sunionstore $k2 $k $otherset
+                                } {
+                                    {*}$r sinterstore $k2 $k $otherset
+                                } {
+                                    {*}$r sdiffstore $k2 $k $otherset
+                                }
                             }
                         }
             }
             {zset} {
-                randpath {$r zadd $k $d $v} \
-                        {$r zrem $k $v} \
+                randpath {{*}$r zadd $k $d $v} \
+                        {{*}$r zrem $k $v} \
                         {
                             set otherzset [findKeyWithType r zset]
                             if {$otherzset ne {}} {
-                                $r zunionstore $k2 2 $k $otherzset
+                                randpath {
+                                    {*}$r zunionstore $k2 2 $k $otherzset
+                                } {
+                                    {*}$r zinterstore $k2 2 $k $otherzset
+                                }
                             }
                         }
             }
             {hash} {
-                randpath {$r hset $k $f $v} \
-                        {$r hdel $k $f}
+                randpath {{*}$r hset $k $f $v} \
+                        {{*}$r hdel $k $f}
             }
         }
     }
@@ -227,33 +237,33 @@ proc formatCommand {args} {
 
 proc csvdump r {
     set o {}
-    foreach k [lsort [$r keys *]] {
-        set type [$r type $k]
+    foreach k [lsort [{*}$r keys *]] {
+        set type [{*}$r type $k]
         append o [csvstring $k] , [csvstring $type] ,
         switch $type {
             string {
-                append o [csvstring [$r get $k]] "\n"
+                append o [csvstring [{*}$r get $k]] "\n"
             }
             list {
-                foreach e [$r lrange $k 0 -1] {
+                foreach e [{*}$r lrange $k 0 -1] {
                     append o [csvstring $e] ,
                 }
                 append o "\n"
             }
             set {
-                foreach e [lsort [$r smembers $k]] {
+                foreach e [lsort [{*}$r smembers $k]] {
                     append o [csvstring $e] ,
                 }
                 append o "\n"
             }
             zset {
-                foreach e [$r zrange $k 0 -1 withscores] {
+                foreach e [{*}$r zrange $k 0 -1 withscores] {
                     append o [csvstring $e] ,
                 }
                 append o "\n"
             }
             hash {
-                set fields [$r hgetall $k]
+                set fields [{*}$r hgetall $k]
                 set newfields {}
                 foreach {k v} $fields {
                     lappend newfields [list $k $v]