2011-12-12 14:34:00 +00:00
|
|
|
start_server {tags {"aofrw"}} {
|
2012-04-07 11:22:04 +00:00
|
|
|
|
|
|
|
test {Turning off AOF kills the background writing child if any} {
|
|
|
|
r config set appendonly yes
|
|
|
|
waitForBgrewriteaof r
|
|
|
|
r multi
|
|
|
|
r bgrewriteaof
|
|
|
|
r config set appendonly no
|
|
|
|
r exec
|
2012-05-02 09:40:46 +00:00
|
|
|
wait_for_condition 50 100 {
|
|
|
|
[string match {*Killing*AOF*child*} [exec tail -n5 < [srv 0 stdout]]]
|
|
|
|
} else {
|
|
|
|
fail "Can't find 'Killing AOF child' into recent logs"
|
|
|
|
}
|
|
|
|
}
|
2012-04-07 11:22:04 +00:00
|
|
|
|
2011-12-12 14:34:00 +00:00
|
|
|
foreach d {string int} {
|
|
|
|
foreach e {ziplist linkedlist} {
|
|
|
|
test "AOF rewrite of list with $e encoding, $d data" {
|
|
|
|
r flushall
|
|
|
|
if {$e eq {ziplist}} {set len 10} else {set len 1000}
|
|
|
|
for {set j 0} {$j < $len} {incr j} {
|
|
|
|
if {$d eq {string}} {
|
|
|
|
set data [randstring 0 16 alpha]
|
|
|
|
} else {
|
|
|
|
set data [randomInt 4000000000]
|
|
|
|
}
|
|
|
|
r lpush key $data
|
|
|
|
}
|
|
|
|
assert_equal [r object encoding key] $e
|
|
|
|
set d1 [r debug digest]
|
|
|
|
r bgrewriteaof
|
|
|
|
waitForBgrewriteaof r
|
|
|
|
r debug loadaof
|
|
|
|
set d2 [r debug digest]
|
|
|
|
if {$d1 ne $d2} {
|
|
|
|
error "assertion:$d1 is not equal to $d2"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach d {string int} {
|
|
|
|
foreach e {intset hashtable} {
|
|
|
|
test "AOF rewrite of set with $e encoding, $d data" {
|
|
|
|
r flushall
|
|
|
|
if {$e eq {intset}} {set len 10} else {set len 1000}
|
|
|
|
for {set j 0} {$j < $len} {incr j} {
|
|
|
|
if {$d eq {string}} {
|
|
|
|
set data [randstring 0 16 alpha]
|
|
|
|
} else {
|
|
|
|
set data [randomInt 4000000000]
|
|
|
|
}
|
|
|
|
r sadd key $data
|
|
|
|
}
|
|
|
|
if {$d ne {string}} {
|
|
|
|
assert_equal [r object encoding key] $e
|
|
|
|
}
|
|
|
|
set d1 [r debug digest]
|
|
|
|
r bgrewriteaof
|
|
|
|
waitForBgrewriteaof r
|
|
|
|
r debug loadaof
|
|
|
|
set d2 [r debug digest]
|
|
|
|
if {$d1 ne $d2} {
|
|
|
|
error "assertion:$d1 is not equal to $d2"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach d {string int} {
|
2012-01-03 06:14:10 +00:00
|
|
|
foreach e {ziplist hashtable} {
|
2011-12-12 14:34:00 +00:00
|
|
|
test "AOF rewrite of hash with $e encoding, $d data" {
|
|
|
|
r flushall
|
2012-01-03 06:14:10 +00:00
|
|
|
if {$e eq {ziplist}} {set len 10} else {set len 1000}
|
2011-12-12 14:34:00 +00:00
|
|
|
for {set j 0} {$j < $len} {incr j} {
|
|
|
|
if {$d eq {string}} {
|
|
|
|
set data [randstring 0 16 alpha]
|
|
|
|
} else {
|
|
|
|
set data [randomInt 4000000000]
|
|
|
|
}
|
|
|
|
r hset key $data $data
|
|
|
|
}
|
|
|
|
assert_equal [r object encoding key] $e
|
|
|
|
set d1 [r debug digest]
|
|
|
|
r bgrewriteaof
|
|
|
|
waitForBgrewriteaof r
|
|
|
|
r debug loadaof
|
|
|
|
set d2 [r debug digest]
|
|
|
|
if {$d1 ne $d2} {
|
|
|
|
error "assertion:$d1 is not equal to $d2"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach d {string int} {
|
|
|
|
foreach e {ziplist skiplist} {
|
|
|
|
test "AOF rewrite of zset with $e encoding, $d data" {
|
|
|
|
r flushall
|
|
|
|
if {$e eq {ziplist}} {set len 10} else {set len 1000}
|
|
|
|
for {set j 0} {$j < $len} {incr j} {
|
|
|
|
if {$d eq {string}} {
|
|
|
|
set data [randstring 0 16 alpha]
|
|
|
|
} else {
|
|
|
|
set data [randomInt 4000000000]
|
|
|
|
}
|
|
|
|
r zadd key [expr rand()] $data
|
|
|
|
}
|
|
|
|
assert_equal [r object encoding key] $e
|
|
|
|
set d1 [r debug digest]
|
|
|
|
r bgrewriteaof
|
|
|
|
waitForBgrewriteaof r
|
|
|
|
r debug loadaof
|
|
|
|
set d2 [r debug digest]
|
|
|
|
if {$d1 ne $d2} {
|
|
|
|
error "assertion:$d1 is not equal to $d2"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2012-04-06 21:52:53 +00:00
|
|
|
|
|
|
|
test {BGREWRITEAOF is delayed if BGSAVE is in progress} {
|
|
|
|
r multi
|
|
|
|
r bgsave
|
|
|
|
r bgrewriteaof
|
|
|
|
r info persistence
|
|
|
|
set res [r exec]
|
|
|
|
assert_match {*scheduled*} [lindex $res 1]
|
|
|
|
assert_match {*bgrewriteaof_scheduled:1*} [lindex $res 2]
|
|
|
|
while {[string match {*bgrewriteaof_scheduled:1*} [r info persistence]]} {
|
|
|
|
after 100
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
test {BGREWRITEAOF is refused if already in progress} {
|
|
|
|
catch {
|
|
|
|
r multi
|
|
|
|
r bgrewriteaof
|
|
|
|
r bgrewriteaof
|
|
|
|
r exec
|
|
|
|
} e
|
|
|
|
assert_match {*ERR*already*} $e
|
|
|
|
while {[string match {*bgrewriteaof_scheduled:1*} [r info persistence]]} {
|
|
|
|
after 100
|
|
|
|
}
|
|
|
|
}
|
2011-12-12 14:34:00 +00:00
|
|
|
}
|