Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
b78fd80f
Commit
b78fd80f
authored
May 15, 2010
by
antirez
Browse files
Merge branch 'integration' of
git://github.com/pietern/redis
parents
3863d8ea
85ecc65e
Changes
4
Show whitespace changes
Inline
Side-by-side
tests/integration/replication.tcl
0 → 100644
View file @
b78fd80f
start_server default.conf
{}
{
r set mykey foo
start_server default.conf
{}
{
test
{
Second server should have role master at first
}
{
s role
}
{
master
}
test
{
SLAVEOF should start with link status
"down"
}
{
r slaveof
[
srv -1 host
]
[
srv -1 port
]
s master_link_status
}
{
down
}
test
{
The role should immediately be changed to
"slave"
}
{
s role
}
{
slave
}
wait_for_sync r
test
{
Sync should have transferred keys from master
}
{
r get mykey
}
{
foo
}
test
{
The link status should be up
}
{
s master_link_status
}
{
up
}
test
{
SET on the master should immediately propagate
}
{
r -1 set mykey bar
r 0 get mykey
}
{
bar
}
}
}
tests/support/server.tcl
View file @
b78fd80f
...
@@ -103,23 +103,25 @@ proc start_server {filename overrides {code undefined}} {
...
@@ -103,23 +103,25 @@ proc start_server {filename overrides {code undefined}} {
}
}
# setup config dict
# setup config dict
dict set ret
"config"
$config_file
dict set srv
"config"
$config_file
dict set ret
"pid"
$pid
dict set srv
"pid"
$pid
dict set ret
"stdout"
$stdout
dict set srv
"host"
$host
dict set ret
"stderr"
$stderr
dict set srv
"port"
$port
dict set ret
"client"
$client
dict set srv
"stdout"
$stdout
dict set srv
"stderr"
$stderr
dict set srv
"client"
$client
if
{
$code
ne
"undefined"
}
{
if
{
$code
ne
"undefined"
}
{
# append the
client
to the
client
stack
# append the
server
to the stack
lappend ::
clients $client
lappend ::
servers $srv
# execute provided block
# execute provided block
catch
{
uplevel 1 $code
}
err
catch
{
uplevel 1 $code
}
err
# pop the
client
object
# pop the
server
object
set ::
client
s
[
lrange $::
client
s 0 end-1
]
set ::
server
s
[
lrange $::
server
s 0 end-1
]
kill_server $
ret
kill_server $
srv
if
{[
string length $err
]
> 0
}
{
if
{[
string length $err
]
> 0
}
{
puts
"Error executing the suite, aborting..."
puts
"Error executing the suite, aborting..."
...
@@ -127,6 +129,6 @@ proc start_server {filename overrides {code undefined}} {
...
@@ -127,6 +129,6 @@ proc start_server {filename overrides {code undefined}} {
exit 1
exit 1
}
}
}
else
{
}
else
{
set _ $
ret
set _ $
srv
}
}
}
}
tests/support/util.tcl
View file @
b78fd80f
...
@@ -25,10 +25,16 @@ proc zlistAlikeSort {a b} {
...
@@ -25,10 +25,16 @@ proc zlistAlikeSort {a b} {
string compare
[
lindex $a 1
]
[
lindex $b 1
]
string compare
[
lindex $a 1
]
[
lindex $b 1
]
}
}
# Return value for INFO property
proc status
{
r property
}
{
if
{[
regexp
"
\r\n
$property:
(.*?)
\r\n
"
[
$r
info
]
_ value
]}
{
set _ $value
}
}
proc waitForBgsave r
{
proc waitForBgsave r
{
while 1
{
while 1
{
set i
[
$r
info
]
if
{[
status r bgsave_in_progress
]
eq 1
}
{
if
{[
string match
{
*bgsave_in_progress:1*
}
$i
]}
{
puts -nonewline
"
\n
Waiting for background save to finish... "
puts -nonewline
"
\n
Waiting for background save to finish... "
flush stdout
flush stdout
after 1000
after 1000
...
@@ -40,8 +46,7 @@ proc waitForBgsave r {
...
@@ -40,8 +46,7 @@ proc waitForBgsave r {
proc waitForBgrewriteaof r
{
proc waitForBgrewriteaof r
{
while 1
{
while 1
{
set i
[
$r
info
]
if
{[
status r bgrewriteaof_in_progress
]
eq 1
}
{
if
{[
string match
{
*bgrewriteaof_in_progress:1*
}
$i
]}
{
puts -nonewline
"
\n
Waiting for background AOF rewrite to finish... "
puts -nonewline
"
\n
Waiting for background AOF rewrite to finish... "
flush stdout
flush stdout
after 1000
after 1000
...
@@ -51,6 +56,16 @@ proc waitForBgrewriteaof r {
...
@@ -51,6 +56,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
}
{
proc randomInt
{
max
}
{
expr
{
int
(
rand
()
*$max
)}
expr
{
int
(
rand
()
*$max
)}
}
}
...
...
tests/test_helper.tcl
View file @
b78fd80f
...
@@ -18,12 +18,35 @@ proc execute_tests name {
...
@@ -18,12 +18,35 @@ proc execute_tests name {
source
"tests/
$name.tcl
"
source
"tests/
$name.tcl
"
}
}
# setup a list to hold a stack of clients. the proc
"r"
provides easy
# Setup a list to hold a stack of server configs. When calls to start_server
# access to the client at the top of the stack
# are nested, use
"srv 0 pid"
to get the pid of the inner server. To access
set ::clients
{}
# outer servers, use
"srv -1 pid"
etcetera.
set ::servers
{}
proc srv
{
level property
}
{
set srv
[
lindex $::servers end+$level
]
dict get $srv $property
}
# Provide easy access to the client for the inner server. It's possible to
# prepend the argument list with a negative level to access clients for
# servers running in outer blocks.
proc r
{
args
}
{
proc r
{
args
}
{
set client
[
lindex $::clients end
]
set level 0
$client
{*}
$args
if
{[
string is integer
[
lindex $args 0
]]}
{
set level
[
lindex $args 0
]
set args
[
lrange $args 1 end
]
}
[
srv $level
"client"
]
{*}
$args
}
# Provide easy access to INFO properties. Same semantic as
"proc r"
.
proc s
{
args
}
{
set level 0
if
{[
string is integer
[
lindex $args 0
]]}
{
set level
[
lindex $args 0
]
set args
[
lrange $args 1 end
]
}
status
[
srv $level
"client"
]
[
lindex $args 0
]
}
}
proc main
{}
{
proc main
{}
{
...
@@ -37,6 +60,7 @@ proc main {} {
...
@@ -37,6 +60,7 @@ proc main {} {
execute_tests
"unit/sort"
execute_tests
"unit/sort"
execute_tests
"unit/expire"
execute_tests
"unit/expire"
execute_tests
"unit/other"
execute_tests
"unit/other"
execute_tests
"integration/replication"
puts
"
\n
[
expr $::passed+$::failed
]
tests,
$::passed
passed,
$::failed
failed"
puts
"
\n
[
expr $::passed+$::failed
]
tests,
$::passed
passed,
$::failed
failed"
if
{
$::failed
> 0
}
{
if
{
$::failed
> 0
}
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment