Test: new functions to capture and analyze the replication stream.
This commit is contained in:
parent
4fa30b781e
commit
7572dc47da
@ -408,6 +408,59 @@ for {set j 0} {$j < [llength $argv]} {incr j} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
proc attach_to_replication_stream {} {
|
||||||
|
set s [socket [srv 0 "host"] [srv 0 "port"]]
|
||||||
|
fconfigure $s -translation binary
|
||||||
|
puts -nonewline $s "SYNC\r\n"
|
||||||
|
flush $s
|
||||||
|
|
||||||
|
# Get the count
|
||||||
|
set count [gets $s]
|
||||||
|
set prefix [string range $count 0 0]
|
||||||
|
if {$prefix ne {$}} {
|
||||||
|
error "attach_to_replication_stream error. Received '$count' as count."
|
||||||
|
}
|
||||||
|
set count [string range $count 1 end]
|
||||||
|
|
||||||
|
# Consume the bulk payload
|
||||||
|
while {$count} {
|
||||||
|
set buf [read $s $count]
|
||||||
|
set count [expr {$count-[string length $buf]}]
|
||||||
|
}
|
||||||
|
return $s
|
||||||
|
}
|
||||||
|
|
||||||
|
proc read_from_replication_stream {s} {
|
||||||
|
fconfigure $s -blocking 0
|
||||||
|
set attempt 0
|
||||||
|
while {[gets $s count] == -1} {
|
||||||
|
if {[incr attempt] == 10} return ""
|
||||||
|
after 100
|
||||||
|
}
|
||||||
|
fconfigure $s -blocking 1
|
||||||
|
set count [string range $count 1 end]
|
||||||
|
|
||||||
|
# Return a list of arguments for the command.
|
||||||
|
set res {}
|
||||||
|
for {set j 0} {$j < $count} {incr j} {
|
||||||
|
read $s 1
|
||||||
|
set arg [::redis::redis_bulk_read $s]
|
||||||
|
if {$j == 0} {set arg [string tolower $arg]}
|
||||||
|
lappend res $arg
|
||||||
|
}
|
||||||
|
return $res
|
||||||
|
}
|
||||||
|
|
||||||
|
proc assert_replication_stream {s patterns} {
|
||||||
|
for {set j 0} {$j < [llength $patterns]} {incr j} {
|
||||||
|
assert_match [lindex $patterns $j] [read_from_replication_stream $s]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
proc close_replication_stream {s} {
|
||||||
|
close $s
|
||||||
|
}
|
||||||
|
|
||||||
# With the parallel test running multiple Redis instances at the same time
|
# With the parallel test running multiple Redis instances at the same time
|
||||||
# we need a fast enough computer, otherwise a lot of tests may generate
|
# we need a fast enough computer, otherwise a lot of tests may generate
|
||||||
# false positives.
|
# false positives.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user