Andreas Wacknitz
2023-11-03 3897107564a32e7da8f76744d12199133d7648a2
redis: update to 6.2.14

2 files modified
2331 ■■■■ changed files
components/database/redis/Makefile 4 ●●●● patch | view | raw | blame | history
components/database/redis/test/results-all.master 2327 ●●●● patch | view | raw | blame | history
components/database/redis/Makefile
@@ -19,13 +19,13 @@
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME= redis
COMPONENT_VERSION= 6.2.13
COMPONENT_VERSION= 6.2.14
COMPONENT_SUMMARY= Redis in-memory data structure store
COMPONENT_PROJECT_URL= https://redis.io/
COMPONENT_SRC=        $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=    $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_URL=  https://download.redis.io/releases/$(COMPONENT_ARCHIVE)
COMPONENT_ARCHIVE_HASH= sha256:89ff27c80d420456a721ccfb3beb7cc628d883c53059803513749e13214a23d1
COMPONENT_ARCHIVE_HASH= sha256:34e74856cbd66fdb3a684fb349d93961d8c7aa668b06f81fd93ff267d09bc277
COMPONENT_FMRI= database/redis
COMPONENT_CLASSIFICATION= System/Databases
COMPONENT_LICENSE= BSD
components/database/redis/test/results-all.master
@@ -1,15 +1,30 @@
rm -f commandfilter.so basics.so testrdb.so fork.so infotest.so propagate.so misc.so hooks.so blockonkeys.so blockonbackground.so scan.so datatype.so auth.so keyspace_events.so blockedclient.so getkeys.so test_lazyfree.so timer.so defragtest.so hash.so zset.so stream.so commandfilter.xo basics.xo testrdb.xo fork.xo infotest.xo propagate.xo misc.xo hooks.xo blockonkeys.xo blockonbackground.xo scan.xo datatype.xo auth.xo keyspace_events.xo blockedclient.xo getkeys.xo test_lazyfree.xo timer.xo defragtest.xo hash.xo zset.xo stream.xo
sha1.c:144:13: warning: 'SHA1Transform' reading 64 bytes from a region of size 0 [-Wstringop-overread]
sha1.c:144:13: warning: 'SHA1Transform' reading 64 bytes from a region of size 0 [-Wstringop-overread]
[ok]: DUMP / RESTORE are able to serialize / unserialize a simple key
[ok]: AUTH fails if there is no password configured server side
[ok]: RESTORE can set an arbitrary expire to the materialized key
[ok]: RESTORE can set an expire that overflows a 32 bit integer
[ok]: RESTORE can set an absolute expire
[ok]: DEL against a single item
[ok]: RESTORE with ABSTTL in the past
[ok]: RESTORE can set LRU
[ok]: SET and GET an item
[ok]: Vararg DEL
[ok]: SET and GET an empty item
[ok]: RESTORE can set LFU
[ok]: KEYS with pattern
[ok]: KEYS to get all keys
[ok]: SET and GET an item
[ok]: RESTORE returns an error of the key already exists
[ok]: RESTORE returns an error of the key already exists
[ok]: DBSIZE
[ok]: SET and GET an empty item
[ok]: INCR against non existing key
[ok]: INCR against key created by incr itself
[ok]: DEL all keys
[ok]: RESTORE can overwrite an existing key with REPLACE
[ok]: INCR against non existing key
[ok]: RESTORE can detect a syntax error for unrecongized options
[ok]: RESTORE can detect a syntax error for unrecongized options
[ok]: INCR against key created by incr itself
[ok]: DUMP of non existing key returns nil
[ok]: INCR against key originally set with SET
[ok]: INCR over 32bit value
[ok]: INCRBY over 32bit value with over 32bit increment
@@ -19,151 +34,87 @@
[ok]: INCR fails against a key holding a list
[ok]: DECRBY over 32bit value with over 32bit increment, negative res
[ok]: INCR uses shared objects in the 0-9999 range
[ok]: Check encoding - ziplist
[ok]: INCR can modify objects in-place
[ok]: ZSET basic ZADD and score update - ziplist
[ok]: INCRBYFLOAT against non existing key
[ok]: ZSET element can't be set to NaN with ZADD - ziplist
[ok]: INCRBYFLOAT against key originally set with SET
[ok]: ZSET element can't be set to NaN with ZINCRBY - ziplist
[ok]: INCRBYFLOAT over 32bit value
[ok]: INCRBYFLOAT over 32bit value with over 32bit increment
[ok]: ZADD with options syntax error with incomplete pair - ziplist
[ok]: ZADD with options syntax error with incomplete pair - ziplist
[ok]: INCRBYFLOAT fails against key with spaces (left)
[ok]: ZADD XX option without key - ziplist
[ok]: INCRBYFLOAT fails against key with spaces (right)
[ok]: ZADD XX existing key - ziplist
[ok]: INCRBYFLOAT fails against key with spaces (both)
[ok]: ZADD XX returns the number of elements actually added - ziplist
[ok]: INCRBYFLOAT fails against a key holding a list
[ok]: INCRBYFLOAT does not allow NaN or Infinity
[ok]: INCRBYFLOAT decrement
[ok]: ZADD XX updates existing elements score - ziplist
[ok]: string to double with null terminator
[ok]: No negative zero
[ok]: ZADD GT updates existing elements when new scores are greater - ziplist
[ok]: ZADD LT updates existing elements when new scores are lower - ziplist
[ok]: ZADD GT XX updates existing elements when new scores are greater and skips new elements - ziplist
[ok]: ZADD LT XX updates existing elements when new scores are lower and skips new elements - ziplist
[ok]: ZADD XX and NX are not compatible - ziplist
[ok]: ZADD NX with non existing key - ziplist
[ok]: ZADD NX only add new elements without updating old ones - ziplist
[ok]: ZADD GT and NX are not compatible - ziplist
[ok]: ZADD LT and NX are not compatible - ziplist
[ok]: ZADD LT and GT are not compatible - ziplist
[ok]: ZADD INCR LT/GT replies with nill if score not updated - ziplist
[ok]: ZADD INCR LT/GT with inf - ziplist
[ok]: ZADD INCR works like ZINCRBY - ziplist
[ok]: ZADD INCR works with a single score-elemenet pair - ziplist
[ok]: ZADD CH option changes return value to all changed elements - ziplist
[ok]: ZINCRBY calls leading to NaN result in error - ziplist
[ok]: ZINCRBY calls leading to NaN result in error - ziplist
[ok]: ZADD - Variadic version base case - $encoding
[ok]: ZADD - Return value is the number of actually added items - $encoding
[ok]: ZADD - Variadic version does not add nothing on single parsing err - $encoding
[ok]: ZADD - Variadic version does not add nothing on single parsing err - $encoding
[ok]: ZADD - Variadic version will raise error on missing arg - $encoding
[ok]: ZADD - Variadic version will raise error on missing arg - $encoding
[ok]: ZINCRBY does not work variadic even if shares ZADD implementation - $encoding
[ok]: ZCARD basics - ziplist
[ok]: ZREM removes key after last element is removed - ziplist
[ok]: ZREM variadic version - ziplist
[ok]: ZREM variadic version -- remove elements after key deletion - ziplist
[ok]: SCAN basic
[ok]: ZRANGE basics - ziplist
[ok]: ZREVRANGE basics - ziplist
[ok]: ZRANK/ZREVRANK basics - ziplist
[ok]: ZRANK - after deletion - ziplist
[ok]: ZINCRBY - can create a new sorted set - ziplist
[ok]: ZINCRBY - increment and decrement - ziplist
[ok]: ZINCRBY return value - ziplist
[ok]: ZRANGEBYSCORE/ZREVRANGEBYSCORE/ZCOUNT basics - ziplist
[ok]: ZRANGEBYSCORE with WITHSCORES - ziplist
[ok]: ZRANGEBYSCORE with LIMIT - ziplist
[ok]: ZRANGEBYSCORE with LIMIT and WITHSCORES - ziplist
[ok]: ZRANGEBYSCORE with non-value min or max - ziplist
[ok]: ZRANGEBYLEX/ZREVRANGEBYLEX/ZLEXCOUNT basics - ziplist
[ok]: ZLEXCOUNT advanced - ziplist
[ok]: ZRANGEBYSLEX with LIMIT - ziplist
[ok]: ZRANGEBYLEX with invalid lex range specifiers - ziplist
[ok]: ZREMRANGEBYSCORE basics - ziplist
[ok]: ZREMRANGEBYSCORE with non-value min or max - ziplist
[ok]: SCAN COUNT
[ok]: ZREMRANGEBYRANK basics - ziplist
[ok]: ZUNIONSTORE against non-existing key doesn't set destination - ziplist
[ok]: ZUNION/ZINTER/ZDIFF against non-existing key - ziplist
[ok]: ZUNIONSTORE with empty set - ziplist
[ok]: ZUNION/ZINTER/ZDIFF with empty set - ziplist
[ok]: ZUNIONSTORE basics - ziplist
[ok]: ZUNION/ZINTER/ZDIFF with integer members - ziplist
[ok]: ZUNIONSTORE with weights - ziplist
[ok]: ZUNION with weights - ziplist
[ok]: ZUNIONSTORE with a regular set and weights - ziplist
[ok]: ZUNIONSTORE with AGGREGATE MIN - ziplist
[ok]: ZUNION/ZINTER with AGGREGATE MIN - ziplist
[ok]: ZUNIONSTORE with AGGREGATE MAX - ziplist
[ok]: ZUNION/ZINTER with AGGREGATE MAX - ziplist
[ok]: ZINTERSTORE basics - ziplist
[ok]: ZINTER basics - ziplist
[ok]: ZINTER RESP3 - ziplist
[ok]: SCAN MATCH
[ok]: ZINTERSTORE with weights - ziplist
[ok]: ZINTER with weights - ziplist
[ok]: ZINTERSTORE with a regular set and weights - ziplist
[ok]: ZINTERSTORE with AGGREGATE MIN - ziplist
[ok]: ZINTERSTORE with AGGREGATE MAX - ziplist
[ok]: ZUNIONSTORE with +inf/-inf scores - ziplist
[ok]: ZUNIONSTORE with NaN weights - ziplist
[ok]: ZINTERSTORE with +inf/-inf scores - ziplist
[ok]: ZINTERSTORE with NaN weights - ziplist
[ok]: Very big payload in GET/SET
[ok]: ZDIFFSTORE basics - ziplist
[ok]: ZDIFF basics - ziplist
[ok]: ZDIFFSTORE with a regular set - ziplist
[ok]: ZDIFF subtracting set from itself - ziplist
[ok]: ZDIFF algorithm 1 - ziplist
[ok]: ZDIFF algorithm 2 - ziplist
[ok]: SCAN TYPE
[ok]: SSCAN with encoding intset
[ok]: SSCAN with encoding hashtable
[ok]: HSCAN with encoding ziplist
[ok]: Handle an empty query
[ok]: DUMP / RESTORE are able to serialize / unserialize a simple key
[ok]: RESTORE can set an arbitrary expire to the materialized key
[ok]: RESTORE can set an expire that overflows a 32 bit integer
[1/66 done]: unit/printver ()
[ok]: HSCAN with encoding hashtable
[ok]: ZSCAN with encoding ziplist
[ok]: Handle an empty query
[ok]: Negative multibulk length
[ok]: Out of range multibulk length
[ok]: RESTORE can set an absolute expire
[ok]: RESTORE with ABSTTL in the past
[ok]: RESTORE can set LRU
[ok]: Wrong multibulk payload header
[ok]: ZSCAN with encoding ziplist
[ok]: RESTORE can set LFU
[ok]: Negative multibulk payload length
[ok]: RESTORE returns an error of the key already exists
[ok]: RESTORE returns an error of the key already exists
[ok]: RESTORE can overwrite an existing key with REPLACE
[ok]: RESTORE can detect a syntax error for unrecongized options
[ok]: RESTORE can detect a syntax error for unrecongized options
[ok]: DUMP of non existing key returns nil
[ok]: Out of range multibulk payload length
[1/66 done]: unit/type/incr ()
[ok]: Non-number multibulk payload length
[ok]: Multi bulk request not followed by bulk arguments
[ok]: Generic wrong number of args
[ok]: Unbalanced number of quotes
[ok]: LPOS basic usage
[ok]: LPOS RANK (positive and negative rank) option
[2/66 done]: unit/type/incr ()
[ok]: LPOS COUNT option
[ok]: LPOS COUNT + RANK option
[ok]: LPOS non existing key
[ok]: LPOS no match
[ok]: LPOS MAXLEN
[ok]: LPOS when RANK is greater than matches
[ok]: LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - ziplist
[ok]: LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - regular list
[ok]: R/LPOP against empty list
[ok]: R/LPOP with the optional count argument
[ok]: LPOP/RPOP with the count 0 returns an empty array in RESP3
[ok]: LPOP/RPOP against non existing key in RESP3
[ok]: LPOP/RPOP with <count> against non existing key in RESP3
[ok]: LPOP/RPOP with the count 0 returns an empty array in RESP2
[ok]: LPOP/RPOP against non existing key in RESP2
[ok]: LPOP/RPOP with <count> against non existing key in RESP2
[ok]: Variadic RPUSH/LPUSH
[ok]: DEL a list
[ok]: BLPOP, BRPOP: single existing list - linkedlist
[ok]: BLPOP, BRPOP: multiple existing lists - linkedlist
[ok]: BLPOP, BRPOP: second list has an entry - linkedlist
[ok]: BRPOPLPUSH - linkedlist
[ok]: BLMOVE left left - linkedlist
[ok]: ZSCAN with encoding skiplist
[ok]: Protocol desync regression test #1
[ok]: BLMOVE left right - linkedlist
[ok]: BLMOVE right left - linkedlist
[ok]: BLMOVE right right - linkedlist
[ok]: BLPOP, BRPOP: single existing list - ziplist
[ok]: BLPOP, BRPOP: multiple existing lists - ziplist
[ok]: BLPOP, BRPOP: second list has an entry - ziplist
[ok]: BRPOPLPUSH - ziplist
[ok]: BLMOVE left left - ziplist
[ok]: BLMOVE left right - ziplist
[ok]: BLMOVE right left - ziplist
[ok]: BLMOVE right right - ziplist
[ok]: BLPOP, LPUSH + DEL should not awake blocked client
[ok]: SCAN guarantees check under write load
[ok]: Protocol desync regression test #1
[ok]: SSCAN with integer encoded object (issue #1345)
[ok]: SSCAN with PATTERN
[ok]: HSCAN with PATTERN
[ok]: ZSCAN with PATTERN
[ok]: Protocol desync regression test #2
[ok]: ZSCAN scores: regression test for issue #2175
[2/66 done]: unit/printver ()
[ok]: Protocol desync regression test #3
[ok]: raw protocol response
[ok]: raw protocol response - deferred
@@ -174,6 +125,29 @@
[ok]: RESP3 attributes on RESP2
[ok]: test big number parsing
[ok]: test bool parsing
[ok]: BLPOP, LPUSH + DEL + SET should not awake blocked client
[ok]: BLPOP with same key multiple times should work (issue #801)
[ok]: MULTI/EXEC is isolated from the point of view of BLPOP
[ok]: BLPOP with variadic LPUSH
[ok]: BRPOPLPUSH with zero timeout should block indefinitely
[ok]: BLMOVE left left with zero timeout should block indefinitely
[ok]: BLMOVE left right with zero timeout should block indefinitely
[ok]: BLMOVE right left with zero timeout should block indefinitely
[ok]: BLMOVE right right with zero timeout should block indefinitely
[ok]: BLMOVE (left, left) with a client BLPOPing the target list
[ok]: BLMOVE (left, right) with a client BLPOPing the target list
[ok]: BLMOVE (right, left) with a client BLPOPing the target list
[ok]: BLMOVE (right, right) with a client BLPOPing the target list
[ok]: BRPOPLPUSH with wrong source type
[ok]: BRPOPLPUSH with wrong destination type
[ok]: BRPOPLPUSH maintains order of elements after failure
[ok]: BRPOPLPUSH with multiple blocked clients
[ok]: Linked LMOVEs
[ok]: Circular BRPOPLPUSH
[ok]: Self-referential BRPOPLPUSH
[ok]: BRPOPLPUSH inside a transaction
[ok]: PUSH resulting from BRPOPLPUSH affect WATCH
[ok]: BRPOPLPUSH does not affect WATCH while still blocked
[ok]: Very big payload random access
[ok]: DEL against expired key
[ok]: EXISTS
@@ -221,80 +195,134 @@
[ok]: RANDOMKEY regression 1
[ok]: KEYS * two times with long key, Github issue #1208
[ok]: Regression for pattern matching long nested loops
[ok]: LPOS basic usage
[ok]: LPOS RANK (positive and negative rank) option
[ok]: LPOS COUNT option
[ok]: LPOS COUNT + RANK option
[ok]: SADD, SCARD, SISMEMBER, SMISMEMBER, SMEMBERS basics - regular set
[ok]: LPOS non existing key
[ok]: LPOS no match
[ok]: Explicit regression for a list bug
[ok]: LPOS MAXLEN
[ok]: LPOS when RANK is greater than matches
[ok]: Regression for quicklist #3343 bug
[ok]: SET 10000 numeric keys and access all them in reverse order
[ok]: DBSIZE should be 10000 now
[ok]: SETNX target key missing
[ok]: SETNX target key exists
[ok]: SETNX against not-expired volatile key
[ok]: SADD, SCARD, SISMEMBER, SMISMEMBER, SMEMBERS basics - regular set
[ok]: XADD can add entries into a stream that XRANGE can fetch
[ok]: XADD IDs are incremental
[ok]: SADD, SCARD, SISMEMBER, SMISMEMBER, SMEMBERS basics - intset
[ok]: SMISMEMBER against non set
[ok]: Regression for quicklist #3343 bug
[ok]: XADD IDs are incremental when ms is the same as well
[ok]: SMISMEMBER non existing key
[ok]: XADD IDs correctly report an error when overflowing
[ok]: XADD IDs correctly report an error when overflowing
[ok]: SMISMEMBER requires one or more members
[ok]: SADD against non set
[ok]: SADD a non-integer against an intset
[ok]: HSET/HLEN - Small hash creation
[ok]: LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - ziplist
[ok]: XADD can add entries into a stream that XRANGE can fetch
[ok]: XADD IDs are incremental
[ok]: Check encoding - ziplist
[ok]: Is the small hash encoded with a ziplist?
[ok]: SADD an integer larger than 64 bits
[ok]: XADD IDs are incremental when ms is the same as well
[ok]: XADD IDs correctly report an error when overflowing
[ok]: XADD IDs correctly report an error when overflowing
[ok]: LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - regular list
[ok]: R/LPOP against empty list
[ok]: R/LPOP with the optional count argument
[ok]: LPOP/RPOP with the count 0 returns an empty array in RESP3
[ok]: LPOP/RPOP against non existing key in RESP3
[ok]: LPOP/RPOP with <count> against non existing key in RESP3
[ok]: LPOP/RPOP with the count 0 returns an empty array in RESP2
[ok]: LPOP/RPOP against non existing key in RESP2
[ok]: LPOP/RPOP with <count> against non existing key in RESP2
[ok]: Variadic RPUSH/LPUSH
[ok]: DEL a list
[ok]: BLPOP, BRPOP: single existing list - linkedlist
[ok]: BLPOP, BRPOP: multiple existing lists - linkedlist
[ok]: ZSET basic ZADD and score update - ziplist
[ok]: ZSET element can't be set to NaN with ZADD - ziplist
[ok]: ZSET element can't be set to NaN with ZINCRBY - ziplist
[ok]: ZADD with options syntax error with incomplete pair - ziplist
[ok]: ZADD with options syntax error with incomplete pair - ziplist
[ok]: ZADD XX option without key - ziplist
[ok]: ZADD XX existing key - ziplist
[ok]: ZADD XX returns the number of elements actually added - ziplist
[ok]: ZADD XX updates existing elements score - ziplist
[ok]: ZADD GT updates existing elements when new scores are greater - ziplist
[ok]: ZADD LT updates existing elements when new scores are lower - ziplist
[ok]: ZADD GT XX updates existing elements when new scores are greater and skips new elements - ziplist
[ok]: ZADD LT XX updates existing elements when new scores are lower and skips new elements - ziplist
[ok]: ZADD XX and NX are not compatible - ziplist
[ok]: ZADD NX with non existing key - ziplist
[ok]: ZADD NX only add new elements without updating old ones - ziplist
[ok]: ZADD GT and NX are not compatible - ziplist
[ok]: ZADD LT and NX are not compatible - ziplist
[ok]: ZADD LT and GT are not compatible - ziplist
[ok]: ZADD INCR LT/GT replies with nill if score not updated - ziplist
[ok]: ZADD INCR LT/GT with inf - ziplist
[ok]: ZADD INCR works like ZINCRBY - ziplist
[ok]: BRPOPLPUSH timeout
[ok]: ZADD INCR works with a single score-elemenet pair - ziplist
[ok]: BLPOP when new key is moved into place
[ok]: ZADD CH option changes return value to all changed elements - ziplist
[ok]: ZINCRBY calls leading to NaN result in error - ziplist
[ok]: ZINCRBY calls leading to NaN result in error - ziplist
[ok]: BLPOP when result key is created by SORT..STORE
[ok]: ZADD - Variadic version base case - $encoding
[ok]: BLPOP: with single empty list argument
[ok]: ZADD - Return value is the number of actually added items - $encoding
[ok]: ZADD - Variadic version does not add nothing on single parsing err - $encoding
[ok]: ZADD - Variadic version does not add nothing on single parsing err - $encoding
[ok]: BLPOP: with negative timeout
[ok]: ZADD - Variadic version will raise error on missing arg - $encoding
[ok]: ZADD - Variadic version will raise error on missing arg - $encoding
[ok]: ZINCRBY does not work variadic even if shares ZADD implementation - $encoding
[ok]: BLPOP: with non-integer timeout
[ok]: ZCARD basics - ziplist
[ok]: ZREM removes key after last element is removed - ziplist
[ok]: ZREM variadic version - ziplist
[ok]: HRANDFIELD - ziplist
[ok]: BLPOP, BRPOP: second list has an entry - linkedlist
[ok]: BRPOPLPUSH - linkedlist
[ok]: BLMOVE left left - linkedlist
[ok]: BLMOVE left right - linkedlist
[ok]: BLMOVE right left - linkedlist
[ok]: BLMOVE right right - linkedlist
[ok]: ZREM variadic version -- remove elements after key deletion - ziplist
[ok]: ZRANGE basics - ziplist
[ok]: ZREVRANGE basics - ziplist
[ok]: ZRANK/ZREVRANK basics - ziplist
[ok]: ZRANK - after deletion - ziplist
[ok]: ZINCRBY - can create a new sorted set - ziplist
[ok]: ZINCRBY - increment and decrement - ziplist
[ok]: HRANDFIELD - hashtable
[ok]: BLPOP, BRPOP: single existing list - ziplist
[ok]: ZINCRBY return value - ziplist
[ok]: HRANDFIELD with RESP3
[ok]: HRANDFIELD count of 0 is handled correctly
[ok]: HRANDFIELD count overflow
[ok]: HRANDFIELD with <count> against non existing key
[ok]: HRANDFIELD count of 0 is handled correctly - emptyarray
[ok]: HRANDFIELD with <count> against non existing key - emptyarray
[ok]: BLPOP, BRPOP: multiple existing lists - ziplist
[ok]: BLPOP, BRPOP: second list has an entry - ziplist
[ok]: BRPOPLPUSH - ziplist
[ok]: BLMOVE left left - ziplist
[ok]: BLMOVE left right - ziplist
[ok]: ZRANGEBYSCORE/ZREVRANGEBYSCORE/ZCOUNT basics - ziplist
[ok]: ZRANGEBYSCORE with WITHSCORES - ziplist
[ok]: ZRANGEBYSCORE with LIMIT - ziplist
[ok]: ZRANGEBYSCORE with LIMIT and WITHSCORES - ziplist
[ok]: ZRANGEBYSCORE with non-value min or max - ziplist
[ok]: SADD overflows the maximum allowed integers in an intset
[ok]: Variadic SADD
[ok]: BLMOVE right left - ziplist
[ok]: BLMOVE right right - ziplist
[ok]: BLPOP, LPUSH + DEL should not awake blocked client
[3/66 done]: unit/keyspace ()
[ok]: ZRANGEBYLEX/ZREVRANGEBYLEX/ZLEXCOUNT basics - ziplist
[ok]: ZLEXCOUNT advanced - ziplist
[ok]: ZRANGEBYSLEX with LIMIT - ziplist
[ok]: ZRANGEBYLEX with invalid lex range specifiers - ziplist
[ok]: ZREMRANGEBYSCORE basics - ziplist
[ok]: ZREMRANGEBYSCORE with non-value min or max - ziplist
[ok]: ZREMRANGEBYRANK basics - ziplist
[ok]: ZUNIONSTORE against non-existing key doesn't set destination - ziplist
[ok]: ZUNION/ZINTER/ZDIFF against non-existing key - ziplist
[ok]: ZUNIONSTORE with empty set - ziplist
[ok]: ZUNION/ZINTER/ZDIFF with empty set - ziplist
[ok]: ZUNIONSTORE basics - ziplist
[ok]: ZUNION/ZINTER/ZDIFF with integer members - ziplist
[ok]: ZUNIONSTORE with weights - ziplist
[ok]: ZUNION with weights - ziplist
[ok]: ZUNIONSTORE with a regular set and weights - ziplist
[ok]: ZUNIONSTORE with AGGREGATE MIN - ziplist
[ok]: ZUNION/ZINTER with AGGREGATE MIN - ziplist
[ok]: ZUNIONSTORE with AGGREGATE MAX - ziplist
[ok]: ZUNION/ZINTER with AGGREGATE MAX - ziplist
[ok]: ZINTERSTORE basics - ziplist
[ok]: ZINTER basics - ziplist
[ok]: ZINTER RESP3 - ziplist
[ok]: ZINTERSTORE with weights - ziplist
[ok]: ZINTER with weights - ziplist
[ok]: ZINTERSTORE with a regular set and weights - ziplist
[ok]: ZINTERSTORE with AGGREGATE MIN - ziplist
[ok]: ZINTERSTORE with AGGREGATE MAX - ziplist
[ok]: ZUNIONSTORE with +inf/-inf scores - ziplist
[ok]: ZUNIONSTORE with NaN weights - ziplist
[ok]: ZINTERSTORE with +inf/-inf scores - ziplist
[ok]: ZINTERSTORE with NaN weights - ziplist
[ok]: ZDIFFSTORE basics - ziplist
[ok]: ZDIFF basics - ziplist
[ok]: ZDIFFSTORE with a regular set - ziplist
[ok]: ZDIFF subtracting set from itself - ziplist
[ok]: ZDIFF algorithm 1 - ziplist
[ok]: ZDIFF algorithm 2 - ziplist
[ok]: XADD with MAXLEN option
[ok]: EXPIRE - set timeouts multiple times
[ok]: EXPIRE - It should be still possible to read 'x'
[ok]: AUTH fails when a wrong password is given
[ok]: Arbitrary command gives an error when AUTH is required
[ok]: Arbitrary command gives an error when AUTH is required
[ok]: AUTH succeeds when the right password is given
[ok]: Once AUTH succeeded we can actually send commands to the server
[ok]: For unauthenticated clients multibulk and bulk length are limited
[3/66 done]: unit/keyspace ()
[ok]: XGROUP CREATE: creation and duplicate group name detection
[ok]: XGROUP CREATE: automatic stream creation fails without MKSTREAM
[ok]: XGROUP CREATE: automatic stream creation works with MKSTREAM
@@ -302,123 +330,102 @@
[ok]: XREADGROUP can read the history of the elements we own
[ok]: XPENDING is able to return pending items
[ok]: XPENDING can return single consumer items
[ok]: AUTH fails when a wrong password is given
[ok]: Arbitrary command gives an error when AUTH is required
[ok]: Arbitrary command gives an error when AUTH is required
[ok]: XPENDING only group
[ok]: errorstats: failed call authentication error
[ok]: errorstats: failed call authentication error
[ok]: errorstats: failed call within MULTI/EXEC
[ok]: errorstats: failed call within MULTI/EXEC
[ok]: errorstats: failed call within LUA
[ok]: errorstats: failed call within LUA
[ok]: errorstats: failed call NOSCRIPT error
[ok]: errorstats: failed call NOSCRIPT error
[ok]: errorstats: failed call NOGROUP error
[ok]: errorstats: failed call NOGROUP error
[ok]: errorstats: rejected call unknown command
[ok]: errorstats: rejected call unknown command
[ok]: errorstats: rejected call within MULTI/EXEC
[ok]: errorstats: rejected call within MULTI/EXEC
[ok]: errorstats: rejected call due to wrong arity
[ok]: errorstats: rejected call due to wrong arity
[ok]: BLPOP, LPUSH + DEL + SET should not awake blocked client
[ok]: errorstats: rejected call by OOM error
[ok]: errorstats: rejected call by OOM error
[ok]: XPENDING with IDLE
[ok]: XPENDING with exclusive range intervals works as expected
[ok]: BLPOP with same key multiple times should work (issue #801)
[ok]: XACK is able to remove items from the consumer/group PEL
[ok]: errorstats: rejected call by authorization error
[ok]: errorstats: rejected call by authorization error
[ok]: XACK can't remove the same item multiple times
[ok]: MULTI/EXEC is isolated from the point of view of BLPOP
[ok]: XACK is able to accept multiple arguments
[ok]: BLPOP with variadic LPUSH
[ok]: XACK should fail if got at least one invalid ID
[ok]: Set encoding after DEBUG RELOAD
[ok]: PEL NACK reassignment after XGROUP SETID event
[ok]: SREM basics - regular set
[ok]: BRPOPLPUSH with zero timeout should block indefinitely
[ok]: SREM basics - intset
[ok]: XREADGROUP will not report data on empty history. Bug #5577
[ok]: SREM with multiple arguments
[ok]: BLMOVE left left with zero timeout should block indefinitely
[ok]: SREM variadic version with more args needed to destroy the key
[ok]: BLMOVE left right with zero timeout should block indefinitely
[ok]: XREADGROUP history reporting of deleted entries. Bug #5570
[ok]: BLMOVE right left with zero timeout should block indefinitely
[ok]: BLMOVE right right with zero timeout should block indefinitely
[ok]: BLMOVE (left, left) with a client BLPOPing the target list
[ok]: BLMOVE (left, right) with a client BLPOPing the target list
[ok]: BLMOVE (right, left) with a client BLPOPing the target list
[ok]: BLMOVE (right, right) with a client BLPOPing the target list
[ok]: BRPOPLPUSH with wrong source type
[ok]: BRPOPLPUSH with wrong destination type
[ok]: BRPOPLPUSH maintains order of elements after failure
[ok]: BRPOPLPUSH with multiple blocked clients
[ok]: Linked LMOVEs
[ok]: Circular BRPOPLPUSH
[ok]: Self-referential BRPOPLPUSH
[ok]: HRANDFIELD with <count> - hashtable
[ok]: BRPOPLPUSH inside a transaction
[ok]: PUSH resulting from BRPOPLPUSH affect WATCH
[ok]: BRPOPLPUSH does not affect WATCH while still blocked
[ok]: Generated sets must be encoded as hashtable
[ok]: SINTER with two sets - hashtable
[ok]: SINTERSTORE with two sets - hashtable
[ok]: XADD with MAXLEN option and the '=' argument
[ok]: Blocking XREADGROUP will not reply with an empty array
[ok]: SINTERSTORE with two sets, after a DEBUG RELOAD - hashtable
[ok]: XGROUP DESTROY should unblock XREADGROUP with -NOGROUP
[ok]: RENAME can unblock XREADGROUP with data
[ok]: RENAME can unblock XREADGROUP with -NOGROUP
[ok]: SUNION with two sets - hashtable
[ok]: SUNIONSTORE with two sets - hashtable
[ok]: SINTER against three sets - hashtable
[ok]: SINTERSTORE with three sets - hashtable
[ok]: AUTH succeeds when the right password is given
[ok]: Once AUTH succeeded we can actually send commands to the server
[ok]: For unauthenticated clients multibulk and bulk length are limited
[ok]: MIGRATE is caching connections
[ok]: Old Ziplist: SORT BY key
[ok]: Old Ziplist: SORT BY key with limit
[ok]: Old Ziplist: SORT BY hash field
[ok]: XPENDING with IDLE
[ok]: XPENDING with exclusive range intervals works as expected
[ok]: XACK is able to remove items from the consumer/group PEL
[ok]: XACK can't remove the same item multiple times
[ok]: XACK is able to accept multiple arguments
[ok]: XACK should fail if got at least one invalid ID
[ok]: PEL NACK reassignment after XGROUP SETID event
[ok]: XREADGROUP will not report data on empty history. Bug #5577
[ok]: XREADGROUP history reporting of deleted entries. Bug #5570
[ok]: errorstats: failed call authentication error
[ok]: errorstats: failed call authentication error
[ok]: errorstats: failed call within MULTI/EXEC
[ok]: errorstats: failed call within MULTI/EXEC
[ok]: errorstats: failed call within LUA
[ok]: errorstats: failed call within LUA
[ok]: errorstats: failed call NOSCRIPT error
[ok]: errorstats: failed call NOSCRIPT error
[ok]: errorstats: failed call NOGROUP error
[ok]: errorstats: failed call NOGROUP error
[ok]: errorstats: rejected call unknown command
[ok]: errorstats: rejected call unknown command
[ok]: errorstats: rejected call within MULTI/EXEC
[ok]: errorstats: rejected call within MULTI/EXEC
[ok]: errorstats: rejected call due to wrong arity
[ok]: errorstats: rejected call due to wrong arity
[ok]: errorstats: rejected call by OOM error
[ok]: errorstats: rejected call by OOM error
[ok]: errorstats: rejected call by authorization error
[ok]: errorstats: rejected call by authorization error
[ok]: XADD with MAXLEN option and the '=' argument
[ok]: HRANDFIELD with <count> - hashtable
[ok]: Set encoding after DEBUG RELOAD
[ok]: SREM basics - regular set
[ok]: SREM basics - intset
[ok]: SREM with multiple arguments
[ok]: SREM variadic version with more args needed to destroy the key
[ok]: Blocking XREADGROUP will not reply with an empty array
[ok]: XGROUP DESTROY should unblock XREADGROUP with -NOGROUP
[ok]: EXPIRE - set timeouts multiple times
[ok]: EXPIRE - It should be still possible to read 'x'
[ok]: RENAME can unblock XREADGROUP with data
[ok]: RENAME can unblock XREADGROUP with -NOGROUP
[ok]: Generated sets must be encoded as hashtable
[ok]: SINTER with two sets - hashtable
[ok]: SINTERSTORE with two sets - hashtable
[ok]: SINTERSTORE with two sets, after a DEBUG RELOAD - hashtable
[ok]: SUNION with two sets - hashtable
[ok]: XADD with MAXLEN option and the '~' argument
[ok]: XADD with NOMKSTREAM option
[ok]: SUNIONSTORE with two sets - hashtable
[ok]: SINTER against three sets - hashtable
[ok]: SINTERSTORE with three sets - hashtable
[ok]: SUNION with non existing keys - hashtable
[ok]: SDIFF with two sets - hashtable
[ok]: SDIFF with three sets - hashtable
[ok]: MIGRATE is caching connections
[ok]: SDIFFSTORE with three sets - hashtable
[ok]: AUTH fails when binary password is wrong
[ok]: AUTH succeeds when binary password is correct
[ok]: SET 10000 numeric keys and access all them in reverse order
[ok]: DBSIZE should be 10000 now
[ok]: SETNX target key missing
[ok]: SETNX target key exists
[ok]: SETNX against not-expired volatile key
[ok]: HRANDFIELD with <count> - ziplist
[ok]: Generated sets must be encoded as intset
[ok]: SINTER with two sets - intset
[ok]: SINTERSTORE with two sets - intset
[ok]: Regression for a crash with blocking ops and pipelining
[ok]: XADD with MINID option
[ok]: XTRIM with MINID option
[ok]: XTRIM with MINID option, big delta from master record
[ok]: SINTERSTORE with two sets, after a DEBUG RELOAD - intset
[ok]: XADD with MAXLEN option and the '~' argument
[ok]: XADD with NOMKSTREAM option
[ok]: SUNION with two sets - intset
[ok]: SUNIONSTORE with two sets - intset
[ok]: SINTER against three sets - intset
[ok]: SINTERSTORE with three sets - intset
[ok]: AUTH fails when binary password is wrong
[ok]: AUTH succeeds when binary password is correct
[ok]: SUNION with non existing keys - intset
[ok]: SDIFF with two sets - intset
[ok]: SDIFF with three sets - intset
[ok]: SDIFFSTORE with three sets - intset
[ok]: SDIFF with first set empty
[ok]: SDIFF with same set two times
[ok]: Regression for a crash with blocking ops and pipelining
[ok]: HRANDFIELD with <count> - ziplist
[ok]: Unsafe command names are sanitized in INFO output
[ok]: XADD with MINID option
[ok]: XTRIM with MINID option
[ok]: XTRIM with MINID option, big delta from master record
[4/66 done]: unit/protocol ()
[ok]: HSET/HLEN - Big hash creation
[ok]: Is the big hash encoded with an hash table?
[ok]: HGET against the small hash
[ok]: Old Linked list: SORT BY key
[ok]: Old Linked list: SORT BY key with limit
[ok]: SAVE - make sure there are all the types as values
[ok]: Old Linked list: SORT BY hash field
[4/66 done]: unit/protocol ()
[ok]: HGET against the big hash
[ok]: HGET against non existing key
[ok]: HSET in update and insert mode
@@ -436,9 +443,9 @@
[ok]: HKEYS - small hash
[ok]: HKEYS - big hash
[ok]: HVALS - small hash
[5/66 done]: unit/info ()
[ok]: HVALS - big hash
[ok]: HGETALL - small hash
[5/66 done]: unit/info ()
[ok]: HGETALL - big hash
[ok]: HDEL and return value
[ok]: HDEL - more than a single value
@@ -461,11 +468,18 @@
[ok]: HINCRBYFLOAT over 32bit value
[ok]: HINCRBYFLOAT over 32bit value with over 32bit increment
[ok]: HINCRBYFLOAT fails against hash value with spaces (left)
[ok]: MUTLI / EXEC basics
[ok]: HINCRBYFLOAT fails against hash value with spaces (right)
[ok]: HINCRBYFLOAT fails against hash value that contains a null-terminator in the middle
[ok]: DISCARD
[ok]: HSTRLEN against the small hash
[ok]: SAVE - make sure there are all the types as values
[ok]: HSTRLEN against the big hash
[ok]: HSTRLEN against non existing field
[ok]: HSTRLEN corner cases
[ok]: Hash ziplist regression test for large keys
[ok]: Hash fuzzing #1 - 10 fields
[ok]: Hash fuzzing #2 - 10 fields
[ok]: MUTLI / EXEC basics
[ok]: DISCARD
[ok]: Nested MULTI are not allowed
[ok]: MULTI where commands alter argc/argv
[ok]: WATCH inside MULTI is not allowed
@@ -478,12 +492,7 @@
[ok]: EXEC fail on WATCHed key modified (1 key of 1 watched)
[ok]: EXEC fail on WATCHed key modified (1 key of 5 watched)
[ok]: EXEC fail on WATCHed key modified by SORT with STORE even if the result is empty
[ok]: HSTRLEN against the big hash
[ok]: HSTRLEN against non existing field
[ok]: HSTRLEN corner cases
[ok]: Hash ziplist regression test for large keys
[ok]: Hash fuzzing #1 - 10 fields
[ok]: Hash fuzzing #2 - 10 fields
[ok]: XCLAIM can claim PEL items from another consumer
[ok]: EXEC fail on lazy expired WATCHed key
[ok]: After successful EXEC key is no longer watched
[ok]: After failed EXEC key is no longer watched
@@ -497,62 +506,273 @@
[ok]: SWAPDB is able to touch the watched keys that do not exist
[ok]: WATCH is able to remember the DB a key belongs to
[ok]: WATCH will consider touched keys target of EXPIRE
[ok]: XCLAIM can claim PEL items from another consumer
[ok]: FUZZ stresser with data model binary
[ok]: BRPOPLPUSH timeout
[ok]: BLPOP when new key is moved into place
[ok]: BLPOP when result key is created by SORT..STORE
[ok]: BLPOP: with single empty list argument
[ok]: BLPOP: with negative timeout
[ok]: BLPOP: with non-integer timeout
[ok]: XCLAIM without JUSTID increments delivery count
[ok]: BLPOP: with zero timeout should block indefinitely
[ok]: BLPOP: second argument is not a list
[ok]: Stress tester for #3343-alike bugs
[ok]: XCLAIM without JUSTID increments delivery count
[ok]: FUZZ stresser with data model binary
[ok]: XCLAIM same consumer
[ok]: MASTERAUTH test with binary password
[ok]: ziplist implementation: value encoding and backlink
[6/66 done]: unit/auth ()
[ok]: FUZZ stresser with data model alpha
[ok]: QUIT returns OK
[ok]: Pipelined commands after QUIT must not be executed
[ok]: Pipelined commands after QUIT that exceed read buffer size
[ok]: FUZZ stresser with data model alpha
[7/66 done]: unit/quit ()
[ok]: SCAN regression test for issue #4906
[ok]: WATCH will consider touched expired keys
[ok]: DISCARD should clear the WATCH dirty flag on the client
[ok]: ziplist implementation: value encoding and backlink
[ok]: DISCARD should UNWATCH all the keys
[ok]: MULTI / EXEC is propagated correctly (single write command)
[ok]: MULTI / EXEC is propagated correctly (empty transaction)
[ok]: XAUTOCLAIM can claim PEL items from another consumer
[ok]: BLPOP: timeout
[ok]: BLPOP: arguments are empty
[ok]: BRPOP: with single empty list argument
[ok]: BRPOP: with negative timeout
[ok]: BRPOP: with non-integer timeout
[ok]: MULTI / EXEC is propagated correctly (empty transaction)
[ok]: Hash fuzzing #1 - 512 fields
[ok]: MULTI / EXEC is propagated correctly (read-only commands)
[ok]: BLPOP: with zero timeout should block indefinitely
[ok]: XADD mass insertion and XLEN
[ok]: BLPOP: second argument is not a list
[ok]: XADD with ID 0-0
[ok]: MULTI / EXEC is propagated correctly (write command, no effect)
[ok]: DISCARD should not fail during OOM
[ok]: XADD with LIMIT delete entries no more than limit
[ok]: XRANGE COUNT works as expected
[ok]: XREVRANGE COUNT works as expected
[ok]: MULTI / EXEC is propagated correctly (read-only commands)
[8/66 done]: unit/scan ()
[ok]: XAUTOCLAIM as an iterator
[ok]: XAUTOCLAIM COUNT must be > 0
[ok]: XINFO FULL output
[ok]: XGROUP CREATECONSUMER: create consumer if does not exist
[ok]: XGROUP CREATECONSUMER: group must exist
[ok]: Connections start with the default user
[ok]: It is possible to create new users
[ok]: New users start disabled
[ok]: Enabling the user allows the login
[ok]: Only the set of correct passwords work
[ok]: It is possible to remove passwords from the set of valid ones
[ok]: Test password hashes can be added
[ok]: Test password hashes validate input
[ok]: ACL GETUSER returns the password hash instead of the actual password
[ok]: Test hashed passwords removal
[ok]: By default users are not able to access any command
[ok]: By default users are not able to access any key
[ok]: It's possible to allow the access of a subset of keys
[ok]: By default users are able to publish to any channel
[ok]: By default users are able to subscribe to any channel
[ok]: By default users are able to subscribe to any pattern
[ok]: It's possible to allow publishing to a subset of channels
[ok]: Validate subset of channels is prefixed with resetchannels flag
[ok]: In transaction queue publish/subscribe/psubscribe to unauthorized channel will fail
[ok]: It's possible to allow subscribing to a subset of channels
[ok]: It's possible to allow subscribing to a subset of channel patterns
[ok]: Subscribers are killed when revoked of channel permission
[ok]: Subscribers are killed when revoked of pattern permission
[ok]: Subscribers are killed when revoked of allchannels permission
[ok]: Subscribers are pardoned if literal permissions are retained and/or gaining allchannels
[ok]: Subscribers are pardoned if literal permissions are retained and/or gaining allchannels
[ok]: Users can be configured to authenticate with any password
[ok]: ACLs can exclude single commands
[ok]: ACLs can include or exclude whole classes of commands
[ok]: MULTI / EXEC is propagated correctly (write command, no effect)
[ok]: ACLs can include single subcommands
[ok]: DISCARD should not fail during OOM
[ok]: ACLs set can include subcommands, if already full command exists
[ok]: ACL GETUSER is able to translate back command permissions
[ok]: EXPIRE - After 2. the key should no longer be here
[ok]: EXPIRE - write on expire should work
[ok]: EXPIREAT - Check for EXPIRE alike behavior
[ok]: SETEX - Set + Expire combo operation. Check for TTL
[ok]: SETEX - Check value
[ok]: SETEX - Overwrite old key
[ok]: XAUTOCLAIM as an iterator
[ok]: XAUTOCLAIM COUNT must be > 0
[ok]: XINFO FULL output
[ok]: XGROUP CREATECONSUMER: create consumer if does not exist
[ok]: XGROUP CREATECONSUMER: group must exist
[ok]: FUZZ stresser with data model compr
[ok]: ACL GETUSER provides reasonable results
[ok]: ACL #5998 regression: memory leaks adding / removing subcommands
[ok]: ACL LOG shows failed command executions at toplevel
[ok]: ACL LOG is able to test similar events
[ok]: ACL LOG is able to log keys access violations and key name
[ok]: ACL LOG is able to log channel access violations and channel name
[ok]: ACL LOG RESET is able to flush the entries in the log
[ok]: ACL LOG can distinguish the transaction context (1)
[ok]: ACL LOG can distinguish the transaction context (2)
[ok]: ACL can log errors in the context of Lua scripting
[ok]: ACL can log errors in the context of Lua scripting
[ok]: ACL LOG can accept a numerical argument to show less entries
[ok]: ACL LOG can log failed auth attempts
[ok]: ACL LOG entries are limited to a maximum amount
[ok]: When default user is off, new connections are not authenticated
[ok]: When default user has no command permission, hello command still works for other users
[ok]: ACL HELP should not have unexpected options
[ok]: Delete a user that the client doesn't use
[ok]: Delete a user that the client is using
[ok]: XREADGROUP with NOACK creates consumer
[ok]: FUZZ stresser with data model compr
[ok]: XRANGE can be used to iterate the whole stream
[ok]: default: load from include file, can access any channels
[ok]: default: with config acl-pubsub-default allchannels after reset, can access any channels
[ok]: default: with config acl-pubsub-default resetchannels after reset, can not access any channels
[ok]: Alice: can execute all command
[ok]: Bob: just execute @set and acl command
[ok]: ACL load and save
[ok]: ACL load and save with restricted channels
[ok]: MULTI and script timeout
[ok]: SETNX against expired volatile key
[ok]: GETEX EX option
[ok]: GETEX PX option
[ok]: GETEX EXAT option
[ok]: GETEX PXAT option
[ok]: GETEX PERSIST option
[ok]: GETEX no option
[ok]: GETEX syntax errors
[ok]: GETEX syntax errors
[ok]: GETEX no arguments
[ok]: GETDEL command
[ok]: Old Big Linked list: SORT BY key
[ok]: GETDEL propagate as DEL command to replica
[ok]: Old Big Linked list: SORT BY key with limit
[ok]: Default user has access to all channels irrespective of flag
[ok]: Update acl-pubsub-default, existing users shouldn't get affected
[ok]: Single channel is valid
[ok]: Single channel is not valid with allchannels
[ok]: GETEX without argument does not propagate to replica
[ok]: MGET
[ok]: MGET against non existing key
[ok]: MGET against non-string key
[ok]: GETSET (set new value)
[ok]: GETSET (replace old value)
[ok]: MSET base case
[ok]: MSET wrong number of args
[ok]: MSETNX with already existent key
[ok]: MSETNX with not existing keys
[ok]: STRLEN against non-existing key
[ok]: STRLEN against integer-encoded value
[ok]: STRLEN against plain string
[ok]: SETBIT against non-existing key
[ok]: SETBIT against string-encoded key
[ok]: SETBIT against integer-encoded key
[ok]: SETBIT against key with wrong type
[ok]: SETBIT with out of range bit offset
[ok]: SETBIT with non-bit argument
[ok]: Hash fuzzing #2 - 512 fields
[ok]: BRPOP: with zero timeout should block indefinitely
[ok]: BRPOP: second argument is not a list
[ok]: EXEC and script timeout
[ok]: Only default user has access to all channels irrespective of flag
[ok]: SETEX - Wait for the key to expire
[ok]: SETEX - Wrong time parameter
[ok]: PERSIST can undo an EXPIRE
[ok]: PERSIST returns 0 against non existing or non volatile keys
[ok]: BGSAVE
[ok]: SELECT an out of range DB
[ok]: Consumer without PEL is present in AOF after AOFRW
[ok]: Old Big Linked list: SORT BY hash field
[ok]: Intset: SORT BY key
[ok]: Intset: SORT BY key with limit
[ok]: Intset: SORT BY hash field
[ok]: SETBIT fuzzing
[ok]: GETBIT against non-existing key
[ok]: GETBIT against string-encoded key
[ok]: GETBIT against integer-encoded key
[ok]: SETRANGE against non-existing key
[ok]: SETRANGE against string-encoded key
[ok]: SETRANGE against integer-encoded key
[ok]: SETRANGE against key with wrong type
[ok]: SETRANGE with out of range offset
[ok]: GETRANGE against non-existing key
[ok]: GETRANGE against string value
[ok]: GETRANGE against integer-encoded value
[ok]: MULTI-EXEC body and script timeout
[ok]: Hash table: SORT BY key
[ok]: Hash table: SORT BY key with limit
[ok]: Hash table: SORT BY hash field
[ok]: default: load from config file, can access any channels
[9/66 done]: unit/acl ()
[ok]: Consumer group last ID propagation to slave (NOACK=0)
[ok]: just EXEC and script timeout
[ok]: exec with write commands and state change
[ok]: exec with read commands and stale replica state change
[ok]: EXEC with only read commands should not be rejected when OOM
[ok]: EXEC with at least one use-memory command should fail
[ok]: Blocking commands ignores the timeout
[ok]: Consumer group last ID propagation to slave (NOACK=1)
[ok]: MULTI propagation of PUBLISH
[ok]: SDIFF fuzzing
[ok]: SDIFF against non-set should throw error
[ok]: SDIFF against non-set should throw error
[ok]: SDIFF should handle non existing key as empty
[ok]: SDIFFSTORE against non-set should throw error
[ok]: SDIFFSTORE against non-set should throw error
[ok]: SDIFFSTORE should handle non existing key as empty
[ok]: SINTER against non-set should throw error
[ok]: SINTER against non-set should throw error
[ok]: SINTER should handle non existing key as empty
[ok]: SINTER with same integer elements but different encoding
[ok]: BRPOP: timeout
[ok]: BRPOP: arguments are empty
[ok]: BLPOP inside a transaction
[ok]: LPUSHX, RPUSHX - generic
[ok]: LPUSHX, RPUSHX - linkedlist
[ok]: LINSERT - linkedlist
[ok]: LPUSHX, RPUSHX - ziplist
[ok]: LINSERT - ziplist
[ok]: LINSERT raise error on bad syntax
[ok]: LINSERT raise error on bad syntax
[ok]: SINTERSTORE against non-set should throw error
[ok]: SINTERSTORE against non-set should throw error
[ok]: SINTERSTORE against non existing keys should delete dstkey
[ok]: SUNION against non-set should throw error
[ok]: SUNION against non-set should throw error
[ok]: SUNION should handle non existing key as empty
[ok]: SUNIONSTORE against non-set should throw error
[ok]: SUNIONSTORE against non-set should throw error
[ok]: SUNIONSTORE should handle non existing key as empty
[ok]: SUNIONSTORE against non existing keys should delete dstkey
[ok]: SPOP basics - hashtable
[ok]: LINDEX consistency test - quicklist
[ok]: SPOP with <count>=1 - hashtable
[ok]: MULTI propagation of SCRIPT LOAD
[ok]: SRANDMEMBER - hashtable
[ok]: SPOP basics - intset
[ok]: SPOP with <count>=1 - intset
[ok]: LINDEX random access - quicklist
[ok]: SRANDMEMBER - intset
[ok]: SPOP with <count>
[ok]: SPOP with <count>
[ok]: SPOP using integers, testing Knuth's and Floyd's algorithm
[ok]: SPOP using integers with Knuth's algorithm
[ok]: SPOP new implementation: code path #1
[ok]: SPOP new implementation: code path #2
[ok]: SPOP new implementation: code path #3
[ok]: SRANDMEMBER count of 0 is handled correctly
[ok]: SRANDMEMBER with <count> against non existing key
[ok]: SRANDMEMBER count overflow
[ok]: SRANDMEMBER count of 0 is handled correctly - emptyarray
[ok]: SRANDMEMBER with <count> against non existing key - emptyarray
[ok]: SRANDMEMBER with <count> - hashtable
[ok]: Check if list is still ok after a DEBUG RELOAD - quicklist
[ok]: SRANDMEMBER with <count> - intset
[ok]: MULTI propagation of SCRIPT LOAD
[ok]: XREVRANGE returns the reverse of XRANGE
[ok]: SRANDMEMBER histogram distribution - hashtable
[ok]: ZDIFF fuzzing - ziplist
[ok]: XRANGE exclusive ranges
[ok]: XREAD with non empty stream
[ok]: Non blocking XREAD with empty streams
[ok]: XREAD with non empty second stream
[ok]: MULTI propagation of XREADGROUP
[ok]: Blocking XREAD waiting new data
[ok]: Blocking XREAD waiting old data
[ok]: Basic ZPOP with a single key - ziplist
[ok]: ZPOP with count - ziplist
[ok]: BZPOP with a single existing sorted set - ziplist
[ok]: BZPOP with multiple existing sorted sets - ziplist
[ok]: Blocking XREAD will not reply with an empty array
[ok]: XREAD: XADD + DEL should not awake client
[ok]: BZPOP second sorted set has members - ziplist
[ok]: XREAD: XADD + DEL + LPUSH should not awake client
[ok]: XREAD with same stream name multiple times should work
[ok]: XREAD + multiple XADD inside transaction
[ok]: Basic ZPOP - ziplist RESP3
[ok]: XDEL basic test
[ok]: ZPOP with count - ziplist RESP3
[ok]: BZPOP - ziplist RESP3
[ok]: Check encoding - skiplist
@@ -574,6 +794,7 @@
[ok]: ZADD NX only add new elements without updating old ones - skiplist
[ok]: ZADD GT and NX are not compatible - skiplist
[ok]: ZADD LT and NX are not compatible - skiplist
[ok]: SRANDMEMBER histogram distribution - intset
[ok]: ZADD LT and GT are not compatible - skiplist
[ok]: ZADD INCR LT/GT replies with nill if score not updated - skiplist
[ok]: ZADD INCR LT/GT with inf - skiplist
@@ -611,13 +832,13 @@
[ok]: ZRANGEBYLEX with invalid lex range specifiers - skiplist
[ok]: ZREMRANGEBYSCORE basics - skiplist
[ok]: ZREMRANGEBYSCORE with non-value min or max - skiplist
[ok]: SCAN regression test for issue #4906
[ok]: ZREMRANGEBYRANK basics - skiplist
[ok]: ZUNIONSTORE against non-existing key doesn't set destination - skiplist
[ok]: ZUNION/ZINTER/ZDIFF against non-existing key - skiplist
[ok]: ZUNIONSTORE with empty set - skiplist
[ok]: ZUNION/ZINTER/ZDIFF with empty set - skiplist
[ok]: ZUNIONSTORE basics - skiplist
[ok]: LINDEX consistency test - quicklist
[ok]: ZUNION/ZINTER/ZDIFF with integer members - skiplist
[ok]: ZUNIONSTORE with weights - skiplist
[ok]: ZUNION with weights - skiplist
@@ -634,6 +855,7 @@
[ok]: ZINTERSTORE with a regular set and weights - skiplist
[ok]: ZINTERSTORE with AGGREGATE MIN - skiplist
[ok]: ZINTERSTORE with AGGREGATE MAX - skiplist
[10/66 done]: unit/multi ()
[ok]: ZUNIONSTORE with +inf/-inf scores - skiplist
[ok]: ZUNIONSTORE with NaN weights - skiplist
[ok]: ZINTERSTORE with +inf/-inf scores - skiplist
@@ -644,286 +866,24 @@
[ok]: ZDIFF subtracting set from itself - skiplist
[ok]: ZDIFF algorithm 1 - skiplist
[ok]: ZDIFF algorithm 2 - skiplist
[8/66 done]: unit/scan ()
[ok]: MULTI and script timeout
[ok]: XRANGE can be used to iterate the whole stream
[ok]: Connections start with the default user
[ok]: It is possible to create new users
[ok]: New users start disabled
[ok]: Enabling the user allows the login
[ok]: Only the set of correct passwords work
[ok]: It is possible to remove passwords from the set of valid ones
[ok]: Test password hashes can be added
[ok]: Test password hashes validate input
[ok]: ACL GETUSER returns the password hash instead of the actual password
[ok]: Test hashed passwords removal
[ok]: By default users are not able to access any command
[ok]: By default users are not able to access any key
[ok]: It's possible to allow the access of a subset of keys
[ok]: By default users are able to publish to any channel
[ok]: By default users are able to subscribe to any channel
[ok]: By default users are able to subscribe to any pattern
[ok]: It's possible to allow publishing to a subset of channels
[ok]: Validate subset of channels is prefixed with resetchannels flag
[ok]: In transaction queue publish/subscribe/psubscribe to unauthorized channel will fail
[ok]: It's possible to allow subscribing to a subset of channels
[ok]: It's possible to allow subscribing to a subset of channel patterns
[ok]: Subscribers are killed when revoked of channel permission
[ok]: Subscribers are killed when revoked of pattern permission
[ok]: Subscribers are killed when revoked of allchannels permission
[ok]: Subscribers are pardoned if literal permissions are retained and/or gaining allchannels
[ok]: Subscribers are pardoned if literal permissions are retained and/or gaining allchannels
[ok]: Users can be configured to authenticate with any password
[ok]: ACLs can exclude single commands
[ok]: ACLs can include or exclude whole classes of commands
[ok]: ACLs can include single subcommands
[ok]: ACLs set can include subcommands, if already full command exists
[ok]: ACL GETUSER is able to translate back command permissions
[ok]: ACL GETUSER provides reasonable results
[ok]: ACL #5998 regression: memory leaks adding / removing subcommands
[ok]: ACL LOG shows failed command executions at toplevel
[ok]: ACL LOG is able to test similar events
[ok]: ACL LOG is able to log keys access violations and key name
[ok]: ACL LOG is able to log channel access violations and channel name
[ok]: ACL LOG RESET is able to flush the entries in the log
[ok]: ACL LOG can distinguish the transaction context (1)
[ok]: ACL LOG can distinguish the transaction context (2)
[ok]: ACL can log errors in the context of Lua scripting
[ok]: ACL can log errors in the context of Lua scripting
[ok]: ACL LOG can accept a numerical argument to show less entries
[ok]: ACL LOG can log failed auth attempts
[ok]: ACL LOG entries are limited to a maximum amount
[ok]: When default user is off, new connections are not authenticated
[ok]: When default user has no command permission, hello command still works for other users
[ok]: ACL HELP should not have unexpected options
[ok]: Delete a user that the client doesn't use
[ok]: Delete a user that the client is using
[ok]: Hash fuzzing #2 - 512 fields
[ok]: default: load from include file, can access any channels
[ok]: default: with config acl-pubsub-default allchannels after reset, can access any channels
[ok]: default: with config acl-pubsub-default resetchannels after reset, can not access any channels
[ok]: EXEC and script timeout
[ok]: Alice: can execute all command
[ok]: Bob: just execute @set and acl command
[ok]: ACL load and save
[ok]: ACL load and save with restricted channels
[ok]: SETNX against expired volatile key
[ok]: GETEX EX option
[ok]: GETEX PX option
[ok]: GETEX EXAT option
[ok]: GETEX PXAT option
[ok]: GETEX PERSIST option
[ok]: GETEX no option
[ok]: GETEX syntax errors
[ok]: GETEX syntax errors
[ok]: GETEX no arguments
[ok]: GETDEL command
[ok]: GETDEL propagate as DEL command to replica
[ok]: BLPOP: timeout
[ok]: BLPOP: arguments are empty
[ok]: BRPOP: with single empty list argument
[ok]: BRPOP: with negative timeout
[ok]: BRPOP: with non-integer timeout
[ok]: Default user has access to all channels irrespective of flag
[ok]: Update acl-pubsub-default, existing users shouldn't get affected
[ok]: Single channel is valid
[ok]: Single channel is not valid with allchannels
[ok]: Old Big Linked list: SORT BY key
[ok]: Old Big Linked list: SORT BY key with limit
[ok]: SETEX - Wait for the key to expire
[ok]: SETEX - Wrong time parameter
[ok]: PERSIST can undo an EXPIRE
[ok]: PERSIST returns 0 against non existing or non volatile keys
[ok]: GETEX without argument does not propagate to replica
[ok]: MGET
[ok]: MGET against non existing key
[ok]: MGET against non-string key
[ok]: GETSET (set new value)
[ok]: GETSET (replace old value)
[ok]: MSET base case
[ok]: MSET wrong number of args
[ok]: MSETNX with already existent key
[ok]: MSETNX with not existing keys
[ok]: STRLEN against non-existing key
[ok]: STRLEN against integer-encoded value
[ok]: STRLEN against plain string
[ok]: SETBIT against non-existing key
[ok]: SETBIT against string-encoded key
[ok]: SETBIT against integer-encoded key
[ok]: SETBIT against key with wrong type
[ok]: SETBIT with out of range bit offset
[ok]: SETBIT with non-bit argument
[ok]: BGSAVE
[ok]: SELECT an out of range DB
[ok]: Consumer without PEL is present in AOF after AOFRW
[ok]: MULTI-EXEC body and script timeout
[ok]: Only default user has access to all channels irrespective of flag
[ok]: just EXEC and script timeout
[ok]: exec with write commands and state change
[ok]: exec with read commands and stale replica state change
[ok]: EXEC with only read commands should not be rejected when OOM
[ok]: Old Big Linked list: SORT BY hash field
[ok]: EXEC with at least one use-memory command should fail
[ok]: Blocking commands ignores the timeout
[ok]: Consumer group last ID propagation to slave (NOACK=0)
[ok]: Intset: SORT BY key
[ok]: Intset: SORT BY key with limit
[ok]: Intset: SORT BY hash field
[ok]: default: load from config file, can access any channels
[ok]: MULTI propagation of PUBLISH
[ok]: Consumer group last ID propagation to slave (NOACK=1)
[ok]: MULTI propagation of SCRIPT LOAD
[9/66 done]: unit/acl ()
[ok]: MULTI propagation of SCRIPT LOAD
[ok]: MULTI propagation of XREADGROUP
[ok]: BRPOP: with zero timeout should block indefinitely
[ok]: BRPOP: second argument is not a list
[ok]: Hash table: SORT BY key
[ok]: Hash table: SORT BY key with limit
[ok]: Hash table: SORT BY hash field
[ok]: XREVRANGE returns the reverse of XRANGE
[ok]: XRANGE exclusive ranges
[ok]: XREAD with non empty stream
[ok]: Non blocking XREAD with empty streams
[ok]: XREAD with non empty second stream
[ok]: Blocking XREAD waiting new data
[ok]: Blocking XREAD waiting old data
[10/66 done]: unit/multi ()
[ok]: Blocking XREAD will not reply with an empty array
[ok]: XREAD: XADD + DEL should not awake client
[ok]: XREAD: XADD + DEL + LPUSH should not awake client
[ok]: XREAD with same stream name multiple times should work
[ok]: XREAD + multiple XADD inside transaction
[ok]: XDEL basic test
[ok]: SETBIT fuzzing
[ok]: GETBIT against non-existing key
[ok]: GETBIT against string-encoded key
[ok]: GETBIT against integer-encoded key
[ok]: SETRANGE against non-existing key
[ok]: SETRANGE against string-encoded key
[ok]: SETRANGE against integer-encoded key
[ok]: SETRANGE against key with wrong type
[ok]: SETRANGE with out of range offset
[ok]: GETRANGE against non-existing key
[ok]: GETRANGE against string value
[ok]: GETRANGE against integer-encoded value
[ok]: Check consistency of different data types after a reload
[ok]: SDIFF fuzzing
[ok]: SDIFF against non-set should throw error
[ok]: SDIFF against non-set should throw error
[ok]: SDIFF should handle non existing key as empty
[ok]: SDIFFSTORE against non-set should throw error
[ok]: SDIFFSTORE against non-set should throw error
[ok]: SDIFFSTORE should handle non existing key as empty
[ok]: SINTER against non-set should throw error
[ok]: SINTER against non-set should throw error
[ok]: SINTER should handle non existing key as empty
[ok]: SINTER with same integer elements but different encoding
[ok]: SINTERSTORE against non-set should throw error
[ok]: SINTERSTORE against non-set should throw error
[ok]: SINTERSTORE against non existing keys should delete dstkey
[ok]: SUNION against non-set should throw error
[ok]: SUNION against non-set should throw error
[ok]: SUNION should handle non existing key as empty
[ok]: SUNIONSTORE against non-set should throw error
[ok]: SUNIONSTORE against non-set should throw error
[ok]: SUNIONSTORE should handle non existing key as empty
[ok]: SUNIONSTORE against non existing keys should delete dstkey
[ok]: SPOP basics - hashtable
[ok]: SPOP with <count>=1 - hashtable
[ok]: SRANDMEMBER - hashtable
[ok]: SPOP basics - intset
[ok]: SPOP with <count>=1 - intset
[ok]: SRANDMEMBER - intset
[ok]: SPOP with <count>
[ok]: SPOP with <count>
[ok]: SPOP using integers, testing Knuth's and Floyd's algorithm
[ok]: SPOP using integers with Knuth's algorithm
[ok]: SPOP new implementation: code path #1
[ok]: SPOP new implementation: code path #2
[ok]: SPOP new implementation: code path #3
[ok]: SRANDMEMBER count of 0 is handled correctly
[ok]: SRANDMEMBER with <count> against non existing key
[ok]: SRANDMEMBER count overflow
[ok]: SRANDMEMBER count of 0 is handled correctly - emptyarray
[ok]: SRANDMEMBER with <count> against non existing key - emptyarray
[ok]: SRANDMEMBER with <count> - hashtable
[ok]: SRANDMEMBER with <count> - intset
[ok]: SRANDMEMBER histogram distribution - hashtable
[ok]: SRANDMEMBER histogram distribution - intset
[ok]: SMOVE basics - from regular set to intset
[ok]: SMOVE basics - from intset to regular set
[ok]: SMOVE non existing key
[ok]: SMOVE non existing src set
[ok]: SMOVE from regular set to non existing destination set
[ok]: SMOVE from intset to non existing destination set
[ok]: SMOVE wrong src key type
[ok]: SMOVE wrong dst key type
[ok]: SMOVE with identical source and destination
[ok]: SMOVE only notify dstset when the addition is successful
[ok]: Empty stream with no lastid can be rewrite into AOF correctly
[ok]: EXPIRE precision is now the millisecond
[ok]: LINDEX random access - quicklist
[ok]: Stress test the hash ziplist -> hashtable encoding conversion
[ok]: Hash ziplist of various encodings
[ok]: Hash ziplist of various encodings - sanitize dump
[ok]: HINCRBYFLOAT does not allow NaN or Infinity
[ok]: BRPOP: timeout
[ok]: BRPOP: arguments are empty
[ok]: BLPOP inside a transaction
[ok]: LPUSHX, RPUSHX - generic
[ok]: LPUSHX, RPUSHX - linkedlist
[ok]: LINSERT - linkedlist
[ok]: LPUSHX, RPUSHX - ziplist
[ok]: LINSERT - ziplist
[ok]: LINSERT raise error on bad syntax
[ok]: LINSERT raise error on bad syntax
[ok]: LINDEX consistency test - quicklist
[ok]: LINDEX random access - quicklist
[ok]: First server should have role slave after SLAVEOF
[11/66 done]: unit/type/hash ()
[ok]: Check if list is still ok after a DEBUG RELOAD - quicklist
[ok]: Same dataset digest if saving/reloading as AOF?
[ok]: Slave enters handshake
[12/66 done]: unit/type/stream-cgroups ()
[ok]: LINDEX consistency test - quicklist
[ok]: LINDEX random access - quicklist
[ok]: GETRANGE fuzzing
[ok]: trim on SET with big value
[ok]: Extended SET can detect syntax errors
[ok]: Extended SET can detect syntax errors
[ok]: Extended SET NX option
[ok]: Extended SET XX option
[ok]: Extended SET GET option
[ok]: Extended SET GET option with no previous value
[ok]: Extended SET GET with NX option should result in syntax err
[ok]: Extended SET GET with NX option should result in syntax err
[ok]: Extended SET GET with incorrect type should result in wrong type error
[ok]: Extended SET GET with incorrect type should result in wrong type error
[ok]: Extended SET EX option
[ok]: Extended SET PX option
[ok]: Extended SET EXAT option
[ok]: Extended SET PXAT option
[ok]: Extended SET using multiple options at once
[ok]: GETRANGE with huge ranges, Github issue #1844
[ok]: Check if list is still ok after a DEBUG RELOAD - quicklist
[ok]: STRALGO LCS string output with STRINGS option
[ok]: LLEN against non-list value error
[ok]: LLEN against non-list value error
[ok]: LLEN against non existing key
[ok]: STRALGO LCS len
[ok]: LINDEX against non-list value error
[ok]: LINDEX against non-list value error
[ok]: LINDEX against non existing key
[ok]: LPUSH against non-list value error
[ok]: LPUSH against non-list value error
[ok]: LCS with KEYS option
[ok]: RPUSH against non-list value error
[ok]: RPUSH against non-list value error
[ok]: LCS indexes
[ok]: RPOPLPUSH base case - linkedlist
[ok]: LCS indexes with match len
[ok]: LCS indexes with match len and minimum match len
[ok]: SETRANGE with huge offset
[ok]: LMOVE left left base case - linkedlist
[ok]: LMOVE left right base case - linkedlist
[ok]: LMOVE right left base case - linkedlist
@@ -958,11 +918,6 @@
[ok]: LMOVE left right with ziplist source and existing target linkedlist
[ok]: LMOVE right left with ziplist source and existing target linkedlist
[ok]: LMOVE right right with ziplist source and existing target linkedlist
[ok]: PEXPIRE/PSETEX/PEXPIREAT can set sub-second expires
[ok]: TTL returns time to live in
[ok]: PTTL returns time to live in milliseconds
[ok]: TTL / PTTL return -1 if key has no expire
[ok]: TTL / PTTL return -2 if key does not exit
[ok]: RPOPLPUSH with ziplist source and existing target ziplist
[ok]: LMOVE left left with ziplist source and existing target ziplist
[ok]: LMOVE left right with ziplist source and existing target ziplist
@@ -975,8 +930,32 @@
[ok]: Basic LPOP/RPOP - linkedlist
[ok]: Basic LPOP/RPOP - ziplist
[ok]: LPOP/RPOP against non list value
[ok]: Check consistency of different data types after a reload
[ok]: Mass RPOP/LPOP - quicklist
[13/66 done]: unit/type/string ()
[ok]: Slave enters handshake
[ok]: GETRANGE fuzzing
[ok]: Extended SET can detect syntax errors
[ok]: Extended SET can detect syntax errors
[ok]: Extended SET NX option
[ok]: Extended SET XX option
[ok]: Extended SET GET option
[ok]: Extended SET GET option with no previous value
[ok]: Extended SET GET with NX option should result in syntax err
[ok]: Extended SET GET with NX option should result in syntax err
[ok]: Extended SET GET with incorrect type should result in wrong type error
[ok]: Extended SET GET with incorrect type should result in wrong type error
[ok]: Extended SET EX option
[ok]: Extended SET PX option
[ok]: Extended SET EXAT option
[ok]: Extended SET PXAT option
[ok]: Extended SET using multiple options at once
[ok]: GETRANGE with huge ranges, Github issue #1844
[ok]: STRALGO LCS string output with STRINGS option
[ok]: STRALGO LCS len
[ok]: LCS with KEYS option
[ok]: LCS indexes
[ok]: LCS indexes with match len
[ok]: LCS indexes with match len and minimum match len
[ok]: Mass RPOP/LPOP - quicklist
[ok]: LRANGE basics - linkedlist
[ok]: LRANGE inverted indexes - linkedlist
@@ -984,16 +963,14 @@
[ok]: LRANGE out of range negative end index - linkedlist
[ok]: LRANGE basics - ziplist
[ok]: LRANGE inverted indexes - ziplist
[ok]: First server should have role slave after SLAVEOF
[ok]: LRANGE out of range indexes including the full list - ziplist
[ok]: LRANGE out of range negative end index - ziplist
[ok]: LRANGE against non existing key
[ok]: LRANGE with start > end yields an empty array for backward compatibility
[ok]: If min-slaves-to-write is honored, write is accepted
[ok]: No write if min-slaves-to-write is < attached slaves
[ok]: LTRIM basics - linkedlist
[ok]: LTRIM out of range negative end index - linkedlist
[ok]: LTRIM basics - ziplist
[ok]: SETRANGE with huge offset
[ok]: LTRIM out of range negative end index - ziplist
[ok]: LSET - linkedlist
[ok]: LSET out of range index - linkedlist
@@ -1013,28 +990,106 @@
[ok]: LREM starting from tail with negative count - ziplist
[ok]: LREM starting from tail with negative count (2) - ziplist
[ok]: LREM deleting objects that may be int encoded - ziplist
[12/66 done]: unit/type/string ()
[ok]: EXPIRE precision is now the millisecond
[ok]: Empty stream with no lastid can be rewrite into AOF correctly
[13/66 done]: unit/type/stream-cgroups ()
[ok]: LTRIM stress testing - linkedlist
[ok]: First server should have role slave after SLAVEOF
[ok]: If min-slaves-to-write is honored, write is accepted
[ok]: No write if min-slaves-to-write is < attached slaves
[ok]: If min-slaves-to-write is honored, write is accepted (again)
[ok]: First server should have role slave after SLAVEOF
[ok]: EXPIRES after a reload (snapshot + append only file rewrite)
[ok]: Redis should actively expire keys incrementally
[ok]: XDEL fuzz test
[ok]: First server should have role slave after SLAVEOF
[ok]: PEXPIRE/PSETEX/PEXPIREAT can set sub-second expires
[ok]: TTL returns time to live in
[ok]: PTTL returns time to live in milliseconds
[ok]: TTL / PTTL return -1 if key has no expire
[ok]: TTL / PTTL return -2 if key does not exit
[ok]: Same dataset digest if saving/reloading as AOF?
[ok]: Regression for bug 593 - chaining BRPOPLPUSH with other blocking cmds
[ok]: client unblock tests
[ok]: List ziplist of various encodings
[ok]: List ziplist of various encodings - sanitize dump
[ok]: intsets implementation stress testing
[14/66 done]: unit/type/list ()
[15/66 done]: unit/type/set ()
[ok]: Big Hash table: SORT BY key
[ok]: Big Hash table: SORT BY key with limit
[ok]: XDEL fuzz test
[ok]: Redis should actively expire keys incrementally
[ok]: EXPIRES after a reload (snapshot + append only file rewrite)
[ok]: Big Hash table: SORT BY hash field
[ok]: SORT GET #
[ok]: SORT GET <const>
[ok]: SORT GET (key and hash) with sanity check
[ok]: SORT BY key STORE
[ok]: SORT BY hash field STORE
[ok]: SORT extracts STORE correctly
[ok]: SORT extracts multiple STORE correctly
[ok]: SORT DESC
[ok]: SORT ALPHA against integer encoded strings
[ok]: SORT sorted set
[ok]: SORT sorted set BY nosort should retain ordering
[ok]: SORT sorted set BY nosort + LIMIT
[ok]: SORT sorted set BY nosort works as expected from scripts
[ok]: SORT sorted set: +inf and -inf handling
[ok]: SORT regression for issue #19, sorting floats
[ok]: SORT with STORE returns zero if result is empty (github issue 224)
[ok]: SORT with STORE does not create empty lists (github issue 224)
[ok]: SORT with STORE removes key if result is empty (github issue 227)
[ok]: SORT with BY <constant> and STORE should still order output
[ok]: SORT will complain with numerical sorting and bad doubles (1)
[ok]: SORT will complain with numerical sorting and bad doubles (2)
[ok]: SORT BY sub-sorts lexicographically if score is the same
[ok]: SORT GET with pattern ending with just -> does not get hash field
[ok]: SORT by nosort retains native order for lists
[ok]: SORT by nosort plus store retains native order for lists
[ok]: SORT by nosort with limit returns based on original list order
[ok]: Test latency events logging
[ok]: LATENCY HISTORY output is ok
[ok]: LATENCY LATEST output is ok
[ok]: LATENCY HISTORY / RESET with wrong event name is fine
[ok]: LATENCY DOCTOR produces some output
[ok]: LATENCY RESET is able to reset events
[ok]: Slave should be able to synchronize with the master
[ok]: SORT speed, 100 element list BY key, 100 times
[ok]: First server should have role slave after SLAVEOF
[ok]: SORT speed, 100 element list BY hash field, 100 times
[ok]: SORT speed, 100 element list directly, 100 times
[ok]: SORT speed, 100 element list BY <const>, 100 times
[ok]: SETRANGE with huge offset
[15/66 done]: unit/sort ()
[ok]: Redis should lazy expire keys
[ok]: Slave should be able to synchronize with the master
[ok]: EXPIRE should not resurrect keys (issue #1026)
[ok]: 5 keys in, 5 keys out
[ok]: EXPIRE with empty string as TTL should report an error
[ok]: EXPIRE with empty string as TTL should report an error
[ok]: SET with EX with big integer should report an error
[ok]: SET with EX with big integer should report an error
[ok]: SET with EX with smallest integer should report an error
[ok]: SET with EX with smallest integer should report an error
[ok]: GETEX with big integer should report an error
[ok]: GETEX with big integer should report an error
[ok]: GETEX with smallest integer should report an error
[ok]: GETEX with smallest integer should report an error
[ok]: EXPIRE with big integer overflows when converted to milliseconds
[ok]: PEXPIRE with big integer overflow when basetime is added
[ok]: EXPIRE with big negative integer
[ok]: PEXPIREAT with big integer works
[ok]: PEXPIREAT with big negative integer works
[ok]: Detect write load to master
[ok]: Test replication partial resync: no reconnection, just sync (diskless: no, disabled, reconnect: 0)
[ok]: No write if min-slaves-max-lag is > of the slave lag
[ok]: min-slaves-to-write is ignored by slaves
[ok]: Slave should be able to synchronize with the master
[ok]: EXPIRES after AOF reload (without rewrite)
[ok]: Detect write load to master
[ok]: EXPIRE and SET/GETEX EX/PX/EXAT/PXAT option, TTL should not be reset after loadaof
[ok]: EXPIRE relative and absolute propagation to replicas
[ok]: SET command will remove expire
[ok]: SET - use KEEPTTL option, TTL should not be removed
[ok]: PIPELINING stresser (also a regression for the old epoll bug)
[ok]: APPEND basics
[ok]: APPEND basics, integer encoded values
[ok]: ZDIFF fuzzing - skiplist
[ok]: Basic ZPOP with a single key - skiplist
[ok]: ZPOP with count - skiplist
@@ -1057,100 +1112,9 @@
[ok]: ZMSCORE retrieve requires one or more members
[ok]: ZSET commands don't accept the empty strings as valid score
[ok]: ZSCORE - ziplist
[ok]: Big Hash table: SORT BY hash field
[ok]: SORT GET #
[ok]: SORT GET <const>
[ok]: SORT GET (key and hash) with sanity check
[ok]: SORT BY key STORE
[ok]: SORT BY hash field STORE
[ok]: SORT extracts STORE correctly
[ok]: SORT extracts multiple STORE correctly
[ok]: SORT DESC
[ok]: SORT ALPHA against integer encoded strings
[ok]: SORT sorted set
[ok]: SORT sorted set BY nosort should retain ordering
[ok]: SORT sorted set BY nosort + LIMIT
[ok]: SORT sorted set BY nosort works as expected from scripts
[ok]: SORT sorted set: +inf and -inf handling
[ok]: ZMSCORE - ziplist
[ok]: SORT regression for issue #19, sorting floats
[ok]: SORT with STORE returns zero if result is empty (github issue 224)
[ok]: SORT with STORE does not create empty lists (github issue 224)
[ok]: SORT with STORE removes key if result is empty (github issue 227)
[ok]: LTRIM stress testing - linkedlist
[ok]: SORT with BY <constant> and STORE should still order output
[ok]: SORT will complain with numerical sorting and bad doubles (1)
[ok]: SORT will complain with numerical sorting and bad doubles (2)
[ok]: SORT BY sub-sorts lexicographically if score is the same
[ok]: SORT GET with pattern ending with just -> does not get hash field
[ok]: SORT by nosort retains native order for lists
[ok]: SORT by nosort plus store retains native order for lists
[ok]: SORT by nosort with limit returns based on original list order
[ok]: ZSCORE after a DEBUG RELOAD - ziplist
[ok]: SORT speed, 100 element list BY key, 100 times
[ok]: ZSET sorting stresser - ziplist
[ok]: SORT speed, 100 element list BY hash field, 100 times
[ok]: SORT speed, 100 element list directly, 100 times
[ok]: SORT speed, 100 element list BY <const>, 100 times
[ok]: SETRANGE with huge offset
[ok]: First server should have role slave after SLAVEOF
[16/66 done]: unit/sort ()
[ok]: Unfinished MULTI: Server should start if load-truncated is yes
[ok]: Short read: Server should start if load-truncated is yes
[ok]: Truncated AOF loaded: we expect foo to be equal to 5
[ok]: Append a new command after loading an incomplete AOF
[ok]: Detect write load to master
[ok]: Test replication partial resync: no reconnection, just sync (diskless: no, disabled, reconnect: 0)
[ok]: No write if min-slaves-max-lag is > of the slave lag
[ok]: min-slaves-to-write is ignored by slaves
[ok]: EXPIRE should not resurrect keys (issue #1026)
[ok]: 5 keys in, 5 keys out
[ok]: EXPIRE with empty string as TTL should report an error
[ok]: EXPIRE with empty string as TTL should report an error
[ok]: SET with EX with big integer should report an error
[ok]: SET with EX with big integer should report an error
[ok]: SET with EX with smallest integer should report an error
[ok]: SET with EX with smallest integer should report an error
[ok]: GETEX with big integer should report an error
[ok]: GETEX with big integer should report an error
[ok]: GETEX with smallest integer should report an error
[ok]: GETEX with smallest integer should report an error
[ok]: EXPIRE with big integer overflows when converted to milliseconds
[ok]: PEXPIRE with big integer overflow when basetime is added
[ok]: EXPIRE with big negative integer
[ok]: PEXPIREAT with big integer works
[ok]: PEXPIREAT with big negative integer works
[ok]: Short read + command: Server should start
[ok]: Truncated AOF loaded: we expect foo to be equal to 6 now
[ok]: Bad format: Server should have logged an error
[ok]: Bad format: Server should have logged an error
[ok]: Unfinished MULTI: Server should have logged an error
[ok]: Unfinished MULTI: Server should have logged an error
[ok]: EXPIRES after AOF reload (without rewrite)
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: Short read: Server should have logged an error
[ok]: Short read: Server should have logged an error
[ok]: Short read: Utility should confirm the AOF is not valid
[ok]: Short read: Utility should show the abnormal line num in AOF
[ok]: Short read: Utility should be able to fix the AOF
[ok]: Fixed AOF: Server should have been started
[ok]: Fixed AOF: Keyspace should contain values that were parseable
[ok]: AOF+SPOP: Server should have been started
[ok]: AOF+SPOP: Set should have 1 member
[ok]: AOF+SPOP: Server should have been started
[ok]: AOF+SPOP: Set should have 1 member
[ok]: AOF+EXPIRE: Server should have been started
[ok]: AOF+EXPIRE: List should be empty
[ok]: Redis should not try to convert DEL into EXPIREAT for EXPIRE -1
[ok]: EXPIRE and SET/GETEX EX/PX/EXAT/PXAT option, TTL should not be reset after loadaof
[ok]: EXPIRE relative and absolute propagation to replicas
[ok]: SET command will remove expire
[ok]: SET - use KEEPTTL option, TTL should not be removed
[ok]: PIPELINING stresser (also a regression for the old epoll bug)
[ok]: APPEND basics
[ok]: APPEND basics, integer encoded values
[ok]: APPEND fuzzing
[ok]: ziplist implementation: encoding stress testing
[ok]: FLUSHDB
[ok]: Perform a final SAVE to leave a clean DB on disk
[ok]: RESET clears client state
@@ -1158,156 +1122,252 @@
[ok]: RESET clears and discards MULTI state
[ok]: RESET clears Pub/Sub state
[ok]: RESET clears authenticated state
[ok]: ZSCORE after a DEBUG RELOAD - ziplist
[ok]: ZSET sorting stresser - ziplist
[16/66 done]: unit/type/list-3 ()
[ok]: Unfinished MULTI: Server should start if load-truncated is yes
[ok]: Short read: Server should start if load-truncated is yes
[ok]: Truncated AOF loaded: we expect foo to be equal to 5
[ok]: Append a new command after loading an incomplete AOF
[ok]: Don't rehash if redis has child proecess
[ok]: Process title set as expected
[17/66 done]: unit/other ()
[ok]: RDB encoding loading test
[ok]: ziplist implementation: encoding stress testing
[ok]: Server started empty with non-existing RDB file
[ok]: Test replication with parallel clients writing in different DBs
[ok]: LATENCY of expire events are correctly collected
[ok]: LATENCY HELP should not have unexpected options
[18/66 done]: unit/type/list-3 ()
[ok]: Server started empty with empty RDB file
[ok]: Short read + command: Server should start
[ok]: Truncated AOF loaded: we expect foo to be equal to 6 now
[17/66 done]: unit/latency-monitor ()
[ok]: Process title set as expected
[18/66 done]: unit/other ()
[ok]: Bad format: Server should have logged an error
[ok]: Bad format: Server should have logged an error
[ok]: Unfinished MULTI: Server should have logged an error
[ok]: Unfinished MULTI: Server should have logged an error
[ok]: RDB encoding loading test
[ok]: SET - use KEEPTTL option, TTL should not be removed after loadaof
[ok]: GETEX use of PERSIST option should remove TTL
[19/66 done]: unit/latency-monitor ()
[ok]: corrupt payload: #7445 - with sanitize
[ok]: ZRANGEBYSCORE fuzzy test, 100 ranges in 128 element sorted set - ziplist
[ok]: Test RDB stream encoding
[ok]: Test RDB stream encoding - sanitize dump
[ok]: corrupt payload: #7445 - without sanitize - 1
[ok]: corrupt payload: #7445 - without sanitize - 2
[ok]: Server should not start if RDB is corrupted
[ok]: ZRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - ziplist
[ok]: corrupt payload: hash with valid zip list header, invalid entry len
[ok]: Test replication with parallel clients writing in different DBs
[ok]: corrupt payload: invalid zlbytes header
[ok]: Test FLUSHALL aborts bgsave
[ok]: ZREMRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - ziplist
[ok]: bgsave resets the change counter
[ok]: ZSETs skiplist implementation backlink consistency test - ziplist
[ok]: corrupt payload: valid zipped hash header, dup records
[ok]: corrupt payload: quicklist big ziplist prev len
[ok]: First server should have role slave after SLAVEOF
[ok]: Short read: Server should have logged an error
[ok]: Short read: Server should have logged an error
[ok]: With min-slaves-to-write (1,3): master should be writable
[ok]: With min-slaves-to-write (2,3): master should not be writable
[ok]: With not enough good slaves, read in Lua script is still accepted
[ok]: Server started empty with non-existing RDB file
[ok]: Short read: Utility should confirm the AOF is not valid
[ok]: Short read: Utility should show the abnormal line num in AOF
[ok]: Short read: Utility should be able to fix the AOF
[ok]: Server started empty with empty RDB file
[ok]: Fixed AOF: Server should have been started
[ok]: Fixed AOF: Keyspace should contain values that were parseable
[ok]: corrupt payload: #7445 - without sanitize - 1
[ok]: AOF+SPOP: Server should have been started
[ok]: AOF+SPOP: Set should have 1 member
[ok]: corrupt payload: #7445 - without sanitize - 2
[ok]: Test RDB stream encoding
[ok]: Test RDB stream encoding - sanitize dump
[ok]: corrupt payload: hash with valid zip list header, invalid entry len
[ok]: AOF+SPOP: Server should have been started
[ok]: AOF+SPOP: Set should have 1 member
[ok]: Server should not start if RDB is corrupted
[ok]: corrupt payload: invalid zlbytes header
[ok]: corrupt payload: valid zipped hash header, dup records
[ok]: AOF+EXPIRE: Server should have been started
[ok]: AOF+EXPIRE: List should be empty
[ok]: Test FLUSHALL aborts bgsave
[ok]: bgsave resets the change counter
[ok]: corrupt payload: quicklist big ziplist prev len
[ok]: Redis should not try to convert DEL into EXPIREAT for EXPIRE -1
[ok]: corrupt payload: quicklist small ziplist prev len
[ok]: corrupt payload: quicklist ziplist wrong count
[ok]: ZRANGEBYSCORE fuzzy test, 100 ranges in 128 element sorted set - ziplist
[ok]: corrupt payload: #3080 - quicklist
[ok]: corrupt payload: quicklist with empty ziplist
[ok]: ZRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - ziplist
[ok]: Slave is able to detect timeout during handshake
[ok]: MIGRATE cached connections are released after some time
[ok]: GETEX use of PERSIST option should remove TTL after loadaof
[ok]: GETEX propagate as to replica as PERSIST, DEL, or nothing
[ok]: corrupt payload: #3080 - ziplist
[ok]: MASTER and SLAVE consistency with expire
[ok]: corrupt payload: load corrupted rdb with no CRC - #3505
[ok]: MIGRATE is able to migrate a key between two instances
[19/66 done]: unit/expire ()
[ok]: ZREMRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - ziplist
[ok]: ZSETs skiplist implementation backlink consistency test - ziplist
[ok]: MIGRATE is able to copy a key between two instances
[ok]: Set instance A as slave of B
[ok]: corrupt payload: load corrupted rdb with empty keys
[ok]: LTRIM stress testing - ziplist
[ok]: MIGRATE will not overwrite existing keys, unless REPLACE is used
[20/66 done]: unit/type/list-2 ()
[ok]: With min-slaves-to-write: master not writable with lagged slave
[ok]: corrupt payload: load corrupted rdb with empty keys
[ok]: RDB load zipmap hash: converts to ziplist
[ok]: MIGRATE propagates TTL correctly
[ok]: RDB load zipmap hash: converts to hash table when hash-max-ziplist-entries is exceeded
[ok]: corrupt payload: listpack invalid size header
[ok]: corrupt payload: listpack too long entry len
[ok]: ZSETs ZRANK augmented skip list stress testing - ziplist
[ok]: BZPOPMIN, ZADD + DEL should not awake blocked client
[ok]: BZPOPMIN, ZADD + DEL + SET should not awake blocked client
[ok]: BZPOPMIN with same key multiple times should work
[ok]: MULTI/EXEC is isolated from the point of view of BZPOPMIN
[ok]: BZPOPMIN with variadic ZADD
[ok]: corrupt payload: #3080 - quicklist
[ok]: corrupt payload: quicklist with empty ziplist
[ok]: GETEX use of PERSIST option should remove TTL after loadaof
[ok]: corrupt payload: #3080 - ziplist
[ok]: GETEX propagate as to replica as PERSIST, DEL, or nothing
[ok]: corrupt payload: load corrupted rdb with no CRC - #3505
[20/66 done]: unit/expire ()
[ok]: MIGRATE cached connections are released after some time
[ok]: RDB load zipmap hash: converts to ziplist
[ok]: corrupt payload: load corrupted rdb with empty keys
[ok]: MIGRATE is able to migrate a key between two instances
[ok]: RDB load zipmap hash: converts to hash table when hash-max-ziplist-entries is exceeded
[ok]: MASTER and SLAVE consistency with expire
[ok]: Slave is able to detect timeout during handshake
[ok]: BZPOPMIN with zero timeout should block indefinitely
[ok]: ZSCORE - skiplist
[ok]: ZMSCORE - skiplist
[ok]: corrupt payload: load corrupted rdb with empty keys
[ok]: ZSCORE after a DEBUG RELOAD - skiplist
[ok]: ZSET sorting stresser - skiplist
[ok]: MIGRATE is able to copy a key between two instances
[ok]: First server should have role slave after SLAVEOF
[ok]: RDB load zipmap hash: converts to hash table when hash-max-ziplist-value is exceeded
[ok]: Test replication partial resync: ok psync (diskless: no, disabled, reconnect: 1)
[ok]: corrupt payload: listpack invalid size header
[ok]: MIGRATE will not overwrite existing keys, unless REPLACE is used
[ok]: corrupt payload: listpack very long entry len
[21/66 done]: integration/convert-zipmap-hash-on-load ()
[22/66 done]: integration/logging ()
[ok]: corrupt payload: listpack too long entry len
[ok]: corrupt payload: listpack very long entry len
[ok]: MIGRATE propagates TTL correctly
[ok]: Slave should be able to synchronize with the master
[ok]: AOF fsync always barrier issue
[ok]: Set instance A as slave of B
[ok]: corrupt payload: listpack too long entry prev len
[ok]: MASTER and SLAVE dataset should be identical after complex ops
[ok]: corrupt payload: hash ziplist with duplicate records
[ok]: GETEX should not append to AOF
[ok]: PSYNC2: --- CYCLE 1 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #1 as master
[ok]: PSYNC2: Set #0 to replicate from #1
[23/66 done]: integration/replication-2 ()
[ok]: PSYNC2: Set #4 to replicate from #1
[ok]: PSYNC2: Set #3 to replicate from #4
[ok]: PSYNC2: Set #2 to replicate from #3
[24/66 done]: integration/aof ()
[ok]: corrupt payload: hash ziplist uneven record count
[ok]: With min-slaves-to-write: master not writable with lagged slave
[ok]: Detect write load to master
[ok]: LTRIM stress testing - ziplist
[ok]: INCRBYFLOAT replication, should not remove expire
[ok]: GETSET replication
[ok]: BRPOPLPUSH replication, when blocking against empty list
[25/66 done]: unit/type/list-2 ()
[ok]: ZRANGEBYSCORE fuzzy test, 100 ranges in 100 element sorted set - skiplist
[ok]: First server should have role slave after SLAVEOF
[ok]: ZRANGEBYLEX fuzzy test, 100 ranges in 100 element sorted set - skiplist
[ok]: corrupt payload: listpack too long entry prev len
[ok]: MASTER and SLAVE dataset should be identical after complex ops
[ok]: PSYNC2: --- CYCLE 1 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #1 as master
[ok]: PSYNC2: Set #0 to replicate from #1
[ok]: PSYNC2: Set #3 to replicate from #1
[ok]: PSYNC2: Set #2 to replicate from #1
[ok]: PSYNC2: Set #4 to replicate from #3
[ok]: corrupt payload: hash ziplist with duplicate records
[23/66 done]: integration/replication-2 ()
[ok]: Test replication partial resync: ok psync (diskless: no, disabled, reconnect: 1)
[ok]: corrupt payload: hash ziplist uneven record count
[ok]: BZPOPMIN with zero timeout should block indefinitely
[ok]: ZSCORE - skiplist
[ok]: corrupt payload: hash dupliacte records
[ok]: ZMSCORE - skiplist
[ok]: ZSCORE after a DEBUG RELOAD - skiplist
[ok]: ZSET sorting stresser - skiplist
[ok]: corrupt payload: hash empty zipmap
[ok]: BRPOPLPUSH replication, list exists
[ok]: BLMOVE (left, left) replication, when blocking against empty list
[ok]: corrupt payload: fuzzer findings - NPD in streamIteratorGetID
[ok]: Slave should be able to synchronize with the master
[ok]: corrupt payload: fuzzer findings - listpack NPD on invalid stream
[ok]: PSYNC2: cluster is consistent after failover
[ok]: failover command fails without connected replica
[ok]: corrupt payload: fuzzer findings - NPD in quicklistIndex
[ok]: corrupt payload: fuzzer findings - invalid read in ziplistFind
[ok]: corrupt payload: fuzzer findings - invalid ziplist encoding
[ok]: PSYNC2 #3899 regression: setup
[ok]: corrupt payload: fuzzer findings - hash crash
[ok]: SRANDMEMBER with a dict containing long chain
[ok]: SMOVE basics - from regular set to intset
[ok]: SMOVE basics - from intset to regular set
[ok]: SMOVE non existing key
[ok]: SMOVE non existing src set
[ok]: SMOVE from regular set to non existing destination set
[ok]: SMOVE from intset to non existing destination set
[ok]: SMOVE wrong src key type
[ok]: SMOVE wrong dst key type
[ok]: SMOVE with identical source and destination
[ok]: SMOVE only notify dstset when the addition is successful
[ok]: BLMOVE (left, left) replication, list exists
[ok]: BLMOVE (left, right) replication, when blocking against empty list
[ok]: corrupt payload: fuzzer findings - uneven entry count in hash
[ok]: Detect write load to master
[ok]: corrupt payload: fuzzer findings - invalid read in lzf_decompress
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: corrupt payload: fuzzer findings - leak in rdbloading due to dup entry in set
[ok]: corrupt payload: fuzzer findings - empty intset
[ok]: corrupt payload: fuzzer findings - valgrind ziplist - crash report prints freed memory
[ok]: corrupt payload: fuzzer findings - valgrind ziplist prevlen reaches outside the ziplist
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: BLMOVE (left, right) replication, list exists
[ok]: BLMOVE (right, left) replication, when blocking against empty list
[ok]: corrupt payload: fuzzer findings - valgrind - bad rdbLoadDoubleValue
[ok]: ZRANGEBYSCORE fuzzy test, 100 ranges in 100 element sorted set - skiplist
[ok]: AOF fsync always barrier issue
[ok]: corrupt payload: fuzzer findings - valgrind ziplist prev too big
[ok]: ZRANGEBYLEX fuzzy test, 100 ranges in 100 element sorted set - skiplist
[ok]: GETEX should not append to AOF
[ok]: corrupt payload: fuzzer findings - lzf decompression fails, avoid valgrind invalid read
[24/66 done]: integration/aof ()
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: ZREMRANGEBYLEX fuzzy test, 100 ranges in 100 element sorted set - skiplist
[ok]: corrupt payload: fuzzer findings - stream bad lp_count
[ok]: ZSETs skiplist implementation backlink consistency test - skiplist
[ok]: BLMOVE (right, left) replication, list exists
[ok]: BLMOVE (right, right) replication, when blocking against empty list
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: corrupt payload: fuzzer findings - stream bad lp_count - unsanitized
[ok]: intsets implementation stress testing
[25/66 done]: unit/type/set ()
[ok]: corrupt payload: fuzzer findings - stream integrity check issue
[ok]: corrupt payload: fuzzer findings - infinite loop
[ok]: Slave is able to evict keys created in writable slaves
[ok]: failover command fails without connected replica
[ok]: corrupt payload: fuzzer findings - hash convert asserts on RESTORE with shallow sanitization
[ok]: setup replication for following tests
[ok]: failover command fails with invalid host
[ok]: failover command fails with invalid port
[ok]: failover command fails with just force and timeout
[ok]: failover command fails when sent to a replica
[ok]: failover command fails with force without timeout
[ok]: corrupt payload: hash dupliacte records
[ok]: AOF rewrite during write load: RDB preamble=yes
[ok]: BRPOPLPUSH replication, list exists
[ok]: BLMOVE (left, left) replication, when blocking against empty list
[ok]: corrupt payload: hash empty zipmap
[ok]: corrupt payload: fuzzer findings - NPD in streamIteratorGetID
[ok]: corrupt payload: fuzzer findings - listpack NPD on invalid stream
[ok]: failover command to specific replica works
[ok]: corrupt payload: fuzzer findings - NPD in quicklistIndex
[ok]: corrupt payload: fuzzer findings - invalid read in ziplistFind
[ok]: PSYNC2 pingoff: setup
[ok]: PSYNC2 pingoff: write and wait replication
[ok]: BLMOVE (left, left) replication, list exists
[ok]: BLMOVE (left, right) replication, when blocking against empty list
[ok]: BLMOVE (right, right) replication, list exists
[ok]: corrupt payload: OOM in rdbGenericLoadStringObject
[ok]: AOF rewrite during write load: RDB preamble=yes
[ok]: BLPOP followed by role change, issue #2473
[ok]: ZSETs ZRANK augmented skip list stress testing - skiplist
[ok]: BZPOPMIN, ZADD + DEL should not awake blocked client
[ok]: BZPOPMIN, ZADD + DEL + SET should not awake blocked client
[ok]: BZPOPMIN with same key multiple times should work
[ok]: MULTI/EXEC is isolated from the point of view of BZPOPMIN
[ok]: BZPOPMIN with variadic ZADD
[ok]: PSYNC2 #3899 regression: setup
[ok]: corrupt payload: fuzzer findings - invalid ziplist encoding
[ok]: failover command to any replica works
[ok]: corrupt payload: fuzzer findings - hash crash
[ok]: failover to a replica with force works
[ok]: corrupt payload: fuzzer findings - uneven entry count in hash
[ok]: corrupt payload: fuzzer findings - invalid read in lzf_decompress
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: BLMOVE (left, right) replication, list exists
[ok]: BLMOVE (right, left) replication, when blocking against empty list
[ok]: First server should have role slave after SLAVEOF
[ok]: corrupt payload: fuzzer findings - OOM in dictExpand
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: corrupt payload: fuzzer findings - invalid tail offset after removal
[ok]: failover command to specific replica works
[ok]: XRANGE fuzzing
[ok]: Second server should have role master at first
[ok]: SLAVEOF should start with link status "down"
[ok]: XREVRANGE regression test for issue #5006
[ok]: The role should immediately be changed to "replica"
[ok]: XREAD streamID edge (no-blocking)
[ok]: XREAD streamID edge (blocking)
[ok]: XADD streamID edge
[ok]: corrupt payload: fuzzer findings - negative reply length
[ok]: Sync should have transferred keys from master
[ok]: Sync should have transferred keys from master
[ok]: The link status should be up
[ok]: SET on the master should immediately propagate
[ok]: FLUSHALL should replicate
[ok]: ROLE in master reports master with a slave
[ok]: ROLE in slave reports slave in connected state
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2: cluster is consistent after load (x = 47351)
[ok]: XTRIM with MAXLEN option basic test
[ok]: XADD with LIMIT consecutive calls
[ok]: XTRIM with ~ is limited
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: XTRIM without ~ is not limited
[ok]: PSYNC2: --- CYCLE 2 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #2 as master
[ok]: PSYNC2: Set #0 to replicate from #2
[ok]: PSYNC2: Set #1 to replicate from #2
[ok]: PSYNC2: Set #3 to replicate from #2
[ok]: PSYNC2: Set #4 to replicate from #0
[ok]: XTRIM without ~ and with LIMIT
[ok]: XTRIM with LIMIT delete entries no more than limit
[ok]: BZPOPMIN with zero timeout should block indefinitely
[ok]: corrupt payload: fuzzer findings - valgrind negative malloc
[ok]: corrupt payload: fuzzer findings - valgrind invalid read
[ok]: XADD with MAXLEN > xlen can propagate correctly
[ok]: failover command to any replica works
[ok]: corrupt payload: fuzzer findings - empty hash ziplist
[ok]: corrupt payload: fuzzer findings - stream with no records
[ok]: PSYNC2: cluster is consistent after failover
[ok]: XADD with MINID > lastid can propagate correctly
[ok]: failover to a replica with force works
[ok]: corrupt payload: fuzzer findings - quicklist ziplist tail followed by extra data which start with 0xff
[ok]: XADD with ~ MAXLEN can propagate correctly
[ok]: failover with timeout aborts if replica never catches up
[ok]: corrupt payload: fuzzer findings - leak in rdbloading due to dup entry in set
[ok]: corrupt payload: fuzzer findings - dict init to huge size
[ok]: failovers can be aborted
[ok]: corrupt payload: fuzzer findings - empty intset
[ok]: corrupt payload: fuzzer findings - valgrind ziplist - crash report prints freed memory
[ok]: corrupt payload: fuzzer findings - valgrind ziplist prevlen reaches outside the ziplist
[ok]: BLMOVE (right, left) replication, list exists
[ok]: BLMOVE (right, right) replication, when blocking against empty list
[ok]: failover aborts if target rejects sync request
[ok]: Slave is able to evict keys created in writable slaves
[ok]: corrupt payload: fuzzer findings - valgrind - bad rdbLoadDoubleValue
[ok]: XADD with ~ MAXLEN and LIMIT can propagate correctly
[ok]: ZSET skiplist order consistency when elements are moved
[ok]: ZRANGESTORE basic
[ok]: ZRANGESTORE RESP3
@@ -1327,6 +1387,7 @@
[ok]: ZRANGESTORE with zset-max-ziplist-entries 0 #10767 case
[ok]: ZRANGESTORE with zset-max-ziplist-entries 1 dst key should use skiplist encoding
[ok]: ZRANGE invalid syntax
[ok]: corrupt payload: fuzzer findings - huge string
[ok]: ZRANDMEMBER - ziplist
[ok]: ZRANDMEMBER - skiplist
[ok]: ZRANDMEMBER with RESP3
@@ -1335,82 +1396,81 @@
[ok]: ZRANDMEMBER count overflow
[ok]: ZRANDMEMBER count of 0 is handled correctly - emptyarray
[ok]: ZRANDMEMBER with <count> against non existing key - emptyarray
[ok]: corrupt payload: fuzzer findings - valgrind ziplist prev too big
[26/66 done]: integration/failover ()
[ok]: MIGRATE can correctly transfer large values
[ok]: corrupt payload: fuzzer findings - stream PEL without consumer
[ok]: XADD with ~ MINID can propagate correctly
[ok]: failover aborts if target rejects sync request
[ok]: ZRANDMEMBER with <count> - skiplist
[ok]: MIGRATE can correctly transfer hashes
[ok]: Fuzzer corrupt restore payloads - sanitize_dump: no
[ok]: corrupt payload: fuzzer findings - stream listpack valgrind issue
[ok]: Test replication partial resync: no backlog (diskless: no, disabled, reconnect: 1)
[ok]: PSYNC2 pingoff: pause replica and promote it
[ok]: XADD with ~ MINID and LIMIT can propagate correctly
[ok]: ZRANDMEMBER with <count> - ziplist
[ok]: corrupt payload: fuzzer findings - stream with bad lpFirst
[26/66 done]: unit/type/zset ()
[ok]: MIGRATE timeout actually works
[27/66 done]: integration/failover ()
[ok]: Interactive CLI: INFO response should be printed raw
[ok]: Interactive CLI: Status reply
[ok]: Interactive CLI: Integer reply
[ok]: ZRANDMEMBER with <count> - skiplist
[ok]: Interactive CLI: Bulk reply
[ok]: corrupt payload: fuzzer findings - lzf decompression fails, avoid valgrind invalid read
[ok]: BLMOVE (right, right) replication, list exists
[ok]: Interactive CLI: Multi-bulk reply
[ok]: BLPOP followed by role change, issue #2473
[ok]: corrupt payload: fuzzer findings - stream listpack lpPrev valgrind issue
[ok]: Slave should be able to synchronize with the master
[ok]: MIGRATE can migrate multiple keys at once
[ok]: MIGRATE with multiple keys must have empty key arg
[ok]: XTRIM with ~ MAXLEN can propagate correctly
[ok]: Make the old master a replica of the new one and check conditions
[ok]: benchmark: set,get
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: Interactive CLI: Parsing quotes
[ok]: corrupt payload: fuzzer findings - stream bad lp_count
[ok]: Non-interactive TTY CLI: Status reply
[ok]: PSYNC2: generate load while killing replication links
[ok]: First server should have role slave after SLAVEOF
[ok]: Non-interactive TTY CLI: Integer reply
[ok]: PSYNC2: cluster is consistent after load (x = 34349)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: PSYNC2: --- CYCLE 2 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #2 as master
[ok]: PSYNC2: Set #3 to replicate from #2
[ok]: PSYNC2: Set #0 to replicate from #2
[ok]: PSYNC2: Set #4 to replicate from #0
[ok]: Non-interactive TTY CLI: Bulk reply
[ok]: PSYNC2: Set #1 to replicate from #0
[ok]: PSYNC2: cluster is consistent after failover
[ok]: Non-interactive TTY CLI: Multi-bulk reply
[ok]: Non-interactive TTY CLI: Read last argument from pipe
[ok]: Non-interactive TTY CLI: Read last argument from file
[ok]: Non-interactive non-TTY CLI: Status reply
[ok]: corrupt payload: fuzzer findings - stream with non-integer entry id
[ok]: Non-interactive non-TTY CLI: Integer reply
[ok]: MIGRATE with multiple keys migrate just existing ones
[ok]: Non-interactive non-TTY CLI: Bulk reply
[ok]: benchmark: full test suite
[ok]: Non-interactive non-TTY CLI: Multi-bulk reply
[ok]: XADD can CREATE an empty stream
[ok]: XSETID can set a specific ID
[ok]: XSETID cannot SETID with smaller ID
[ok]: XSETID cannot SETID on non-existent key
[ok]: Non-interactive non-TTY CLI: ASK redirect test
[ok]: Non-interactive non-TTY CLI: Quoted input arguments
[ok]: Non-interactive non-TTY CLI: No accidental unquoting of input arguments
[ok]: corrupt payload: fuzzer findings - stream bad lp_count - unsanitized
[ok]: ZRANDMEMBER with <count> - ziplist
[ok]: Non-interactive non-TTY CLI: Invalid quoted input arguments
[ok]: Detect write load to master
[ok]: Non-interactive non-TTY CLI: Read last argument from pipe
[ok]: Non-interactive non-TTY CLI: Read last argument from file
[ok]: Second server should have role master at first
[27/66 done]: unit/type/zset ()
[ok]: SLAVEOF should start with link status "down"
[ok]: The role should immediately be changed to "replica"
[ok]: corrupt payload: fuzzer findings - stream integrity check issue
[ok]: benchmark: set,get
[ok]: corrupt payload: fuzzer findings - infinite loop
[ok]: Fuzzer corrupt restore payloads - sanitize_dump: no
[ok]: Sync should have transferred keys from master
[ok]: Sync should have transferred keys from master
[ok]: The link status should be up
[ok]: SET on the master should immediately propagate
[ok]: FLUSHALL should replicate
[ok]: ROLE in master reports master with a slave
[ok]: ROLE in slave reports slave in connected state
[ok]: benchmark: full test suite
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: corrupt payload: fuzzer findings - hash convert asserts on RESTORE with shallow sanitization
[ok]: corrupt payload: fuzzer findings - empty quicklist
[ok]: benchmark: multi-thread set,get
[ok]: PSYNC2 pingoff: pause replica and promote it
[ok]: benchmark: pipelined full set,get
[ok]: MIGRATE with multiple keys: stress command rewriting
[ok]: benchmark: arbitrary command
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2: cluster is consistent after load (x = 67012)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: benchmark: keyspace length
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: corrupt payload: OOM in rdbGenericLoadStringObject
[ok]: PSYNC2: --- CYCLE 3 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #3 as master
[ok]: PSYNC2: Set #2 to replicate from #3
[ok]: PSYNC2: Set #4 to replicate from #3
[ok]: PSYNC2: Set #0 to replicate from #3
[ok]: PSYNC2: Set #1 to replicate from #4
[ok]: PSYNC2: cluster is consistent after failover
[ok]: corrupt payload: fuzzer findings - empty zset
[ok]: MIGRATE with multiple keys: delete just ack keys
[ok]: corrupt payload: fuzzer findings - hash with len of 0
[28/66 done]: integration/redis-benchmark ()
[ok]: corrupt payload: fuzzer findings - OOM in dictExpand
[ok]: Test replication partial resync: no backlog (diskless: no, disabled, reconnect: 1)
[ok]: Make the old master a replica of the new one and check conditions
[ok]: XRANGE fuzzing
[ok]: XREVRANGE regression test for issue #5006
[ok]: XREAD streamID edge (no-blocking)
[ok]: XREAD streamID edge (blocking)
[ok]: XADD streamID edge
[ok]: MIGRATE AUTH: correct and wrong password cases
[ok]: Pub/Sub PING
[ok]: PUBLISH/SUBSCRIBE basics
[ok]: PUBLISH/SUBSCRIBE with two clients
@@ -1435,51 +1495,15 @@
[ok]: Keyspace notifications: set events test
[ok]: Keyspace notifications: zset events test
[ok]: Keyspace notifications: hash events test
[ok]: corrupt payload: fuzzer findings - invalid tail offset after removal
[ok]: Empty stream can be rewrite into AOF correctly
[ok]: Keyspace notifications: expired events (triggered expire)
[ok]: XTRIM with MAXLEN option basic test
[ok]: Keyspace notifications: expired events (background expire)
[ok]: Keyspace notifications: evicted events
[ok]: Keyspace notifications: test CONFIG GET/SET of event flags
[ok]: XADD with LIMIT consecutive calls
[ok]: XTRIM with ~ is limited
[ok]: XTRIM without ~ is not limited
[ok]: corrupt payload: fuzzer findings - negative reply length
[ok]: XTRIM without ~ and with LIMIT
[ok]: XTRIM with LIMIT delete entries no more than limit
[ok]: Slave should be able to synchronize with the master
[29/66 done]: unit/pubsub ()
[ok]: corrupt payload: fuzzer findings - stream double free listpack when insert dup node to rax returns 0
[29/66 done]: unit/dump ()
[30/66 done]: unit/pubsub ()
[ok]: SLOWLOG - check that it starts with an empty log
[ok]: corrupt payload: fuzzer findings - valgrind negative malloc
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: XADD with MAXLEN > xlen can propagate correctly
[ok]: SLOWLOG - only logs commands taking more time than specified
[ok]: SLOWLOG - max entries is correctly handled
[ok]: SLOWLOG - GET optional argument to limit output len works
[ok]: SLOWLOG - RESET subcommand works
[ok]: corrupt payload: fuzzer findings - valgrind invalid read
[ok]: SLOWLOG - logged entry sanity check
[ok]: SLOWLOG - Certain commands are omitted that contain sensitive information
[ok]: SLOWLOG - Some commands can redact sensitive fields
[ok]: SLOWLOG - Rewritten commands are logged as their original command
[ok]: SLOWLOG - commands with too many arguments are trimmed
[ok]: SLOWLOG - too long arguments are trimmed
[ok]: Dumping an RDB
[ok]: XADD with MINID > lastid can propagate correctly
[ok]: SLOWLOG - EXEC is not logged, just executed commands
[ok]: Detect write load to master
[ok]: corrupt payload: fuzzer findings - empty hash ziplist
[ok]: Scan mode
[ok]: SLOWLOG - can clean older entries
[ok]: XADD with ~ MAXLEN can propagate correctly
[ok]: corrupt payload: fuzzer findings - stream with no records
[ok]: corrupt payload: fuzzer findings - quicklist ziplist tail followed by extra data which start with 0xff
[ok]: SLOWLOG - can be disabled
[ok]: XADD with ~ MAXLEN and LIMIT can propagate correctly
[ok]: MIGRATE can correctly transfer large values
[30/66 done]: unit/slowlog ()
[ok]: MIGRATE can correctly transfer hashes
[ok]: corrupt payload: fuzzer findings - dict init to huge size
[ok]: EVAL - Does Lua interpreter replies to our requests?
[ok]: EVAL - Return _G
[ok]: EVAL - Return table with a metatable that raise error
@@ -1528,25 +1552,35 @@
[ok]: EVAL - redis.call variant raises a Lua error on Redis cmd error (1)
[ok]: EVAL - JSON numeric decoding
[ok]: EVAL - JSON string decoding
[ok]: EVAL - JSON smoke test
[ok]: EVAL - cmsgpack can pack double?
[ok]: EVAL - cmsgpack can pack negative int64?
[ok]: corrupt payload: fuzzer findings - invalid access in ziplist tail prevlen decoding
[31/66 done]: integration/corrupt-dump ()
[ok]: SLOWLOG - only logs commands taking more time than specified
[ok]: SLOWLOG - max entries is correctly handled
[ok]: SLOWLOG - GET optional argument to limit output len works
[ok]: SLOWLOG - RESET subcommand works
[ok]: Without maxmemory small integers are shared
[ok]: With maxmemory and non-LRU policy integers are still shared
[ok]: With maxmemory and LRU policy integers are not shared
[ok]: SLOWLOG - logged entry sanity check
[ok]: EVAL - cmsgpack pack/unpack smoke test
[ok]: Test replication with blocking lists and sorted sets operations
[ok]: EVAL - cmsgpack can pack and unpack circular references?
[ok]: EVAL - Numerical sanity check from bitop
[ok]: EVAL - Verify minimal bitop functionality
[ok]: EVAL - Able to parse trailing comments
[ok]: SLOWLOG - Certain commands are omitted that contain sensitive information
[ok]: SLOWLOG - Some commands can redact sensitive fields
[ok]: SLOWLOG - Rewritten commands are logged as their original command
[ok]: SLOWLOG - commands with too many arguments are trimmed
[ok]: SLOWLOG - too long arguments are trimmed
[ok]: SCRIPTING FLUSH - is able to clear the scripts cache?
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2: cluster is consistent after load (x = 62124)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: PSYNC2: --- CYCLE 3 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #2 as master
[ok]: PSYNC2: Set #4 to replicate from #2
[ok]: Stream can be rewrite into AOF correctly after XDEL lastid
[ok]: SCRIPTING FLUSH ASYNC
[ok]: SCRIPT EXISTS - can detect already defined scripts?
[ok]: PSYNC2: Set #1 to replicate from #4
[ok]: SCRIPT LOAD - is able to register scripts in the scripting cache
[ok]: PSYNC2: Set #0 to replicate from #1
[ok]: PSYNC2: Set #3 to replicate from #4
[ok]: In the context of Lua the output of random commands gets ordered
[ok]: SORT is normally not alpha re-ordered for the scripting engine
[ok]: SORT BY <constant> output gets ordered for scripting
@@ -1557,74 +1591,12 @@
[ok]: Test an example script DECR_IF_GT
[ok]: Scripting engine resets PRNG at every script execution
[ok]: Scripting engine PRNG can be seeded correctly
[ok]: XADD with ~ MINID can propagate correctly
[ok]: corrupt payload: fuzzer findings - huge string
[ok]: SLOWLOG - EXEC is not logged, just executed commands
[ok]: EVAL does not leak in the Lua stack
[ok]: XADD with ~ MINID and LIMIT can propagate correctly
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: Connecting as a replica
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: MIGRATE timeout actually works
[ok]: corrupt payload: fuzzer findings - stream PEL without consumer
[ok]: EVAL processes writes from AOF in read-only slaves
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: XTRIM with ~ MAXLEN can propagate correctly
[ok]: corrupt payload: fuzzer findings - stream listpack valgrind issue
[ok]: MIGRATE can migrate multiple keys at once
[ok]: MIGRATE with multiple keys must have empty key arg
[ok]: Piping raw protocol
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: XADD can CREATE an empty stream
[ok]: XSETID can set a specific ID
[ok]: XSETID cannot SETID with smaller ID
[ok]: XSETID cannot SETID on non-existent key
[ok]: corrupt payload: fuzzer findings - stream with bad lpFirst
[31/66 done]: integration/redis-cli ()
[ok]: MIGRATE with multiple keys migrate just existing ones
[ok]: PSYNC2: cluster is consistent after failover
[ok]: Without maxmemory small integers are shared
[ok]: With maxmemory and non-LRU policy integers are still shared
[ok]: With maxmemory and LRU policy integers are not shared
[ok]: corrupt payload: fuzzer findings - stream listpack lpPrev valgrind issue
[ok]: MIGRATE with multiple keys: stress command rewriting
[ok]: Test replication with blocking lists and sorted sets operations
[ok]: corrupt payload: fuzzer findings - stream with non-integer entry id
[ok]: MIGRATE with multiple keys: delete just ack keys
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: SLOWLOG - can clean older entries
[32/66 done]: integration/block-repl ()
[ok]: XGROUP HELP should not have unexpected options
[ok]: maxmemory - is the memory limit honoured? (policy allkeys-random)
[ok]: test various edge cases of repl topology changes with missing pings at the end
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: Replication: commands with many arguments (issue #1221)
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: EVAL timeout from AOF
[ok]: We can call scripts rewriting client->argv from Lua
[ok]: Call Redis command with many args from Lua (issue #1764)
[ok]: Number conversion precision test (issue #1118)
[ok]: String containing number precision test (regression of issue #1118)
[ok]: Verify negative arg count is error instead of crash (issue #1842)
[ok]: Verify negative arg count is error instead of crash (issue #1842)
[ok]: Correct handling of reused argv (issue #1939)
[ok]: Functions in the Redis namespace are able to report errors
[ok]: Functions in the Redis namespace are able to report errors
[ok]: Script with RESP3 map
[ok]: Try trick global protection 1
[ok]: Try trick global protection 2
[ok]: Try trick global protection 3
[ok]: Try trick global protection 4
[ok]: Try trick readonly table on redis table
[ok]: Try trick readonly table on json table
[ok]: Try trick readonly table on cmsgpack table
[ok]: Try trick readonly table on bit table
[ok]: Test loadfile are not available
[ok]: Test dofile are not available
[ok]: Test print is available to avoid breaking change
[ok]: Script return recursive object
[ok]: Script check unpack with massive arguments
[ok]: Replication of SPOP command -- alsoPropagate() API
[ok]: Fuzzer corrupt restore payloads - sanitize_dump: yes
[32/66 done]: integration/corrupt-dump-fuzzer ()
[ok]: CLIENT LIST
[ok]: CLIENT LIST with IDs
[ok]: CLIENT INFO
@@ -1633,6 +1605,7 @@
[ok]: CLIENT REPLY ON: unset SKIP flag
[ok]: MONITOR can log executed commands
[ok]: MONITOR can log commands issued by the scripting engine
[33/66 done]: unit/type/stream ()
[ok]: MONITOR supports redacting command arguments
[ok]: MONITOR correctly handles multi-exec cases
[ok]: CLIENT GETNAME should return NIL if name is not assigned
@@ -1640,31 +1613,27 @@
[ok]: CLIENT SETNAME does not accept spaces
[ok]: CLIENT SETNAME can assign a name to this connection
[ok]: CLIENT SETNAME can change the name of an existing connection
[ok]: SLOWLOG - can be disabled
[ok]: EVAL processes writes from AOF in read-only slaves
[ok]: After CLIENT SETNAME, connection can still be closed
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: PSYNC2: cluster is consistent after load (x = 108183)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: PSYNC2: --- CYCLE 4 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #0 as master
[ok]: PSYNC2: Set #2 to replicate from #0
[ok]: PSYNC2: Set #4 to replicate from #2
[ok]: PSYNC2: Set #3 to replicate from #2
[ok]: PSYNC2: Set #1 to replicate from #0
[ok]: Test replication partial resync: ok after delay (diskless: no, disabled, reconnect: 1)
[ok]: PSYNC2: cluster is consistent after failover
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: PSYNC2 #3899 regression: verify consistency
[ok]: MIGRATE AUTH: correct and wrong password cases
[ok]: corrupt payload: fuzzer findings - empty quicklist
[33/66 done]: integration/block-repl ()
[34/66 done]: unit/dump ()
[34/66 done]: unit/slowlog ()
[ok]: maxmemory - is the memory limit honoured? (policy allkeys-lru)
[35/66 done]: integration/replication-4 ()
[36/66 done]: integration/psync2-reg ()
[ok]: Empty stream can be rewrite into AOF correctly
[ok]: corrupt payload: fuzzer findings - empty zset
[ok]: Dumping an RDB
[ok]: Replication: commands with many arguments (issue #1221)
[ok]: maxmemory - is the memory limit honoured? (policy allkeys-lfu)
[ok]: Scan mode
[ok]: CONFIG save params special case handled properly
[ok]: CONFIG sanity
[ok]: test various edge cases of repl topology changes with missing pings at the end
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: maxmemory - is the memory limit honoured? (policy volatile-lru)
[ok]: Replication of SPOP command -- alsoPropagate() API
[ok]: CONFIG REWRITE sanity
[ok]: Check if maxclients works refusing connections
[35/66 done]: unit/limits ()
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: maxmemory - is the memory limit honoured? (policy volatile-lfu)
[36/66 done]: integration/replication-4 ()
[ok]: BITCOUNT returns 0 against non existing key
[ok]: BITCOUNT returns 0 with out of range indexes
[ok]: BITCOUNT returns 0 with negative indexes where start > end
@@ -1673,30 +1642,22 @@
[ok]: BITCOUNT against test vector #3
[ok]: BITCOUNT against test vector #4
[ok]: BITCOUNT against test vector #5
[ok]: maxmemory - is the memory limit honoured? (policy allkeys-lfu)
[ok]: Timedout read-only scripts can be killed by SCRIPT KILL
[ok]: corrupt payload: fuzzer findings - hash with len of 0
[ok]: CONFIG save params special case handled properly
[ok]: CONFIG sanity
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2: cluster is consistent after load (x = 173258)
[ok]: Slave should be able to synchronize with the master
[ok]: PSYNC2: cluster is consistent after load (x = 94341)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: PSYNC2: --- CYCLE 5 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #4 as master
[ok]: PSYNC2: Set #3 to replicate from #4
[ok]: PSYNC2: --- CYCLE 4 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #0 as master
[ok]: PSYNC2: Set #2 to replicate from #0
[ok]: PSYNC2: Set #3 to replicate from #0
[ok]: PSYNC2: Set #4 to replicate from #3
[ok]: PSYNC2: Set #1 to replicate from #3
[ok]: PSYNC2: Set #2 to replicate from #3
[ok]: PSYNC2: Set #0 to replicate from #1
[ok]: Timedout read-only scripts can be killed by SCRIPT KILL even when use pcall
[ok]: Timedout script does not cause a false dead client
[ok]: corrupt payload: fuzzer findings - stream double free listpack when insert dup node to rax returns 0
[ok]: Connecting as a replica
[ok]: maxmemory - is the memory limit honoured? (policy volatile-random)
[ok]: BITCOUNT fuzzing without start/end
[ok]: Timedout script link is still usable after Lua returns
[ok]: maxmemory - is the memory limit honoured? (policy volatile-lru)
[ok]: Check if maxclients works refusing connections
[ok]: Timedout scripts that modified data can't be killed by SCRIPT KILL
[ok]: SHUTDOWN NOSAVE can kill a timedout script anyway
[ok]: CONFIG REWRITE handles save properly
[37/66 done]: unit/introspection ()
[ok]: maxmemory - is the memory limit honoured? (policy volatile-ttl)
[ok]: TTL, TYPE and EXISTS do not alter the last access time of a key
[ok]: BITCOUNT fuzzing with start/end
[ok]: BITCOUNT with start, end
[ok]: BITCOUNT syntax error #1
@@ -1704,27 +1665,23 @@
[ok]: BITCOUNT regression test for github issue #582
[ok]: BITCOUNT misaligned prefix
[ok]: BITCOUNT misaligned prefix + full words + remainder
[ok]: BITFIELD signed SET and GET basics
[ok]: BITOP NOT (empty string)
[ok]: BITOP NOT (known string)
[ok]: BITOP where dest and target are the same key
[ok]: BITOP AND|OR|XOR don't change the string with single input key
[ok]: BITOP missing key is considered a stream of zero
[ok]: BITOP shorter keys are zero-padded to the key with max length
[ok]: corrupt payload: fuzzer findings - invalid access in ziplist tail prevlen decoding
[37/66 done]: integration/corrupt-dump ()
[38/66 done]: unit/limits ()
[ok]: Stream can be rewrite into AOF correctly after XDEL lastid
[ok]: CONFIG REWRITE sanity
[ok]: Before the replica connects we issue two EVAL commands (scripts replication)
[ok]: BITFIELD signed SET and GET basics
[ok]: BITFIELD unsigned SET and GET basics
[ok]: BITOP AND|OR|XOR don't change the string with single input key
[ok]: BITFIELD #<idx> form
[ok]: BITOP missing key is considered a stream of zero
[ok]: BITFIELD basic INCRBY form
[ok]: BITOP shorter keys are zero-padded to the key with max length
[ok]: BITFIELD chaining of multiple commands
[ok]: BITFIELD unsigned overflow wrap
[ok]: BITFIELD unsigned overflow sat
[ok]: BITFIELD signed overflow wrap
[ok]: Piping raw protocol
[ok]: BITFIELD signed overflow sat
[38/66 done]: integration/redis-cli ()
[ok]: GEO with wrong type src key
[ok]: GEO with non existing src key
[ok]: GEO BYLONLAT with empty search
@@ -1779,32 +1736,19 @@
[ok]: GEORANGE STORE option: plain usage
[ok]: GEORADIUSBYMEMBER STORE/STOREDIST option: plain usage
[ok]: GEOSEARCHSTORE STORE option: plain usage
[ok]: Connect a replica to the master instance (scripts replication)
[ok]: GEORANGE STOREDIST option: plain usage
[ok]: XGROUP HELP should not have unexpected options
[ok]: Now use EVALSHA against the master, with both SHAs (scripts replication)
[ok]: GEOSEARCHSTORE STOREDIST option: plain usage
[ok]: If EVALSHA was replicated as EVAL, 'x' should be '4' (scripts replication)
[ok]: Replication of script multiple pushes to list with BLPOP (scripts replication)
[ok]: GEORANGE STOREDIST option: COUNT ASC and DESC
[ok]: GEOSEARCH the box spans -180° or 180°
[ok]: EVALSHA replication when first call is readonly (scripts replication)
[ok]: Lua scripts using SELECT are replicated correctly (scripts replication)
[ok]: maxmemory - is the memory limit honoured? (policy volatile-lfu)
[ok]: Detect write load to master
[39/66 done]: unit/type/stream ()
[ok]: BITOP and fuzzing
[ok]: BITFIELD overflow detection fuzzing
[ok]: maxmemory - is the memory limit honoured? (policy volatile-random)
[ok]: BITOP and fuzzing
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (allkeys-random)
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: BITFIELD overflow wrap fuzzing
[ok]: BITFIELD regression for #3221
[ok]: BITFIELD regression for #3564
[ok]: BITOP or fuzzing
[ok]: Before the replica connects we issue two EVAL commands (commands replication)
[ok]: Connect a replica to the master instance (commands replication)
[ok]: Now use EVALSHA against the master, with both SHAs (commands replication)
[ok]: If EVALSHA was replicated as EVAL, 'x' should be '4' (commands replication)
[ok]: Memory efficiency with values in range 32
[ok]: Replication of script multiple pushes to list with BLPOP (commands replication)
[ok]: EVALSHA replication when first call is readonly (commands replication)
[ok]: Lua scripts using SELECT are replicated correctly (commands replication)
[ok]: PSYNC2: cluster is consistent after failover
[ok]: BITOP xor fuzzing
[ok]: BITOP NOT fuzzing
[ok]: BITOP with integer encoded source objects
@@ -1816,43 +1760,104 @@
[ok]: BITPOS bit=1 with string less than 1 word works
[ok]: BITPOS bit=0 starting at unaligned address
[ok]: BITPOS bit=1 starting at unaligned address
[ok]: maxmemory - is the memory limit honoured? (policy volatile-ttl)
[ok]: PSYNC2: cluster is consistent after failover
[ok]: BITPOS bit=0 unaligned+full word+reminder
[ok]: BITPOS bit=1 unaligned+full word+reminder
[ok]: BITPOS bit=1 returns -1 if string is all 0 bits
[ok]: BITPOS bit=0 works with intervals
[ok]: BITPOS bit=1 works with intervals
[ok]: BITPOS bit=0 changes behavior if end is given
[ok]: BITFIELD overflow wrap fuzzing
[ok]: BITFIELD regression for #3221
[ok]: BITFIELD regression for #3564
[ok]: BITPOS bit=1 fuzzy testing using SETBIT
[ok]: Memory efficiency with values in range 64
[ok]: TTL, TYPE and EXISTS do not alter the last access time of a key
[ok]: BITPOS bit=0 fuzzy testing using SETBIT
[ok]: Memory efficiency with values in range 128
[ok]: BITFIELD: setup slave
[ok]: Connect a replica to the master instance
[ok]: BITFIELD: write on master, read on slave
[ok]: Redis.replicate_commands() must be issued before any write
[ok]: Redis.replicate_commands() must be issued before any write (2)
[ok]: BITFIELD_RO fails when write option is used
[ok]: Redis.set_repl() must be issued after replicate_commands()
[ok]: Redis.set_repl() don't accept invalid values
[ok]: Test selective replication of certain Redis commands from Lua
[ok]: PRNG is seeded randomly for command replication
[ok]: Using side effects is not a problem with command replication
[ok]: Memory efficiency with values in range 1024
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (allkeys-random)
[40/66 done]: unit/bitfield ()
[ok]: BIT pos larger than UINT_MAX
[ok]: Test scripting debug protocol parsing
[ok]: Chained replicas disconnect when replica re-connect with the same master
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (allkeys-lru)
[ok]: Client output buffer hard limit is enforced
[41/66 done]: unit/bitops ()
[42/66 done]: unit/scripting ()
[ok]: CONFIG REWRITE handles save properly
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: EVAL timeout from AOF
[ok]: We can call scripts rewriting client->argv from Lua
[ok]: Call Redis command with many args from Lua (issue #1764)
[ok]: Number conversion precision test (issue #1118)
[ok]: String containing number precision test (regression of issue #1118)
[ok]: Verify negative arg count is error instead of crash (issue #1842)
[ok]: Verify negative arg count is error instead of crash (issue #1842)
[ok]: Correct handling of reused argv (issue #1939)
[ok]: Functions in the Redis namespace are able to report errors
[ok]: Functions in the Redis namespace are able to report errors
[ok]: Script with RESP3 map
[ok]: Try trick global protection 1
[ok]: Try trick global protection 2
[ok]: Try trick global protection 3
[ok]: Try trick global protection 4
[ok]: Try trick readonly table on redis table
[ok]: Try trick readonly table on json table
[ok]: Try trick readonly table on cmsgpack table
[ok]: Try trick readonly table on bit table
[ok]: Test loadfile are not available
[ok]: Test dofile are not available
[ok]: Test print is available to avoid breaking change
[39/66 done]: unit/bitfield ()
[ok]: BITPOS bit=1 fuzzy testing using SETBIT
[ok]: Script return recursive object
[ok]: Script check unpack with massive arguments
[ok]: BITPOS bit=0 fuzzy testing using SETBIT
[ok]: Memory efficiency with values in range 32
[ok]: Chained replicas disconnect when replica re-connect with the same master
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-lru)
[ok]: Memory efficiency with values in range 64
[ok]: Timedout read-only scripts can be killed by SCRIPT KILL
[ok]: Fuzzer corrupt restore payloads - sanitize_dump: yes
[40/66 done]: integration/corrupt-dump-fuzzer ()
[ok]: Timedout read-only scripts can be killed by SCRIPT KILL even when use pcall
[41/66 done]: integration/psync2-pingoff ()
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-random)
[ok]: Timedout script does not cause a false dead client
[ok]: PSYNC2 #3899 regression: kill chained replica
[ok]: Memory efficiency with values in range 128
[ok]: Timedout script link is still usable after Lua returns
[ok]: BIT pos larger than UINT_MAX
[ok]: Test replication partial resync: ok after delay (diskless: no, disabled, reconnect: 1)
[ok]: TOUCH alters the last access time of a key
[ok]: TOUCH returns the number of existing keys specified
[ok]: command stats for GEOADD
[ok]: command stats for EXPIRE
[ok]: command stats for BRPOP
[ok]: command stats for MULTI
[ok]: command stats for scripts
[ok]: Timedout scripts that modified data can't be killed by SCRIPT KILL
[ok]: SHUTDOWN NOSAVE can kill a timedout script anyway
[ok]: UNLINK can reclaim memory in background
[42/66 done]: unit/bitops ()
[43/66 done]: unit/introspection-2 ()
[ok]: Memory efficiency with values in range 1024
[ok]: PSYNC2 #3899 regression: kill first replica
[ok]: Test read commands are not blocked by client pause
[ok]: Test write commands are paused by RO
[ok]: Test special commands are paused by RO
[ok]: Test read/admin mutli-execs are not blocked by pause RO
[ok]: Test write mutli-execs are blocked by pause RO
[ok]: Test scripts are blocked by pause RO
[ok]: Test multiple clients can be queued up and unblocked
[ok]: Test clients with syntax errors will get responses immediately
[ok]: Test clients with syntax errors will get responses immediately
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-ttl)
[ok]: Before the replica connects we issue two EVAL commands (scripts replication)
[ok]: Setup slave
[ok]: FLUSHDB ASYNC can reclaim memory in background
[ok]: WAIT should acknowledge 1 additional copy of the data
[ok]: Test both active and passive expires are skipped during client pause
[ok]: Test that client pause starts at the end of a transaction
[ok]: Connect a replica to the master instance (scripts replication)
[ok]: PSYNC2 #3899 regression: verify consistency
[ok]: Now use EVALSHA against the master, with both SHAs (scripts replication)
[ok]: If EVALSHA was replicated as EVAL, 'x' should be '4' (scripts replication)
[ok]: Replication of script multiple pushes to list with BLPOP (scripts replication)
[ok]: EVALSHA replication when first call is readonly (scripts replication)
[ok]: Lua scripts using SELECT are replicated correctly (scripts replication)
[44/66 done]: unit/lazyfree ()
[ok]: Slave should be able to synchronize with the master
[ok]: Test when replica paused, offset would not grow
[ok]: Test replica offset would grow after unpause
[ok]: maxmemory - policy volatile-lru should only remove volatile keys.
[ok]: HyperLogLog self test passes
[ok]: PFADD without arguments creates an HLL value
[ok]: Approximated cardinality after creation is zero
@@ -1860,35 +1865,19 @@
[ok]: PFADD returns 0 when no reg was modified
[ok]: PFADD works with empty string (regression)
[ok]: PFCOUNT returns approximated cardinality of set
[43/66 done]: integration/psync2-pingoff ()
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (allkeys-lru)
[ok]: Test read commands are not blocked by client pause
[ok]: UNLINK can reclaim memory in background
[44/66 done]: unit/introspection ()
[ok]: Setup slave
[ok]: Test write commands are paused by RO
[ok]: Memory efficiency with values in range 16384
[ok]: Test special commands are paused by RO
[ok]: WAIT should acknowledge 1 additional copy of the data
[ok]: Test read/admin mutli-execs are not blocked by pause RO
[ok]: Test write mutli-execs are blocked by pause RO
[ok]: Test scripts are blocked by pause RO
[ok]: Test multiple clients can be queued up and unblocked
[ok]: Test clients with syntax errors will get responses immediately
[ok]: Test clients with syntax errors will get responses immediately
[ok]: HyperLogLogs are promote from sparse to dense
[ok]: Test both active and passive expires are skipped during client pause
[ok]: Test that client pause starts at the end of a transaction
[45/66 done]: unit/memefficiency ()
[ok]: Test when replica paused, offset would not grow
[ok]: Test replica offset would grow after unpause
[ok]: FLUSHDB ASYNC can reclaim memory in background
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-lru)
[46/66 done]: unit/lazyfree ()
[45/66 done]: integration/psync2-reg ()
[ok]: Before the replica connects we issue two EVAL commands (commands replication)
[46/66 done]: unit/pause ()
[ok]: Connect a replica to the master instance (commands replication)
[ok]: Now use EVALSHA against the master, with both SHAs (commands replication)
[ok]: If EVALSHA was replicated as EVAL, 'x' should be '4' (commands replication)
[ok]: Replication of script multiple pushes to list with BLPOP (commands replication)
[ok]: EVALSHA replication when first call is readonly (commands replication)
[ok]: Lua scripts using SELECT are replicated correctly (commands replication)
[47/66 done]: unit/tls ()
[48/66 done]: unit/oom-score-adj ()
[49/66 done]: unit/pause ()
[ok]: Clients are able to enable tracking and redirect it
[ok]: maxmemory - policy volatile-lfu should only remove volatile keys.
[ok]: The other connection is able to get invalidations
[ok]: The client is now able to disable tracking
[ok]: Clients can enable the BCAST mode with the empty prefix
@@ -1897,28 +1886,26 @@
[ok]: Adding prefixes to BCAST mode works
[ok]: Tracking NOLOOP mode in standard mode works
[ok]: Tracking NOLOOP mode in BCAST mode works
[ok]: TOUCH alters the last access time of a key
[ok]: TOUCH returns the number of existing keys specified
[ok]: command stats for GEOADD
[ok]: command stats for EXPIRE
[ok]: command stats for BRPOP
[ok]: command stats for MULTI
[ok]: command stats for scripts
[ok]: HyperLogLogs are promote from sparse to dense
[ok]: WAIT should not acknowledge 2 additional copies of the data
[ok]: CONFIG SET port number
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-random)
[ok]: Memory efficiency with values in range 16384
[ok]: Client output buffer soft limit is enforced if time is overreached
[ok]: Client output buffer soft limit is enforced if time is overreached
[ok]: Temp rdb will be deleted if we use bg_unlink when shutdown
[50/66 done]: unit/introspection-2 ()
[ok]: Detect write load to master
[ok]: Connect a replica to the master instance
[ok]: Redis.replicate_commands() must be issued before any write
[ok]: Redis.replicate_commands() must be issued before any write (2)
[49/66 done]: unit/memefficiency ()
[ok]: Redis.set_repl() must be issued after replicate_commands()
[ok]: Redis.set_repl() don't accept invalid values
[ok]: Temp rdb will be deleted in signal handle
[51/66 done]: unit/shutdown ()
[ok]: HyperLogLog sparse encoding stress test
[ok]: Corrupted sparse HyperLogLogs are detected: Additional at tail
[ok]: Corrupted sparse HyperLogLogs are detected: Broken magic
[ok]: Corrupted sparse HyperLogLogs are detected: Invalid encoding
[ok]: Corrupted dense HyperLogLogs are detected: Wrong length
[ok]: CONFIG SET bind address
[52/66 done]: unit/networking ()
[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-ttl)
[ok]: Test selective replication of certain Redis commands from Lua
[ok]: PRNG is seeded randomly for command replication
[ok]: Using side effects is not a problem with command replication
[ok]: maxmemory - policy volatile-random should only remove volatile keys.
[50/66 done]: unit/shutdown ()
[ok]: CONFIG SET port number
[ok]: Tracking gets notification of expired keys
[ok]: Tracking gets notification of lazy expired keys
[ok]: HELLO 3 reply is correct
@@ -1940,17 +1927,26 @@
[ok]: BCAST with prefix collisions throw errors
[ok]: BCAST with prefix collisions throw errors
[ok]: hdel deliver invlidate message after response in the same connection
[ok]: maxmemory - policy volatile-ttl should only remove volatile keys.
[ok]: CONFIG SET bind address
[51/66 done]: unit/networking ()
[ok]: Tracking invalidation message is not interleaved with multiple keys response
[ok]: Tracking invalidation message is not interleaved with transaction response
[ok]: Tracking invalidation message of eviction keys should be before response
[ok]: Unblocked BLMOVE gets notification after response
[ok]: WAIT should not acknowledge 1 additional copy if slave is blocked
[ok]: Test scripting debug protocol parsing
[ok]: Tracking gets notification on tracking table key eviction
[ok]: Invalidation message received for flushall
[ok]: Invalidation message received for flushdb
[ok]: Test ASYNC flushall
[ok]: flushdb tracking invalidation message is not interleaved with transaction response
[ok]: maxmemory - policy volatile-lru should only remove volatile keys.
[52/66 done]: unit/scripting ()
[ok]: HyperLogLog sparse encoding stress test
[ok]: Corrupted sparse HyperLogLogs are detected: Additional at tail
[ok]: Corrupted sparse HyperLogLogs are detected: Broken magic
[ok]: Corrupted sparse HyperLogLogs are detected: Invalid encoding
[ok]: Corrupted dense HyperLogLogs are detected: Wrong length
[ok]: WAIT should not acknowledge 1 additional copy if slave is blocked
[ok]: Server is able to evacuate enough keys when num of keys surpasses limit by more than defined initial effort
[ok]: Tracking info is correct
[ok]: CLIENT GETREDIR provides correct client id
@@ -1967,117 +1963,122 @@
[ok]: RESP3 based basic redirect invalidation with client reply off
[ok]: RESP3 based basic tracking-redir-broken with client reply off
[53/66 done]: unit/tracking ()
[ok]: Client output buffer soft limit is enforced if time is overreached
[ok]: Client output buffer soft limit is enforced if time is overreached
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2: cluster is consistent after load (x = 227231)
[ok]: PSYNC2: cluster is consistent after load (x = 134939)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: PSYNC2: --- CYCLE 6 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #4 as master
[ok]: PSYNC2: Set #3 to replicate from #4
[ok]: PSYNC2: Set #1 to replicate from #3
[ok]: PSYNC2: --- CYCLE 5 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #1 as master
[ok]: PSYNC2: Set #2 to replicate from #1
[ok]: PSYNC2: Set #0 to replicate from #4
[ok]: maxmemory - policy volatile-lfu should only remove volatile keys.
[ok]: maxmemory - policy volatile-random should only remove volatile keys.
[ok]: PSYNC2: Set #4 to replicate from #2
[ok]: PSYNC2: Set #0 to replicate from #1
[ok]: PSYNC2: Set #3 to replicate from #0
[ok]: WAIT implicitly blocks on client pause since ACKs aren't sent
[ok]: maxmemory - policy volatile-ttl should only remove volatile keys.
[ok]: PSYNC2: cluster is consistent after failover
[54/66 done]: unit/wait ()
[ok]: Create 3 node cluster
[ok]: Run blocking command on cluster node3
[ok]: Perform a Resharding
[ok]: PSYNC2: cluster is consistent after failover
[ok]: Verify command got unblocked after resharding
[ok]: Wait for cluster to be stable
[ok]: Sanity test push cmd after resharding
[ok]: Run blocking command again on cluster node1
[ok]: Kill a cluster node and wait for fail state
[ok]: Verify command got unblocked after cluster failure
[ok]: client freed during loading
[55/66 done]: integration/rdb ()
[56/66 done]: unit/cluster ()
[ok]: MASTER and SLAVE consistency with EVALSHA replication
[55/66 done]: unit/cluster ()
[ok]: pending querybuf: check size of pending_querybuf after set a big value
[57/66 done]: unit/pendingquerybuf ()
[ok]: SLAVE can reload "lua" AUX RDB fields of duplicated scripts
[ok]: Test replication partial resync: backlog expired (diskless: no, disabled, reconnect: 1)
[58/66 done]: integration/replication-3 ()
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: Test replication partial resync: no reconnection, just sync (diskless: no, swapdb, reconnect: 0)
[56/66 done]: unit/pendingquerybuf ()
[ok]: Client output buffer soft limit is not enforced too early and is enforced when no traffic
[ok]: No response for single command if client output buffer hard limit is enforced
[ok]: Slave should be able to synchronize with the master
[ok]: MASTER and SLAVE consistency with EVALSHA replication
[ok]: Connect multiple replicas at the same time (issue #141), master diskless=no, replica diskless=disabled
[ok]: No response for multi commands in pipeline if client output buffer limit is enforced
[ok]: PSYNC2: generate load while killing replication links
[ok]: Execute transactions completely even if client output buffer limit is enforced
[ok]: PSYNC2: cluster is consistent after load (x = 299933)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: Obuf limit, HRANDFIELD with huge count stopped mid-run
[ok]: PSYNC2: --- CYCLE 7 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #0 as master
[ok]: PSYNC2: Set #3 to replicate from #0
[57/66 done]: unit/obuf-limits ()
[ok]: SLAVE can reload "lua" AUX RDB fields of duplicated scripts
[58/66 done]: integration/replication-3 ()
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2: cluster is consistent after load (x = 205582)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: PSYNC2: --- CYCLE 6 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #3 as master
[ok]: PSYNC2: Set #1 to replicate from #3
[ok]: PSYNC2: Set #4 to replicate from #1
[ok]: PSYNC2: Set #2 to replicate from #3
[ok]: PSYNC2: Set #4 to replicate from #3
[ok]: PSYNC2: Set #1 to replicate from #2
[ok]: PSYNC2: cluster is consistent after failover
[59/66 done]: unit/obuf-limits ()
[ok]: PSYNC2: Set #0 to replicate from #1
[ok]: Fuzzing dense/sparse encoding: Redis should always detect errors
[ok]: Fuzzing dense/sparse encoding: Redis should always detect errors
[ok]: PFADD, PFCOUNT, PFMERGE type checking works
[ok]: PFMERGE results on the cardinality of union of sets
[ok]: PSYNC2: cluster is consistent after failover
[ok]: Test replication partial resync: backlog expired (diskless: no, disabled, reconnect: 1)
[ok]: Slave should be able to synchronize with the master
[ok]: client freed during loading
[59/66 done]: integration/rdb ()
[ok]: Detect write load to master
[ok]: AOF rewrite during write load: RDB preamble=no
[ok]: Turning off AOF kills the background writing child if any
[ok]: Connect multiple replicas at the same time (issue #141), master diskless=no, replica diskless=disabled
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2: cluster is consistent after load (x = 394721)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: AOF rewrite of list with quicklist encoding, string data
[ok]: PFCOUNT multiple-keys merge returns cardinality of union #1
[ok]: PSYNC2: Bring the master back again for next test
[ok]: PSYNC2: Partial resync after restart using RDB aux fields
[ok]: slave buffer are counted correctly
[ok]: Test replication partial resync: ok psync (diskless: no, swapdb, reconnect: 1)
[ok]: AOF rewrite of list with quicklist encoding, int data
[ok]: PFCOUNT multiple-keys merge returns cardinality of union #2
[ok]: Test replication partial resync: no reconnection, just sync (diskless: no, swapdb, reconnect: 0)
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: PSYNC2: Replica RDB restart with EVALSHA in backlog issue #4483
[ok]: AOF rewrite of set with intset encoding, string data
[ok]: slave buffer are counted correctly
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2: cluster is consistent after load (x = 261890)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: PSYNC2: --- CYCLE 7 ---
[ok]: PSYNC2: [NEW LAYOUT] Set #2 as master
[ok]: PSYNC2: Set #0 to replicate from #2
[ok]: PSYNC2: Set #3 to replicate from #0
[ok]: PSYNC2: Set #4 to replicate from #3
[ok]: PSYNC2: Set #1 to replicate from #0
[ok]: PSYNC2: cluster is consistent after failover
[ok]: PFCOUNT multiple-keys merge returns cardinality of union #1
[ok]: PFCOUNT multiple-keys merge returns cardinality of union #2
[ok]: PFDEBUG GETREG returns the HyperLogLog raw registers
[ok]: PFADD / PFCOUNT cache invalidation works
[60/66 done]: unit/hyperloglog ()
[61/66 done]: integration/psync2 ()
[ok]: AOF rewrite of set with hashtable encoding, string data
[ok]: GEOSEARCH fuzzy test - byradius
[ok]: AOF rewrite of set with intset encoding, int data
[ok]: AOF rewrite of set with hashtable encoding, int data
[ok]: AOF rewrite of hash with ziplist encoding, string data
[60/66 done]: unit/hyperloglog ()
[ok]: Test replication partial resync: ok psync (diskless: no, swapdb, reconnect: 1)
[ok]: PSYNC2: generate load while killing replication links
[ok]: PSYNC2: cluster is consistent after load (x = 326007)
[ok]: PSYNC2: total sum of full synchronizations is exactly 4
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: PSYNC2: Bring the master back again for next test
[ok]: replica buffer don't induce eviction
[ok]: PSYNC2: Partial resync after restart using RDB aux fields
[ok]: Don't rehash if used memory exceeds maxmemory after rehash
[ok]: AOF rewrite of hash with hashtable encoding, string data
[ok]: AOF rewrite of hash with ziplist encoding, int data
[ok]: AOF rewrite during write load: RDB preamble=no
[ok]: PSYNC2: Replica RDB restart with EVALSHA in backlog issue #4483
[61/66 done]: integration/psync2 ()
[ok]: client tracking don't cause eviction feedback loop
[62/66 done]: unit/maxmemory ()
[ok]: Turning off AOF kills the background writing child if any
[ok]: AOF rewrite of list with quicklist encoding, string data
[ok]: AOF rewrite of list with quicklist encoding, int data
[ok]: Test replication partial resync: no backlog (diskless: no, swapdb, reconnect: 1)
[ok]: AOF rewrite of hash with hashtable encoding, int data
[ok]: Slave should be able to synchronize with the master
[ok]: AOF rewrite of zset with ziplist encoding, string data
[ok]: Detect write load to master
[ok]: AOF rewrite of set with intset encoding, string data
[ok]: AOF rewrite of set with hashtable encoding, string data
[ok]: Connect multiple replicas at the same time (issue #141), master diskless=no, replica diskless=swapdb
[ok]: AOF rewrite of set with intset encoding, int data
[ok]: GEOSEARCH fuzzy test - bybox
[ok]: GEOSEARCH box edges fuzzy test
[63/66 done]: north ()
[ok]: AOF rewrite of set with hashtable encoding, int data
[ok]: AOF rewrite of hash with ziplist encoding, string data
[ok]: AOF rewrite of hash with hashtable encoding, string data
[ok]: AOF rewrite of hash with ziplist encoding, int data
[ok]: AOF rewrite of hash with hashtable encoding, int data
[ok]: AOF rewrite of zset with ziplist encoding, string data
[ok]: Test replication partial resync: ok after delay (diskless: no, swapdb, reconnect: 1)
[ok]: AOF rewrite of zset with skiplist encoding, string data
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: AOF rewrite of zset with ziplist encoding, int data
[ok]: AOF rewrite of zset with skiplist encoding, int data
[ok]: BGREWRITEAOF is delayed if BGSAVE is in progress
[ok]: BGREWRITEAOF is refused if already in progress
[63/66 done]: unit/aofrw ()
[ok]: GEOSEARCH fuzzy test - bybox
[ok]: GEOSEARCH box edges fuzzy test
[64/66 done]: north ()
[ok]: Test replication partial resync: ok after delay (diskless: no, swapdb, reconnect: 1)
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: Connect multiple replicas at the same time (issue #141), master diskless=no, replica diskless=swapdb
[64/66 done]: unit/aofrw ()
[ok]: Test replication partial resync: backlog expired (diskless: no, swapdb, reconnect: 1)
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
@@ -2085,32 +2086,17 @@
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: Test replication partial resync: ok psync (diskless: yes, disabled, reconnect: 1)
[ok]: Connect multiple replicas at the same time (issue #141), master diskless=yes, replica diskless=disabled
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: Connect multiple replicas at the same time (issue #141), master diskless=yes, replica diskless=disabled
[ok]: Connect multiple replicas at the same time (issue #141), master diskless=yes, replica diskless=swapdb
[ok]: Master stream is correctly processed while the replica has a script in -BUSY state
[ok]: slave fails full sync and diskless load swapdb recovers it
[ok]: diskless loading short read
[err]: diskless no replicas drop during rdb pipe in tests/integration/replication.tcl
[err]: diskless slow replicas drop during rdb pipe in tests/integration/replication.tcl
[err]: diskless fast replicas drop during rdb pipe in tests/integration/replication.tcl
[err]: diskless all replicas drop during rdb pipe in tests/integration/replication.tcl
[err]: diskless timeout replicas drop during rdb pipe in tests/integration/replication.tcl
[ok]: diskless replication child being killed is collected
[ok]: replication child dies when parent is killed - diskless: yes
[ok]: replication child dies when parent is killed - diskless: no
[ok]: diskless replication read pipe cleanup
[ok]: replicaof right after disconnection
[ok]: Kill rdb child process if its dumping RDB is not useful
[65/66 done]: integration/replication ()
[err]: Test replication partial resync: no backlog (diskless: yes, disabled, reconnect: 1) in tests/integration/replication-psync.tcl
[ok]: Test replication partial resync: no backlog (diskless: yes, disabled, reconnect: 1)
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: Test replication partial resync: ok after delay (diskless: yes, disabled, reconnect: 1)
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[err]: Test replication partial resync: backlog expired (diskless: yes, disabled, reconnect: 1) in tests/integration/replication-psync.tcl
[ok]: Connect multiple replicas at the same time (issue #141), master diskless=yes, replica diskless=swapdb
[ok]: Test replication partial resync: backlog expired (diskless: yes, disabled, reconnect: 1)
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: Test replication partial resync: no reconnection, just sync (diskless: yes, swapdb, reconnect: 0)
@@ -2120,18 +2106,27 @@
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: Test replication partial resync: no backlog (diskless: yes, swapdb, reconnect: 1)
[ok]: Master stream is correctly processed while the replica has a script in -BUSY state
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: slave fails full sync and diskless load swapdb recovers it
[ok]: diskless loading short read
[ok]: Test replication partial resync: ok after delay (diskless: yes, swapdb, reconnect: 1)
[ok]: Slave should be able to synchronize with the master
[ok]: Detect write load to master
[ok]: Test replication partial resync: backlog expired (diskless: yes, swapdb, reconnect: 1)
[66/66 done]: integration/replication-psync ()
[65/66 done]: integration/replication-psync ()
[ok]: diskless no replicas drop during rdb pipe
[ok]: diskless slow replicas drop during rdb pipe
[ok]: diskless fast replicas drop during rdb pipe
[ok]: diskless all replicas drop during rdb pipe
[ok]: diskless timeout replicas drop during rdb pipe
[ok]: diskless replication child being killed is collected
[ok]: replication child dies when parent is killed - diskless: yes
[ok]: replication child dies when parent is killed - diskless: no
[ok]: diskless replication read pipe cleanup
[ok]: replicaof right after disconnection
[ok]: Kill rdb child process if its dumping RDB is not useful
[66/66 done]: integration/replication ()
[66/66 done]: defrag ()
*** [err]: diskless no replicas drop during rdb pipe in tests/integration/replication.tcl
*** [err]: diskless slow replicas drop during rdb pipe in tests/integration/replication.tcl
*** [err]: diskless fast replicas drop during rdb pipe in tests/integration/replication.tcl
*** [err]: diskless all replicas drop during rdb pipe in tests/integration/replication.tcl
*** [err]: diskless timeout replicas drop during rdb pipe in tests/integration/replication.tcl
*** [err]: Test replication partial resync: no backlog (diskless: yes, disabled, reconnect: 1) in tests/integration/replication-psync.tcl
*** [err]: Test replication partial resync: backlog expired (diskless: yes, disabled, reconnect: 1) in tests/integration/replication-psync.tcl
\o/ All tests passed without errors!