From 3897107564a32e7da8f76744d12199133d7648a2 Mon Sep 17 00:00:00 2001
From: Andreas Wacknitz <A.Wacknitz@gmx.de>
Date: Fri, 03 Nov 2023 21:05:50 +0100
Subject: [PATCH] redis: update to 6.2.14

---
 components/database/redis/Makefile                |    4 
 components/database/redis/test/results-all.master | 2327 +++++++++++++++++++++++++++++-----------------------------
 2 files changed, 1,163 insertions(+), 1,168 deletions(-)

diff --git a/components/database/redis/Makefile b/components/database/redis/Makefile
index 57b40c8..ce493e7 100644
--- a/components/database/redis/Makefile
+++ b/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
diff --git a/components/database/redis/test/results-all.master b/components/database/redis/test/results-all.master
index 1593192..5fba1b7 100644
--- a/components/database/redis/test/results-all.master
+++ b/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!

--
Gitblit v1.9.3