Sanitize dump payload: improve tests of ziplist and stream encodings
- improve stream rdb encoding test to include more types of stream metadata - add test to cover various ziplist encoding entries (although it does look like the stress test above it is able to find some too - add another test for ziplist encoding for hash with full sanitization - add similar ziplist encoding tests for list
This commit is contained in:
parent
ca1c182567
commit
01c13bddea
@ -49,13 +49,22 @@ start_server [list overrides [list "dir" $server_path] keep_persistence true] {
|
||||
}
|
||||
}
|
||||
r xgroup create stream mygroup 0
|
||||
r xreadgroup GROUP mygroup Alice COUNT 1 STREAMS stream >
|
||||
set records [r xreadgroup GROUP mygroup Alice COUNT 2 STREAMS stream >]
|
||||
r xack stream mygroup [lindex [lindex [lindex [lindex $records 0] 1] 0] 0]
|
||||
set digest [r debug digest]
|
||||
r config set sanitize-dump-payload no
|
||||
r debug reload
|
||||
set newdigest [r debug digest]
|
||||
assert {$digest eq $newdigest}
|
||||
r del stream
|
||||
}
|
||||
test {Test RDB stream encoding - sanitize dump} {
|
||||
r config set sanitize-dump-payload yes
|
||||
r debug reload
|
||||
set newdigest [r debug digest]
|
||||
assert {$digest eq $newdigest}
|
||||
}
|
||||
# delete the stream, maybe valgrind will find something
|
||||
r del stream
|
||||
}
|
||||
|
||||
# Helper function to start a server and kill it, just to check the error
|
||||
|
@ -540,4 +540,55 @@ start_server {tags {"hash"}} {
|
||||
assert {[r hincrbyfloat myhash float -0.1] eq {1.9}}
|
||||
}
|
||||
}
|
||||
|
||||
test {Hash ziplist of various encodings} {
|
||||
r del k
|
||||
r config set hash-max-ziplist-entries 1000000000
|
||||
r config set hash-max-ziplist-value 1000000000
|
||||
r hset k ZIP_INT_8B 127
|
||||
r hset k ZIP_INT_16B 32767
|
||||
r hset k ZIP_INT_32B 2147483647
|
||||
r hset k ZIP_INT_64B 9223372036854775808
|
||||
r hset k ZIP_INT_IMM_MIN 0
|
||||
r hset k ZIP_INT_IMM_MAX 12
|
||||
r hset k ZIP_STR_06B [string repeat x 31]
|
||||
r hset k ZIP_STR_14B [string repeat x 8191]
|
||||
r hset k ZIP_STR_32B [string repeat x 65535]
|
||||
set k [r hgetall k]
|
||||
set dump [r dump k]
|
||||
|
||||
# will be converted to dict at RESTORE
|
||||
r config set hash-max-ziplist-entries 2
|
||||
r config set sanitize-dump-payload no
|
||||
r restore kk 0 $dump
|
||||
set kk [r hgetall kk]
|
||||
|
||||
# make sure the values are right
|
||||
assert_equal [lsort $k] [lsort $kk]
|
||||
assert_equal [dict get $k ZIP_STR_06B] [string repeat x 31]
|
||||
set k [dict remove $k ZIP_STR_06B]
|
||||
assert_equal [dict get $k ZIP_STR_14B] [string repeat x 8191]
|
||||
set k [dict remove $k ZIP_STR_14B]
|
||||
assert_equal [dict get $k ZIP_STR_32B] [string repeat x 65535]
|
||||
set k [dict remove $k ZIP_STR_32B]
|
||||
set _ $k
|
||||
} {ZIP_INT_8B 127 ZIP_INT_16B 32767 ZIP_INT_32B 2147483647 ZIP_INT_64B 9223372036854775808 ZIP_INT_IMM_MIN 0 ZIP_INT_IMM_MAX 12}
|
||||
|
||||
test {Hash ziplist of various encodings - sanitize dump} {
|
||||
r config set sanitize-dump-payload yes
|
||||
r restore kk 0 $dump replace
|
||||
set k [r hgetall k]
|
||||
set kk [r hgetall kk]
|
||||
|
||||
# make sure the values are right
|
||||
assert_equal [lsort $k] [lsort $kk]
|
||||
assert_equal [dict get $k ZIP_STR_06B] [string repeat x 31]
|
||||
set k [dict remove $k ZIP_STR_06B]
|
||||
assert_equal [dict get $k ZIP_STR_14B] [string repeat x 8191]
|
||||
set k [dict remove $k ZIP_STR_14B]
|
||||
assert_equal [dict get $k ZIP_STR_32B] [string repeat x 65535]
|
||||
set k [dict remove $k ZIP_STR_32B]
|
||||
set _ $k
|
||||
} {ZIP_INT_8B 127 ZIP_INT_16B 32767 ZIP_INT_32B 2147483647 ZIP_INT_64B 9223372036854775808 ZIP_INT_IMM_MIN 0 ZIP_INT_IMM_MAX 12}
|
||||
|
||||
}
|
||||
|
@ -1089,4 +1089,52 @@ start_server {
|
||||
r lpush l foo
|
||||
assert_equal {l foo} [$rd read]
|
||||
} {}
|
||||
|
||||
test {List ziplist of various encodings} {
|
||||
r del k
|
||||
r lpush k 127 ;# ZIP_INT_8B
|
||||
r lpush k 32767 ;# ZIP_INT_16B
|
||||
r lpush k 2147483647 ;# ZIP_INT_32B
|
||||
r lpush k 9223372036854775808 ;# ZIP_INT_64B
|
||||
r lpush k 0 ;# ZIP_INT_IMM_MIN
|
||||
r lpush k 12 ;# ZIP_INT_IMM_MAX
|
||||
r lpush k [string repeat x 31] ;# ZIP_STR_06B
|
||||
r lpush k [string repeat x 8191] ;# ZIP_STR_14B
|
||||
r lpush k [string repeat x 65535] ;# ZIP_STR_32B
|
||||
set k [r lrange k 0 -1]
|
||||
set dump [r dump k]
|
||||
|
||||
r config set sanitize-dump-payload no
|
||||
r restore kk 0 $dump
|
||||
set kk [r lrange kk 0 -1]
|
||||
|
||||
# try some forward and backward searches to make sure all encodings
|
||||
# can be traversed
|
||||
assert_equal [r lindex kk 5] {9223372036854775808}
|
||||
assert_equal [r lindex kk -5] {0}
|
||||
assert_equal [r lpos kk foo rank 1] {}
|
||||
assert_equal [r lpos kk foo rank -1] {}
|
||||
|
||||
# make sure the values are right
|
||||
assert_equal $k $kk
|
||||
assert_equal [lpop k] [string repeat x 65535]
|
||||
assert_equal [lpop k] [string repeat x 8191]
|
||||
assert_equal [lpop k] [string repeat x 31]
|
||||
set _ $k
|
||||
} {12 0 9223372036854775808 2147483647 32767 127}
|
||||
|
||||
test {List ziplist of various encodings - sanitize dump} {
|
||||
r config set sanitize-dump-payload yes
|
||||
r restore kk 0 $dump replace
|
||||
set k [r lrange k 0 -1]
|
||||
set kk [r lrange kk 0 -1]
|
||||
|
||||
# make sure the values are right
|
||||
assert_equal $k $kk
|
||||
assert_equal [lpop k] [string repeat x 65535]
|
||||
assert_equal [lpop k] [string repeat x 8191]
|
||||
assert_equal [lpop k] [string repeat x 31]
|
||||
set _ $k
|
||||
} {12 0 9223372036854775808 2147483647 32767 127}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user