123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- # The tests of this file aim to get coverage on all the "dismiss" methods
- # that dismiss all data-types memory in the fork child. like client query
- # buffer, client output buffer and replication backlog.
- # Actually, we may not have many asserts in the test, since we just check for
- # crashes and the dump file inconsistencies.
- start_server {tags {"dismiss external:skip"}} {
- # In other tests, although we test child process dumping RDB file, but
- # memory allocations of key/values are usually small, they couldn't cover
- # the "dismiss" object methods, in this test, we create big size key/values
- # to satisfy the conditions for release memory pages, especially, we assume
- # the page size of OS is 4KB in some cases.
- test {dismiss all data types memory} {
- set bigstr [string repeat A 8192]
- set 64bytes [string repeat A 64]
- # string
- populate 100 bigstring 8192
- # list
- r lpush biglist1 $bigstr ; # uncompressed ziplist node
- r config set list-compress-depth 1 ; # compressed ziplist nodes
- for {set i 0} {$i < 16} {incr i} {
- r lpush biglist2 $bigstr
- }
- # set
- r sadd bigset1 $bigstr ; # hash encoding
- set biginteger [string repeat 1 19]
- for {set i 0} {$i < 512} {incr i} {
- r sadd bigset2 $biginteger ; # intset encoding
- }
- # zset
- r zadd bigzset1 1.0 $bigstr ; # skiplist encoding
- for {set i 0} {$i < 128} {incr i} {
- r zadd bigzset2 1.0 $64bytes ; # ziplist encoding
- }
- # hash
- r hset bighash1 field1 $bigstr ; # hash encoding
- for {set i 0} {$i < 128} {incr i} {
- r hset bighash2 $i $64bytes ; # ziplist encoding
- }
- # stream
- r xadd bigstream * entry1 $bigstr entry2 $bigstr
- set digest [r debug digest]
- r config set aof-use-rdb-preamble no
- r bgrewriteaof
- waitForBgrewriteaof r
- r debug loadaof
- set newdigest [r debug digest]
- assert {$digest eq $newdigest}
- }
- test {dismiss client output buffer} {
- # Big output buffer
- set item [string repeat "x" 100000]
- for {set i 0} {$i < 100} {incr i} {
- r lpush mylist $item
- }
- set rd [redis_deferring_client]
- $rd lrange mylist 0 -1
- $rd flush
- after 100
- r bgsave
- waitForBgsave r
- assert_equal $item [r lpop mylist]
- }
- test {dismiss client query buffer} {
- # Big pending query buffer
- set bigstr [string repeat A 8192]
- set rd [redis_deferring_client]
- $rd write "*2\r\n\$8192\r\n"
- $rd write $bigstr\r\n
- $rd flush
- after 100
- r bgsave
- waitForBgsave r
- }
- test {dismiss replication backlog} {
- set master [srv 0 client]
- start_server {} {
- r slaveof [srv -1 host] [srv -1 port]
- wait_for_sync r
- set bigstr [string repeat A 8192]
- for {set i 0} {$i < 20} {incr i} {
- $master set $i $bigstr
- }
- $master bgsave
- waitForBgsave $master
- }
- }
- }
|