Compatibility
Redis compatibility progress against the full Valkey test suite.
How far PostRESP is toward Redis compatibility for in-scope behavior, measured with the Valkey 8.1.4 test suite (unit, type, cluster, and integration). Tests marked out of scope (for example Redis replica protocol — HA is Postgres) are excluded from the pass rate. Each square is one test; hover to see its name.
11.3%
332 of 2945 in-scope tests passing
Valkey 8.1.4 · 2979 tests · 34 out of scope
Passing(332)Failing(2613)Out of scope(34)
Unit
Acl-v2
0 / 32 passing (0.0%)
| Test | Status |
|---|---|
| Cardinality commands require some type of permission to execute | Failing |
| Existence test commands are not marked as access | Failing |
| Intersection cardinaltiy commands are access commands | Failing |
| Test ACL GETUSER response information | Failing |
| Test ACL list idempotency | Failing |
| Test ACL log correctly identifies the relevant item when selectors are used | Failing |
| Test ACL selectors by default have no permissions | Failing |
| Test BITFIELD with read and write permissions | Failing |
| Test BITFIELD with separate read permission | Failing |
| Test BITFIELD with separate write permission | Failing |
| Test DRYRUN with wrong number of arguments | Failing |
| Test R+W is the same as all permissions | Failing |
| Test SET with read and write permissions | Failing |
| Test SET with separate read permission | Failing |
| Test SET with separate write permission | Failing |
| Test basic dry run functionality | Failing |
| Test basic multiple selectors | Failing |
| Test behavior of loading ACLs | Failing |
| Test deleting selectors | Failing |
| Test flexible selector definition | Failing |
| Test general keyspace commands require some type of permission to execute | Failing |
| Test selector syntax error reports the error in the selector context | Failing |
| Test separate read and write permissions | Failing |
| Test separate read and write permissions on different selectors are not additive | Failing |
| Test separate read permission | Failing |
| Test separate write permission | Failing |
| Test sharded channel permissions | Failing |
| Test sort with ACL permissions | Failing |
| Test various commands for command permissions | Failing |
| Test various odd commands for key permissions | Failing |
| Validate key permissions format - empty and omitted pattern | Failing |
| Validate read and write permissions format | Failing |
Acl
0 / 110 passing (0.0%)
| Test | Status |
|---|---|
| ACL #5998 regression: memory leaks adding / removing subcommands | Failing |
| ACL CAT category - list all commands/subcommands that belong to category | Failing |
| ACL CAT with illegal arguments | Failing |
| ACL CAT without category - list all categories | Failing |
| ACL GENPASS command failed test | Failing |
| ACL GETUSER is able to translate back command permissions | Failing |
| ACL GETUSER provides correct results | Failing |
| ACL GETUSER provides correct results when commands renamed | Failing |
| ACL GETUSER provides reasonable results | Failing |
| ACL GETUSER returns the password hash instead of the actual password | Failing |
| ACL HELP should not have unexpected options | Failing |
| ACL LOAD disconnects clients of deleted users | Failing |
| ACL LOAD only disconnects affected clients | Failing |
| ACL LOG RESET is able to flush the entries in the log | Failing |
| ACL LOG aggregates similar errors together and assigns unique entry-id to new errors | Failing |
| ACL LOG can accept a numerical argument to show less entries | Failing |
| ACL LOG can distinguish the transaction context (1) | Failing |
| ACL LOG can distinguish the transaction context (2) | Failing |
| ACL LOG can log failed auth attempts | Failing |
| ACL LOG entries are limited to a maximum amount | Failing |
| ACL LOG entries are still present on update of max len config | Failing |
| ACL LOG is able to log channel access violations and channel name | Failing |
| ACL LOG is able to log keys access violations and key name | Failing |
| ACL LOG is able to test similar events | Failing |
| ACL LOG shows failed command executions at toplevel | Failing |
| ACL LOG shows failed subcommand executions at toplevel | Failing |
| ACL SETUSER RESET reverting to default newly created user | Failing |
| ACL can log errors in the context of Lua scripting | Failing |
| ACL command classes aren’t affected by command renaming | Failing |
| ACL from config file and config rewrite | Failing |
| ACL load and save | Failing |
| ACL load and save with restricted channels | Failing |
| ACL load non-existing configured ACL file | Failing |
| ACL requires explicit permission for scripting for EVAL_RO, EVALSHA_RO and FCALL_RO | Failing |
| ACL still denies individual renamed commands | Failing |
| ACL-Metrics invalid channels accesses | Failing |
| ACL-Metrics invalid command accesses | Failing |
| ACL-Metrics invalid key accesses | Failing |
| ACL-Metrics user AUTH failure | Failing |
| ACLLOG - zero max length is correctly handled | Failing |
| ACLs can block SELECT of all but a specific DB | Failing |
| ACLs can block all DEBUG subcommands except one | Failing |
| ACLs can exclude single commands | Failing |
| ACLs can exclude single subcommands, case 1 | Failing |
| ACLs can exclude single subcommands, case 2 | Failing |
| ACLs can include or exclude whole classes of commands | Failing |
| ACLs can include single subcommands | Failing |
| ACLs cannot exclude or include a container command with two args | Failing |
| ACLs cannot exclude or include a container commands with a specific arg | Failing |
| ACLs cannot include a subcommand with a specific arg | Failing |
| ACLs including of a type includes also subcommands | Failing |
| ACLs set can exclude subcommands, if already full command exists | Failing |
| ACLs set can include subcommands, if already full command exists | Failing |
| Alice: can execute all command | Failing |
| Bob: just execute @set and acl command | Failing |
| By default users are not able to access any command | Failing |
| By default users are not able to access any key | Failing |
| By default, only default user is able to publish to any channel | Failing |
| By default, only default user is able to subscribe to any channel | Failing |
| By default, only default user is able to subscribe to any pattern | Failing |
| By default, only default user is able to subscribe to any shard channel | Failing |
| By default, only default user is not able to publish to any shard channel | Failing |
| Connections start with the default user | Failing |
| Coverage: ACL USERS | Failing |
| Default user can not be removed | Failing |
| Default user has access to all channels irrespective of flag | Failing |
| Delete a user that the client doesn’t use | Failing |
| Delete a user that the client is using | Failing |
| Enabling the user allows the login | Failing |
| In transaction queue publish/subscribe/psubscribe to unauthorized channel will fail | Failing |
| It is possible to create new users | Failing |
| It is possible to remove passwords from the set of valid ones | Failing |
| It’s possible to allow publishing to a subset of channels | Failing |
| It’s possible to allow publishing to a subset of shard channels | Failing |
| It’s possible to allow subscribing to a subset of channel patterns | Failing |
| It’s possible to allow subscribing to a subset of channels | Failing |
| It’s possible to allow subscribing to a subset of shard channels | Failing |
| It’s possible to allow the access of a subset of keys | Failing |
| New users start disabled | Failing |
| Only default user has access to all channels irrespective of flag | Failing |
| Only the set of correct passwords work | Failing |
| Single channel is not valid with allchannels | Failing |
| Single channel is valid | Failing |
| Subscribers are killed when revoked of allchannels permission | Failing |
| Subscribers are killed when revoked of channel permission | Failing |
| Subscribers are killed when revoked of pattern permission | Failing |
| Subscribers are pardoned if literal permissions are retained and/or gaining allchannels | Failing |
| Test ACL LOAD works on primary | Failing |
| Test ACL LOAD works on replica | Failing |
| Test hashed passwords removal | Failing |
| Test loading an ACL file with duplicate default user | Failing |
| Test loading an ACL file with duplicate users | Failing |
| Test loading duplicate users in config on startup | Failing |
| Test password hashes can be added | Failing |
| Test password hashes validate input | Failing |
| Update acl-pubsub-default, existing users shouldn’t get affected | Failing |
| Usernames can not contain spaces or null characters | Failing |
| Users can be configured to authenticate with any password | Failing |
| Validate subset of channels is prefixed with resetchannels flag | Failing |
| When a setname chain is used in the HELLO cmd, the last setname cmd has precedence | Failing |
| When an authentication chain is used in the HELLO cmd, the last auth cmd has precedence | Failing |
| When authentication fails in the HELLO cmd, the client setname should not be applied | Failing |
| When default user has no command permission, hello command still works for other users | Failing |
| When default user is off, new connections are not authenticated | Failing |
| blocked command gets rejected when reprocessed after permission change | Failing |
| default: load from config file with all channels permissions | Failing |
| default: load from config file, without channel permission default user can’t access any channels | Failing |
| default: load from include file, can access any channels | Failing |
| default: with config acl-pubsub-default allchannels after reset, can access any channels | Failing |
| default: with config acl-pubsub-default resetchannels after reset, can not access any channels | Failing |
Aofrw
0 / 22 passing (0.0%)
| Test | Status |
|---|---|
| AOF rewrite during write load: RDB preamble=no | Failing |
| AOF rewrite during write load: RDB preamble=yes | Failing |
| AOF rewrite functions | Failing |
| AOF rewrite of hash with hashtable encoding, int data | Failing |
| AOF rewrite of hash with hashtable encoding, string data | Failing |
| AOF rewrite of hash with listpack encoding, int data | Failing |
| AOF rewrite of hash with listpack encoding, string data | Failing |
| AOF rewrite of list with listpack encoding, int data | Failing |
| AOF rewrite of list with listpack encoding, string data | Failing |
| AOF rewrite of list with quicklist encoding, int data | Failing |
| AOF rewrite of list with quicklist encoding, string data | Failing |
| AOF rewrite of set with hashtable encoding, int data | Failing |
| AOF rewrite of set with hashtable encoding, string data | Failing |
| AOF rewrite of set with intset encoding, int data | Failing |
| AOF rewrite of set with intset encoding, string data | Failing |
| AOF rewrite of zset with listpack encoding, int data | Failing |
| AOF rewrite of zset with listpack encoding, string data | Failing |
| AOF rewrite of zset with skiplist encoding, int data | Failing |
| AOF rewrite of zset with skiplist encoding, string data | Failing |
| BGREWRITEAOF is delayed if BGSAVE is in progress | Failing |
| BGREWRITEAOF is refused if already in progress | Failing |
| Turning off AOF kills the background writing child if any | Failing |
Auth
0 / 13 passing (0.0%)
| Test | Status |
|---|---|
| AUTH fails if there is no password configured server side | Failing |
| AUTH fails when a wrong password is given | Failing |
| AUTH fails when binary password is wrong | Failing |
| AUTH succeeds when binary password is correct | Failing |
| AUTH succeeds when the right password is given | Failing |
| Arbitrary command gives an error when AUTH is required | Failing |
| Arity check for auth command | Failing |
| For once authenticated clients output buffer is NOT limited | Failing |
| For unauthenticated clients multibulk and bulk length are limited | Failing |
| For unauthenticated clients output buffer is limited | Failing |
| Once AUTH succeeded we can actually send commands to the server | Failing |
| primaryauth test with binary password dualchannel = no | Failing |
| primaryauth test with binary password dualchannel = yes | Failing |
Bitfield
0 / 22 passing (0.0%)
| Test | Status |
|---|---|
| BITFIELD #<idx> form | Failing |
| BITFIELD basic INCRBY form | Failing |
| BITFIELD chaining of multiple commands | Failing |
| BITFIELD overflow detection fuzzing | Failing |
| BITFIELD overflow wrap fuzzing | Failing |
| BITFIELD regression for #3221 | Failing |
| BITFIELD regression for #3564 | Failing |
| BITFIELD signed SET and GET basics | Failing |
| BITFIELD signed SET and GET together | Failing |
| BITFIELD signed overflow sat | Failing |
| BITFIELD signed overflow wrap | Failing |
| BITFIELD unsigned SET and GET basics | Failing |
| BITFIELD unsigned overflow sat | Failing |
| BITFIELD unsigned overflow wrap | Failing |
| BITFIELD unsigned with SET, GET and INCRBY arguments | Failing |
| BITFIELD with only key as argument | Failing |
| BITFIELD: setup slave | Failing |
| BITFIELD: write on master, read on slave | Failing |
| BITFIELD_RO fails when write option is used | Failing |
| BITFIELD_RO fails when write option is used on read-only replica | Failing |
| BITFIELD_RO with only key as argument | Failing |
| BITFIELD_RO with only key as argument on read-only replica | Failing |
Bitops
0 / 52 passing (0.0%)
| Test | Status |
|---|---|
| BIT pos larger than UINT_MAX | Failing |
| BITCOUNT against non-integer value | Failing |
| BITCOUNT against test vector #1 | Failing |
| BITCOUNT against test vector #2 | Failing |
| BITCOUNT against test vector #3 | Failing |
| BITCOUNT against test vector #4 | Failing |
| BITCOUNT against test vector #5 | Failing |
| BITCOUNT against wrong type | Failing |
| BITCOUNT fuzzing with start/end | Failing |
| BITCOUNT fuzzing without start/end | Failing |
| BITCOUNT misaligned prefix | Failing |
| BITCOUNT misaligned prefix + full words + remainder | Failing |
| BITCOUNT regression test for github issue #582 | Failing |
| BITCOUNT returns 0 against non existing key | Failing |
| BITCOUNT returns 0 with negative indexes where start > end | Failing |
| BITCOUNT returns 0 with out of range indexes | Failing |
| BITCOUNT with illegal arguments | Failing |
| BITCOUNT with just start | Failing |
| BITCOUNT with start, end | Failing |
| BITOP AND|OR|XOR don’t change the string with single input key | Failing |
| BITOP NOT (empty string) | Failing |
| BITOP NOT (known string) | Failing |
| BITOP NOT fuzzing | Failing |
| BITOP and fuzzing | Failing |
| BITOP missing key is considered a stream of zero | Failing |
| BITOP or fuzzing | Failing |
| BITOP shorter keys are zero-padded to the key with max length | Failing |
| BITOP where dest and target are the same key | Failing |
| BITOP with empty string after non empty string (issue #529) | Failing |
| BITOP with integer encoded source objects | Failing |
| BITOP with non string source key | Failing |
| BITOP xor fuzzing | Failing |
| BITPOS against non-integer value | Failing |
| BITPOS against wrong type | Failing |
| BITPOS bit=0 changes behavior if end is given | Failing |
| BITPOS bit=0 fuzzy testing using SETBIT | Failing |
| BITPOS bit=0 starting at unaligned address | Failing |
| BITPOS bit=0 unaligned+full word+reminder | Failing |
| BITPOS bit=0 with empty key returns 0 | Failing |
| BITPOS bit=0 with string less than 1 word works | Failing |
| BITPOS bit=0 works with intervals | Failing |
| BITPOS bit=1 fuzzy testing using SETBIT | Failing |
| BITPOS bit=1 returns -1 if string is all 0 bits | Failing |
| BITPOS bit=1 starting at unaligned address | Failing |
| BITPOS bit=1 unaligned+full word+reminder | Failing |
| BITPOS bit=1 with empty key returns -1 | Failing |
| BITPOS bit=1 with string less than 1 word works | Failing |
| BITPOS bit=1 works with intervals | Failing |
| BITPOS will illegal arguments | Failing |
| BITPOS/BITCOUNT fuzzy testing using SETBIT | Failing |
| SETBIT values larger than UINT32_MAX and lzf_compress/lzf_decompress correctly | Failing |
| SETBIT/BITFIELD only increase dirty when the value changed | Failing |
Client-eviction
0 / 17 passing (0.0%)
| Test | Status |
|---|---|
| avoid client eviction when client is freed by output buffer limit | Failing |
| client evicted due to client tracking prefixes | Failing |
| client evicted due to large argv | Failing |
| client evicted due to large multi buf | Failing |
| client evicted due to large query buf | Failing |
| client evicted due to output buf | Failing |
| client evicted due to percentage of maxmemory | Failing |
| client evicted due to pubsub subscriptions | Failing |
| client evicted due to tracking redirection | Failing |
| client evicted due to watched key list | Failing |
| client no-evict off | Failing |
| client no-evict on | Failing |
| client total memory grows during client no-evict | Failing |
| client total memory grows during maxmemory-clients disabled | Failing |
| decrease maxmemory-clients causes client eviction | Failing |
| evict clients in right order (large to small) | Failing |
| evict clients only until below limit | Failing |
Commandlog
0 / 20 passing (0.0%)
| Test | Status |
|---|---|
| COMMANDLOG - GET optional argument to limit output len works | Failing |
| COMMANDLOG - RESET subcommand works | Failing |
| COMMANDLOG - check that it starts with an empty log | Failing |
| COMMANDLOG - logged entry sanity check | Failing |
| COMMANDLOG - max entries is correctly handled | Failing |
| COMMANDLOG - only logs commands exceeding the threshold | Failing |
| COMMANDLOG - zero max length is correctly handled | Failing |
| COMMANDLOG slow - Certain commands are omitted that contain sensitive information | Failing |
| COMMANDLOG slow - EXEC is not logged, just executed commands | Failing |
| COMMANDLOG slow - Rewritten commands are logged as their original command | Failing |
| COMMANDLOG slow - Some commands can redact sensitive fields | Failing |
| COMMANDLOG slow - blocking command is reported only after unblocked | Failing |
| COMMANDLOG slow - can be disabled | Failing |
| COMMANDLOG slow - can clean older entries | Failing |
| COMMANDLOG slow - commands with too many arguments are trimmed | Failing |
| COMMANDLOG slow - count must be >= -1 | Failing |
| COMMANDLOG slow - get all slow logs | Failing |
| COMMANDLOG slow - the commands in script are recorded normally - is_eval: 0 | Failing |
| COMMANDLOG slow - the commands in script are recorded normally - is_eval: 1 | Failing |
| COMMANDLOG slow - too long arguments are trimmed | Failing |
Dump
0 / 29 passing (0.0%)
| Test | Status |
|---|---|
| DUMP / RESTORE are able to serialize / unserialize a simple key | Failing |
| DUMP of non existing key returns nil | Failing |
| MIGRATE AUTH: correct and wrong password cases | Failing |
| MIGRATE cached connections are released after some time | Failing |
| MIGRATE can correctly transfer hashes | Failing |
| MIGRATE can correctly transfer large values | Failing |
| MIGRATE can migrate multiple keys at once | Failing |
| MIGRATE is able to copy a key between two instances | Failing |
| MIGRATE is able to migrate a key between two instances | Failing |
| MIGRATE is caching connections | Failing |
| MIGRATE propagates TTL correctly | Failing |
| MIGRATE timeout actually works | Failing |
| MIGRATE will not overwrite existing keys, unless REPLACE is used | Failing |
| MIGRATE with multiple keys migrate just existing ones | Failing |
| MIGRATE with multiple keys must have empty key arg | Failing |
| MIGRATE with multiple keys: delete just ack keys | Failing |
| MIGRATE with multiple keys: stress command rewriting | Failing |
| RESTORE can detect a syntax error for unrecognized options | Failing |
| RESTORE can overwrite an existing key with REPLACE | Failing |
| RESTORE can set LFU | Failing |
| RESTORE can set LRU | Failing |
| RESTORE can set an absolute expire | Failing |
| RESTORE can set an arbitrary expire to the materialized key | Failing |
| RESTORE can set an expire that overflows a 32 bit integer | Failing |
| RESTORE key with future RDB version, relaxed version check | Failing |
| RESTORE key with future RDB version, strict version check | Failing |
| RESTORE returns an error of the key already exists | Failing |
| RESTORE should not store key that are already expired, with REPLACE will propagate it as DEL or UNLINK | Failing |
| RESTORE with ABSTTL in the past | Failing |
Expire
57 / 76 passing (75.0%)
| Test | Status |
|---|---|
| 5 keys in, 5 keys out | Passing |
| EXPIRE - After 2.1 seconds the key should no longer be here | Passing |
| EXPIRE - It should be still possible to read ‘x’ | Passing |
| EXPIRE - set timeouts multiple times | Passing |
| EXPIRE - write on expire should work | Passing |
| EXPIRE / EXPIREAT / PEXPIRE / PEXPIREAT Expiration time is already expired | Passing |
| EXPIRE precision is now the millisecond | Passing |
| EXPIRE with GT option on a key with higher ttl | Passing |
| EXPIRE with GT option on a key with lower ttl | Passing |
| EXPIRE with GT option on a key without ttl | Passing |
| EXPIRE with LT and XX option on a key with ttl | Passing |
| EXPIRE with LT and XX option on a key without ttl | Passing |
| EXPIRE with LT option on a key with higher ttl | Passing |
| EXPIRE with LT option on a key with lower ttl | Passing |
| EXPIRE with LT option on a key without ttl | Passing |
| EXPIRE with NX option on a key with ttl | Passing |
| EXPIRE with NX option on a key without ttl | Passing |
| EXPIRE with XX option on a key with ttl | Passing |
| EXPIRE with XX option on a key without ttl | Passing |
| EXPIRE with big integer overflows when converted to milliseconds | Passing |
| EXPIRE with big negative integer | Passing |
| EXPIRE with conflicting options: LT GT | Passing |
| EXPIRE with conflicting options: NX GT | Passing |
| EXPIRE with conflicting options: NX LT | Passing |
| EXPIRE with conflicting options: NX XX | Passing |
| EXPIRE with empty string as TTL should report an error | Passing |
| EXPIRE with negative expiry | Passing |
| EXPIRE with negative expiry on a non-valitale key | Passing |
| EXPIRE with non-existed key | Passing |
| EXPIRE with unsupported options | Passing |
| EXPIREAT - Check for EXPIRE alike behavior | Passing |
| EXPIRETIME returns absolute expiration time in seconds | Passing |
| GETEX use of PERSIST option should remove TTL | Passing |
| GETEX with big integer should report an error | Passing |
| GETEX with smallest integer should report an error | Passing |
| PERSIST can undo an EXPIRE | Passing |
| PERSIST returns 0 against non existing or non volatile keys | Passing |
| PEXPIRE can set sub-second expires | Passing |
| PEXPIRE with big integer overflow when basetime is added | Passing |
| PEXPIREAT can set sub-second expires | Passing |
| PEXPIREAT with big integer works | Passing |
| PEXPIREAT with big negative integer works | Passing |
| PEXPIRETIME returns absolute expiration time in milliseconds | Passing |
| PSETEX can set sub-second expires | Passing |
| PTTL returns time to live in milliseconds | Passing |
| SET - use KEEPTTL option, TTL should not be removed | Passing |
| SET command will remove expire | Passing |
| SET with EX with big integer should report an error | Passing |
| SET with EX with smallest integer should report an error | Passing |
| SETEX - Check value | Passing |
| SETEX - Overwrite old key | Passing |
| SETEX - Set + Expire combo operation. Check for TTL | Passing |
| SETEX - Wait for the key to expire | Passing |
| SETEX - Wrong time parameter | Passing |
| TTL / PTTL / EXPIRETIME / PEXPIRETIME return -1 if key has no expire | Passing |
| TTL / PTTL / EXPIRETIME / PEXPIRETIME return -2 if key does not exit | Passing |
| TTL returns time to live in seconds | Passing |
| Active expiration triggers hashtable shrink | Failing |
| All TTL in commands are propagated as absolute timestamp in replication stream | Failing |
| All time-to-live(TTL) in commands are propagated as absolute timestamp in milliseconds in AOF | Failing |
| Client can visit expired key in import-source state | Failing |
| EXPIRE should not resurrect keys (issue #1026) | Failing |
| First server should have role slave after REPLICAOF | Failing |
| For all replicated TTL-related commands, absolute expire times are identical on primary and replica | Failing |
| GETEX propagate as to replica as PERSIST, UNLINK, or nothing | Failing |
| GETEX use of PERSIST option should remove TTL after loadaof | Failing |
| Import mode should forbid active expiration | Failing |
| Import mode should forbid lazy expiration | Failing |
| RANDOMKEY: Lazy-expire should not be wrapped in MULTI/EXEC | Failing |
| SCAN: Lazy-expire should not be wrapped in MULTI/EXEC | Failing |
| SET - use KEEPTTL option, TTL should not be removed after loadaof | Failing |
| Server should actively expire keys incrementally | Failing |
| Server should lazy expire keys | Failing |
| Server should not propagate the read command on lazy expire | Failing |
| expired key which is created in writeable replicas should be deleted by active expiry | Failing |
| import-source can be closed when import-mode is off | Failing |
Functions
0 / 110 passing (0.0%)
| Test | Status |
|---|---|
| Connect a replica to the master instance | Failing |
| Disconnecting the replica from master instance | Failing |
| FUNCTION - Basic usage | Failing |
| FUNCTION - Create a library with wrong name format | Failing |
| FUNCTION - Create an already exiting library raise error | Failing |
| FUNCTION - Create an already exiting library raise error (case insensitive) | Failing |
| FUNCTION - Create library with unexisting engine | Failing |
| FUNCTION - Load with unknown argument | Failing |
| FUNCTION - Test uncompiled script | Failing |
| FUNCTION - allow stale | Failing |
| FUNCTION - call on replica | Failing |
| FUNCTION - create on read only replica | Failing |
| FUNCTION - creation is replicated to replica | Failing |
| FUNCTION - delete is replicated to replica | Failing |
| FUNCTION - delete on read only replica | Failing |
| FUNCTION - deny oom | Failing |
| FUNCTION - deny oom on no-writes function | Failing |
| FUNCTION - flush is replicated to replica | Failing |
| FUNCTION - function effect is replicated to replica | Failing |
| FUNCTION - function stats | Failing |
| FUNCTION - function stats cleaned after flush | Failing |
| FUNCTION - function stats delete library | Failing |
| FUNCTION - function stats reloaded correctly from rdb | Failing |
| FUNCTION - function test empty engine | Failing |
| FUNCTION - function test multiple names | Failing |
| FUNCTION - function test name with quotes | Failing |
| FUNCTION - function test no name | Failing |
| FUNCTION - function test unknown metadata value | Failing |
| FUNCTION - modify key space of read only replica | Failing |
| FUNCTION - restore is replicated to replica | Failing |
| FUNCTION - test command get keys on fcall | Failing |
| FUNCTION - test command get keys on fcall_ro | Failing |
| FUNCTION - test debug reload different options | Failing |
| FUNCTION - test debug reload with nosave and noflush | Failing |
| FUNCTION - test delete on not exiting library | Failing |
| FUNCTION - test fcall bad arguments | Failing |
| FUNCTION - test fcall bad number of keys arguments | Failing |
| FUNCTION - test fcall negative number of keys | Failing |
| FUNCTION - test fcall_ro with read only commands | Failing |
| FUNCTION - test fcall_ro with write command | Failing |
| FUNCTION - test flushall and flushdb do not clean functions | Failing |
| FUNCTION - test function case insensitive | Failing |
| FUNCTION - test function delete | Failing |
| FUNCTION - test function dump and restore | Failing |
| FUNCTION - test function dump and restore with append argument | Failing |
| FUNCTION - test function dump and restore with flush argument | Failing |
| FUNCTION - test function dump and restore with replace argument | Failing |
| FUNCTION - test function flush | Failing |
| FUNCTION - test function kill | Failing |
| FUNCTION - test function kill not working on eval | Failing |
| FUNCTION - test function kill when function is not running | Failing |
| FUNCTION - test function list libraryname multiple times | Failing |
| FUNCTION - test function list with bad argument to library name | Failing |
| FUNCTION - test function list with code | Failing |
| FUNCTION - test function list with pattern | Failing |
| FUNCTION - test function list withcode multiple times | Failing |
| FUNCTION - test function list wrong argument | Failing |
| FUNCTION - test function restore with bad payload do not drop existing functions | Failing |
| FUNCTION - test function restore with function name collision | Failing |
| FUNCTION - test function restore with wrong number of arguments | Failing |
| FUNCTION - test function stats on loading failure | Failing |
| FUNCTION - test function wrong argument | Failing |
| FUNCTION - test getmetatable on script load | Failing |
| FUNCTION - test keys and argv | Failing |
| FUNCTION - test loading from rdb | Failing |
| FUNCTION - test replace argument | Failing |
| FUNCTION - test replace argument with failure keeps old libraries | Failing |
| FUNCTION - test replication to replica on rdb phase | Failing |
| FUNCTION - test replication to replica on rdb phase info command | Failing |
| FUNCTION - test script kill not working on function | Failing |
| FUNCTION - test wrong subcommand | Failing |
| FUNCTION - trick global protection 1 | Failing |
| FUNCTION - unknown flag | Failing |
| FUNCTION - valkey version api | Failing |
| FUNCTION - verify OOM on function load and function restore | Failing |
| FUNCTION - verify allow-omm allows running any command | Failing |
| FUNCTION - write script on fcall_ro | Failing |
| FUNCTION - write script with no-writes flag | Failing |
| FUNCTION - wrong flag type | Failing |
| FUNCTION - wrong flags type named arguments | Failing |
| FUNCTION can processes create, delete and flush commands in AOF when doing “debug loadaof” in read-only slaves | Failing |
| LIBRARIES - delete removed all functions on library | Failing |
| LIBRARIES - load timeout | Failing |
| LIBRARIES - malicious access test | Failing |
| LIBRARIES - math.random from function load | Failing |
| LIBRARIES - named arguments | Failing |
| LIBRARIES - named arguments, bad callback type | Failing |
| LIBRARIES - named arguments, bad description | Failing |
| LIBRARIES - named arguments, bad function name | Failing |
| LIBRARIES - named arguments, missing callback | Failing |
| LIBRARIES - named arguments, missing function name | Failing |
| LIBRARIES - named arguments, unknown argument | Failing |
| LIBRARIES - redis.acl_check_cmd from function load | Failing |
| LIBRARIES - redis.call from function load | Failing |
| LIBRARIES - redis.set_repl from function load | Failing |
| LIBRARIES - redis.setresp from function load | Failing |
| LIBRARIES - register function inside a function | Failing |
| LIBRARIES - register library with no functions | Failing |
| LIBRARIES - test registration failure revert the entire load | Failing |
| LIBRARIES - test registration function name collision | Failing |
| LIBRARIES - test registration function name collision on same library | Failing |
| LIBRARIES - test registration with empty name | Failing |
| LIBRARIES - test registration with no argument | Failing |
| LIBRARIES - test registration with no string name | Failing |
| LIBRARIES - test registration with only name | Failing |
| LIBRARIES - test registration with to many arguments | Failing |
| LIBRARIES - test registration with wrong name format | Failing |
| LIBRARIES - test shared function can access default globals | Failing |
| LIBRARIES - usage and code sharing | Failing |
| LIBRARIES - verify global protection on the load run | Failing |
Geo
0 / 64 passing (0.0%)
| Test | Status |
|---|---|
| Check geoset values | Failing |
| GEO BYLONLAT with empty search | Failing |
| GEO BYMEMBER with non existing member | Failing |
| GEO with non existing src key | Failing |
| GEO with wrong type src key | Failing |
| GEOADD create | Failing |
| GEOADD invalid coordinates | Failing |
| GEOADD multi add | Failing |
| GEOADD update | Failing |
| GEOADD update with CH NX option | Failing |
| GEOADD update with CH XX option | Failing |
| GEOADD update with CH option | Failing |
| GEOADD update with NX option | Failing |
| GEOADD update with XX NX option will return syntax error | Failing |
| GEOADD update with XX option | Failing |
| GEOADD update with invalid option | Failing |
| GEODIST missing elements | Failing |
| GEODIST simple & unit | Failing |
| GEOHASH is able to return geohash strings | Failing |
| GEOHASH with only key as argument | Failing |
| GEOPOS missing element | Failing |
| GEOPOS simple | Failing |
| GEOPOS with only key as argument | Failing |
| GEORADIUS HUGE, issue #2767 | Failing |
| GEORADIUS STORE option: syntax error | Failing |
| GEORADIUS simple (sorted) | Failing |
| GEORADIUS with ANY but no COUNT | Failing |
| GEORADIUS with ANY not sorted by default | Failing |
| GEORADIUS with ANY sorted by ASC | Failing |
| GEORADIUS with COUNT | Failing |
| GEORADIUS with COUNT DESC | Failing |
| GEORADIUS with COUNT but missing integer argument | Failing |
| GEORADIUS with multiple WITH* tokens | Failing |
| GEORADIUS withdist (sorted) | Failing |
| GEORADIUSBYMEMBER STORE/STOREDIST option: plain usage | Failing |
| GEORADIUSBYMEMBER crossing pole search | Failing |
| GEORADIUSBYMEMBER search areas contain satisfied points in oblique direction | Failing |
| GEORADIUSBYMEMBER simple (sorted) | Failing |
| GEORADIUSBYMEMBER withdist (sorted) | Failing |
| GEORADIUSBYMEMBER_RO simple (sorted) | Failing |
| GEORADIUS_RO simple (sorted) | Failing |
| GEORANGE STORE option: incompatible options | Failing |
| GEORANGE STORE option: plain usage | Failing |
| GEORANGE STOREDIST option: COUNT ASC and DESC | Failing |
| GEORANGE STOREDIST option: plain usage | Failing |
| GEOSEARCH BYRADIUS and BYBOX cannot exist at the same time | Failing |
| GEOSEARCH BYRADIUS and BYBOX one must exist | Failing |
| GEOSEARCH FROMLONLAT and FROMMEMBER cannot exist at the same time | Failing |
| GEOSEARCH FROMLONLAT and FROMMEMBER one must exist | Failing |
| GEOSEARCH FROMMEMBER simple (sorted) | Failing |
| GEOSEARCH box edges fuzzy test | Failing |
| GEOSEARCH corner point test | Failing |
| GEOSEARCH fuzzy test - bybox | Failing |
| GEOSEARCH fuzzy test - byradius | Failing |
| GEOSEARCH non square, long and narrow | Failing |
| GEOSEARCH simple (sorted) | Failing |
| GEOSEARCH the box spans -180° or 180° | Failing |
| GEOSEARCH vs GEORADIUS | Failing |
| GEOSEARCH with STOREDIST option | Failing |
| GEOSEARCH with small distance | Failing |
| GEOSEARCH withdist (sorted) | Failing |
| GEOSEARCHSTORE STORE option: plain usage | Failing |
| GEOSEARCHSTORE STORE option: syntax error | Failing |
| GEOSEARCHSTORE STOREDIST option: plain usage | Failing |
Hyperloglog
0 / 27 passing (0.0%)
| Test | Status |
|---|---|
| Approximated cardinality after creation is zero | Failing |
| CVE-2025-32023: Sparse HLL XZERO overflow triggers crash | Failing |
| Change hll-sparse-max-bytes | Failing |
| Corrupted dense HyperLogLogs are detected: Wrong length | Failing |
| Corrupted sparse HyperLogLogs are detected: Additional at tail | Failing |
| Corrupted sparse HyperLogLogs are detected: Broken magic | Failing |
| Corrupted sparse HyperLogLogs are detected: Invalid encoding | Failing |
| Fuzzing dense/sparse encoding: Server should always detect errors | Failing |
| HyperLogLog self test passes | Failing |
| HyperLogLog sparse encoding stress test | Failing |
| HyperLogLogs are promote from sparse to dense | Failing |
| Hyperloglog promote to dense well in different hll-sparse-max-bytes | Failing |
| PFADD / PFCOUNT cache invalidation works | Failing |
| PFADD returns 0 when no reg was modified | Failing |
| PFADD returns 1 when at least 1 reg was modified | Failing |
| PFADD without arguments creates an HLL value | Failing |
| PFADD works with empty string (regression) | Failing |
| PFADD, PFCOUNT, PFMERGE type checking works | Failing |
| PFCOUNT multiple-keys merge returns cardinality of union #1 | Failing |
| PFCOUNT multiple-keys merge returns cardinality of union #2 | Failing |
| PFCOUNT returns approximated cardinality of set | Failing |
| PFDEBUG GETREG returns the HyperLogLog raw registers | Failing |
| PFMERGE on missing source keys will create an empty destkey | Failing |
| PFMERGE results on the cardinality of union of sets | Failing |
| PFMERGE results with simd | Failing |
| PFMERGE with one empty input key, create an empty destkey | Failing |
| PFMERGE with one non-empty input key, dest key is actually one of the source keys | Failing |
Info-command
0 / 4 passing (0.0%)
| Test | Status |
|---|---|
| Extract version and sha1 details from info command and print | Failing |
| info command with at most one sub command | Failing |
| info command with multiple sub-sections | Failing |
| info command with one sub-section | Failing |
Info
0 / 25 passing (0.0%)
| Test | Status |
|---|---|
| clients: pubsub clients | Failing |
| clients: watching clients | Failing |
| errorstats: blocking commands | Failing |
| errorstats: failed call NOGROUP error | Failing |
| errorstats: failed call NOSCRIPT error | Failing |
| errorstats: failed call authentication error | Failing |
| errorstats: failed call within LUA | Failing |
| errorstats: failed call within MULTI/EXEC | Failing |
| errorstats: limit errors will not increase indefinitely | Failing |
| errorstats: rejected call by OOM error | Failing |
| errorstats: rejected call by authorization error | Failing |
| errorstats: rejected call due to wrong arity | Failing |
| errorstats: rejected call unknown command | Failing |
| errorstats: rejected call within MULTI/EXEC | Failing |
| latencystats: bad configure percentiles | Failing |
| latencystats: blocking commands | Failing |
| latencystats: configure percentiles | Failing |
| latencystats: disable/enable | Failing |
| latencystats: measure latency | Failing |
| latencystats: subcommands | Failing |
| memory: database and pubsub overhead and rehashing dict count | Failing |
| stats: client input and output buffer limit disconnections | Failing |
| stats: debug metrics | Failing |
| stats: eventloop metrics | Failing |
| stats: instantaneous metrics | Failing |
Introspection-2
0 / 47 passing (0.0%)
| Test | Status |
|---|---|
| BITFIELD command will not be marked with movablekeys | Failing |
| BLPOP command will not be marked with movablekeys | Failing |
| COMMAND COUNT get total number of commands | Failing |
| COMMAND GETKEYS EVAL with keys | Failing |
| COMMAND GETKEYS EVAL without keys | Failing |
| COMMAND GETKEYS GET | Failing |
| COMMAND GETKEYS LCS | Failing |
| COMMAND GETKEYS MEMORY USAGE | Failing |
| COMMAND GETKEYS MORE THAN 256 KEYS | Failing |
| COMMAND GETKEYS XGROUP | Failing |
| COMMAND GETKEYSANDFLAGS | Failing |
| COMMAND INFO of invalid subcommands | Failing |
| COMMAND LIST FILTERBY ACLCAT - list all commands/subcommands | Failing |
| COMMAND LIST FILTERBY ACLCAT against non existing category | Failing |
| COMMAND LIST FILTERBY MODULE against non existing module | Failing |
| COMMAND LIST FILTERBY PATTERN - list all commands/subcommands | Failing |
| COMMAND LIST WITHOUT FILTERBY | Failing |
| COMMAND LIST syntax error | Failing |
| EVAL command is marked with movablekeys | Failing |
| GEORADIUS command is marked with movablekeys | Failing |
| GEORADIUS_RO command will not be marked with movablekeys | Failing |
| GET command will not be marked with movablekeys | Failing |
| LMOVE command will not be marked with movablekeys | Failing |
| LPOP command will not be marked with movablekeys | Failing |
| MEMORY command will not be marked with movablekeys | Failing |
| MEMORY|USAGE command will not be marked with movablekeys | Failing |
| MIGRATE command is marked with movablekeys | Failing |
| MSET command will not be marked with movablekeys | Failing |
| Operations in no-touch mode do not alter the last access time of a key | Failing |
| PING command will not be marked with movablekeys | Failing |
| RENAME command will not be marked with movablekeys | Failing |
| SET command will not be marked with movablekeys | Failing |
| SORT command is marked with movablekeys | Failing |
| SORT_RO command is marked with movablekeys | Failing |
| TOUCH alters the last access time of a key | Failing |
| TOUCH alters the last access time of a key in no-touch mode | Failing |
| TOUCH returns the number of existing keys specified | Failing |
| TTL, TYPE and EXISTS do not alter the last access time of a key | Failing |
| The microsecond part of the TIME command will not overflow | Failing |
| XREAD command is marked with movablekeys | Failing |
| ZUNIONSTORE command is marked with movablekeys | Failing |
| command stats for BRPOP | Failing |
| command stats for EXPIRE | Failing |
| command stats for GEOADD | Failing |
| command stats for MULTI | Failing |
| command stats for scripts | Failing |
| errors stats for GEOADD | Failing |
Introspection
0 / 67 passing (0.0%)
| Test | Status |
|---|---|
| After CLIENT SETNAME, connection can still be closed | Failing |
| CLIENT GETNAME check if name set correctly | Failing |
| CLIENT GETNAME should return NIL if name is not assigned | Failing |
| CLIENT INFO | Failing |
| CLIENT KILL SKIPME YES/NO will kill all clients | Failing |
| CLIENT KILL close the client connection during bgsave | Failing |
| CLIENT KILL maxAGE will kill old clients | Failing |
| CLIENT KILL with illegal arguments | Failing |
| CLIENT LIST | Failing |
| CLIENT LIST shows empty fields for unassigned names | Failing |
| CLIENT LIST with ADDR filter | Failing |
| CLIENT LIST with IDs | Failing |
| CLIENT LIST with LADDR filter | Failing |
| CLIENT LIST with MAXAGE filter | Failing |
| CLIENT LIST with SKIPME filter | Failing |
| CLIENT LIST with TYPE filter | Failing |
| CLIENT LIST with USER filter | Failing |
| CLIENT LIST with filters matching no clients | Failing |
| CLIENT LIST with illegal arguments | Failing |
| CLIENT LIST with multiple IDs and TYPE filter | Failing |
| CLIENT REPLY OFF/ON: disable all commands reply | Failing |
| CLIENT REPLY ON: unset SKIP flag | Failing |
| CLIENT REPLY SKIP: skip the next command reply | Failing |
| CLIENT SETINFO can clear library name | Failing |
| CLIENT SETINFO can set a library name to this connection | Failing |
| CLIENT SETINFO invalid args | Failing |
| CLIENT SETNAME can assign a name to this connection | Failing |
| CLIENT SETNAME can change the name of an existing connection | Failing |
| CLIENT SETNAME does not accept spaces | Failing |
| CLIENT command unhappy path coverage | Failing |
| CONFIG GET hidden configs | Failing |
| CONFIG GET multiple args | Failing |
| CONFIG REWRITE handles alias config properly | Failing |
| CONFIG REWRITE handles rename-command properly | Failing |
| CONFIG REWRITE handles save and shutdown properly | Failing |
| CONFIG REWRITE sanity | Failing |
| CONFIG SET duplicate configs | Failing |
| CONFIG SET rollback on apply error | Failing |
| CONFIG SET rollback on set error | Failing |
| CONFIG SET set immutable | Failing |
| CONFIG SET with multiple args | Failing |
| CONFIG sanity | Failing |
| CONFIG save params special case handled properly | Failing |
| MEMORY commands during loading | Failing |
| MONITOR can log commands issued by functions | Failing |
| MONITOR can log commands issued by the scripting engine | Failing |
| MONITOR can log executed commands | Failing |
| MONITOR correctly handles multi-exec cases | Failing |
| MONITOR correctly records SET EX in MULTI-EXEC | Failing |
| MONITOR log blocked command only once | Failing |
| MONITOR properly escapes special characters through sdscatrepr | Failing |
| MONITOR supports redacting command arguments | Failing |
| PING | Failing |
| RESET does NOT clean library name | Failing |
| cannot modify protected configuration - local | Failing |
| cannot modify protected configuration - no | Failing |
| client input output and command process statistics | Failing |
| config during loading | Failing |
| tot-net-out for replica client | Failing |
valkey-server command line arguments - allow option value to use the -- prefix |
Failing |
| valkey-server command line arguments - allow passing option name and option value in the same arg | Failing |
| valkey-server command line arguments - dir multiple times | Failing |
| valkey-server command line arguments - error cases | Failing |
valkey-server command line arguments - option name and option value in the same arg and -- prefix |
Failing |
| valkey-server command line arguments - save with empty input | Failing |
| valkey-server command line arguments - take one bulk string with spaces for MULTI_ARG configs parsing | Failing |
| valkey-server command line arguments - wrong usage that we support anyway | Failing |
Keyspace
14 / 58 passing (24.1%)
| Test | Status |
|---|---|
| DBSIZE | Passing |
| DEL against a single item | Passing |
| DEL all keys | Passing |
| EXISTS | Passing |
| KEYS * two times with long key, Github issue #1208 | Passing |
| KEYS to get all keys | Passing |
| KEYS with empty DB | Passing |
| KEYS with hashtag | Passing |
| KEYS with pattern | Passing |
| RANDOMKEY | Passing |
| RANDOMKEY against empty DB | Passing |
| RANDOMKEY regression 1 | Passing |
| Vararg DEL | Passing |
| Zero length value in key. SET/GET/EXISTS | Passing |
| COPY basic usage for $type set | Failing |
| COPY basic usage for hashtable hash | Failing |
| COPY basic usage for list - listpack | Failing |
| COPY basic usage for list - quicklist | Failing |
| COPY basic usage for listpack hash | Failing |
| COPY basic usage for listpack sorted set | Failing |
| COPY basic usage for skiplist sorted set | Failing |
| COPY basic usage for stream | Failing |
| COPY basic usage for stream-cgroups | Failing |
| COPY basic usage for string | Failing |
| COPY can copy key expire metadata as well | Failing |
| COPY does not create an expire if it does not exist | Failing |
| COPY for string can replace an existing key with REPLACE option | Failing |
| COPY for string does not copy data to no-integer DB | Failing |
| COPY for string does not replace an existing key without REPLACE option | Failing |
| COPY for string ensures that copied data is independent of copying data | Failing |
| Commands pipelining | Failing |
| Coverage: SWAPDB and FLUSHDB | Failing |
| Coverage: basic SWAPDB test and unhappy path | Failing |
| DEL against expired key | Failing |
| DEL all keys again (DB 0) | Failing |
| DEL all keys again (DB 1) | Failing |
| MOVE against key existing in the target DB | Failing |
| MOVE against non-integer DB (#1428) | Failing |
| MOVE basic usage | Failing |
| MOVE can move key expire metadata as well | Failing |
| MOVE does not create an expire if it does not exist | Failing |
| Non existing command | Failing |
| RENAME against already existing key | Failing |
| RENAME against non existing source key | Failing |
| RENAME basic usage | Failing |
| RENAME source key should no longer exist | Failing |
| RENAME where source and dest key are the same (existing) | Failing |
| RENAME where source and dest key are the same (non existing) | Failing |
| RENAME with volatile key, should move the TTL as well | Failing |
| RENAME with volatile key, should not inherit TTL of target key | Failing |
| RENAMENX against already existing key | Failing |
| RENAMENX against already existing key (2) | Failing |
| RENAMENX basic usage | Failing |
| RENAMENX where source and dest key are the same (existing) | Failing |
| Regression for pattern matching long nested loops | Failing |
| Regression for pattern matching very long nested loops | Failing |
| SET/GET keys in different DBs | Failing |
| Untagged multi-key commands | Failing |
Latency-monitor
0 / 15 passing (0.0%)
| Test | Status |
|---|---|
| LATENCY DOCTOR produces some output | Failing |
| LATENCY GRAPH can output the event graph | Failing |
| LATENCY HELP should not have unexpected options | Failing |
| LATENCY HISTOGRAM all commands | Failing |
| LATENCY HISTOGRAM command | Failing |
| LATENCY HISTOGRAM sub commands | Failing |
| LATENCY HISTOGRAM with a subset of commands | Failing |
| LATENCY HISTOGRAM with empty histogram | Failing |
| LATENCY HISTOGRAM with wrong command name skips the invalid one | Failing |
| LATENCY HISTORY / RESET with wrong event name is fine | Failing |
| LATENCY HISTORY output is ok | Failing |
| LATENCY LATEST output is ok | Failing |
| LATENCY RESET is able to reset events | Failing |
| LATENCY of expire events are correctly collected | Failing |
| Test latency events logging | Failing |
Lazyfree
0 / 4 passing (0.0%)
| Test | Status |
|---|---|
| FLUSHDB ASYNC can reclaim memory in background | Failing |
| UNLINK can reclaim memory in background | Failing |
| lazy free a stream with all types of metadata | Failing |
| lazy free a stream with deleted cgroup | Failing |
Limits
0 / 1 passing (0.0%)
| Test | Status |
|---|---|
| Check if maxclients works refusing connections | Failing |
Maxmemory
0 / 30 passing (0.0%)
| Test | Status |
|---|---|
| Don’t rehash if used memory exceeds maxmemory after rehash | Failing |
| Import mode should forbid eviction | Failing |
| client tracking don’t cause eviction feedback loop | Failing |
| eviction due to input buffer of a dead client, client eviction: false | Failing |
| eviction due to input buffer of a dead client, client eviction: true | Failing |
| eviction due to output buffers of many MGET clients, client eviction: false | Failing |
| eviction due to output buffers of many MGET clients, client eviction: true | Failing |
| eviction due to output buffers of pubsub, client eviction: false | Failing |
| eviction due to output buffers of pubsub, client eviction: true | Failing |
| lru/lfu value of the key just added | Failing |
| maxmemory - is the memory limit honoured? (policy allkeys-lfu) | Failing |
| maxmemory - is the memory limit honoured? (policy allkeys-lru) | Failing |
| maxmemory - is the memory limit honoured? (policy allkeys-random) | Failing |
| maxmemory - is the memory limit honoured? (policy volatile-lfu) | Failing |
| maxmemory - is the memory limit honoured? (policy volatile-lru) | Failing |
| maxmemory - is the memory limit honoured? (policy volatile-random) | Failing |
| maxmemory - is the memory limit honoured? (policy volatile-ttl) | Failing |
| maxmemory - only allkeys-* should remove non-volatile keys (allkeys-lru) | Failing |
| maxmemory - only allkeys-* should remove non-volatile keys (allkeys-random) | Failing |
| maxmemory - only allkeys-* should remove non-volatile keys (volatile-lru) | Failing |
| maxmemory - only allkeys-* should remove non-volatile keys (volatile-random) | Failing |
| maxmemory - only allkeys-* should remove non-volatile keys (volatile-ttl) | Failing |
| maxmemory - policy volatile-lfu should only remove volatile keys. | Failing |
| maxmemory - policy volatile-lru should only remove volatile keys. | Failing |
| maxmemory - policy volatile-random should only remove volatile keys. | Failing |
| maxmemory - policy volatile-ttl should only remove volatile keys. | Failing |
| propagation with eviction | Failing |
| propagation with eviction in MULTI | Failing |
| replica buffer don’t induce eviction | Failing |
| slave buffer are counted correctly | Failing |
Memefficiency
0 / 5 passing (0.0%)
| Test | Status |
|---|---|
| Memory efficiency with values in range 1024 | Failing |
| Memory efficiency with values in range 128 | Failing |
| Memory efficiency with values in range 16384 | Failing |
| Memory efficiency with values in range 32 | Failing |
| Memory efficiency with values in range 64 | Failing |
Multi
0 / 64 passing (0.0%)
| Test | Status |
|---|---|
| AUTH errored inside MULTI will add the reply | Failing |
| After failed EXEC key is no longer watched | Failing |
| After successful EXEC key is no longer watched | Failing |
| Blocking commands ignores the timeout | Failing |
| DISCARD | Failing |
| DISCARD should UNWATCH all the keys | Failing |
| DISCARD should clear the WATCH dirty flag on the client | Failing |
| DISCARD should not fail during OOM | Failing |
| Delete WATCHed stale keys should not fail EXEC | Failing |
| EXEC and script timeout | Failing |
| EXEC fail on WATCHed key modified (1 key of 1 watched) | Failing |
| EXEC fail on WATCHed key modified (1 key of 5 watched) | Failing |
| EXEC fail on WATCHed key modified by SORT with STORE even if the result is empty | Failing |
| EXEC fail on lazy expired WATCHed key | Failing |
| EXEC fails if there are errors while queueing commands #1 | Failing |
| EXEC fails if there are errors while queueing commands #2 | Failing |
| EXEC with at least one use-memory command should fail | Failing |
| EXEC with only read commands should not be rejected when OOM | Failing |
| EXEC works on WATCHed key not modified | Failing |
| FLUSHALL does not touch non affected keys | Failing |
| FLUSHALL is able to touch the watched keys | Failing |
| FLUSHDB does not touch non affected keys | Failing |
| FLUSHDB is able to touch the watched keys | Failing |
| FLUSHDB while watching stale keys should not fail EXEC | Failing |
| Flushall while watching several keys by one client | Failing |
| If EXEC aborts, the client MULTI state is cleared | Failing |
| It is possible to UNWATCH | Failing |
| MULTI / EXEC basics | Failing |
| MULTI / EXEC is not propagated (single write command) | Failing |
| MULTI / EXEC is propagated correctly (empty transaction) | Failing |
| MULTI / EXEC is propagated correctly (multiple commands with SELECT) | Failing |
| MULTI / EXEC is propagated correctly (multiple commands) | Failing |
| MULTI / EXEC is propagated correctly (read-only commands) | Failing |
| MULTI / EXEC is propagated correctly (write command, no effect) | Failing |
| MULTI / EXEC with REPLICAOF | Failing |
| MULTI and script timeout | Failing |
| MULTI propagation of EVAL | Failing |
| MULTI propagation of PUBLISH | Failing |
| MULTI propagation of SCRIPT FLUSH | Failing |
| MULTI propagation of SCRIPT LOAD | Failing |
| MULTI propagation of XREADGROUP | Failing |
| MULTI where commands alter argc/argv | Failing |
| MULTI with BGREWRITEAOF | Failing |
| MULTI with FLUSHALL and AOF | Failing |
| MULTI with SAVE | Failing |
| MULTI with SHUTDOWN | Failing |
| MULTI with config error | Failing |
| MULTI with config set appendonly | Failing |
| MULTI-EXEC body and script timeout | Failing |
| Nested MULTI are not allowed | Failing |
| SWAPDB does not touch non-existing key replaced with stale key | Failing |
| SWAPDB does not touch stale key replaced with another stale key | Failing |
| SWAPDB does not touch watched stale keys | Failing |
| SWAPDB is able to touch the watched keys that do not exist | Failing |
| SWAPDB is able to touch the watched keys that exist | Failing |
| UNWATCH when there is nothing watched works as expected | Failing |
| WATCH inside MULTI is not allowed | Failing |
| WATCH is able to remember the DB a key belongs to | Failing |
| WATCH stale keys should not fail EXEC | Failing |
| WATCH will consider touched expired keys | Failing |
| WATCH will consider touched keys target of EXPIRE | Failing |
| exec with read commands and stale replica state change | Failing |
| exec with write commands and state change | Failing |
| just EXEC and script timeout | Failing |
Networking
0 / 9 passing (0.0%)
| Test | Status |
|---|---|
| CONFIG SET bind address | Failing |
| CONFIG SET bind-source-addr | Failing |
| CONFIG SET port number | Failing |
| Default bind address configuration handling | Failing |
| Protected mode works as expected | Failing |
| no prefetch when the batch size is set to 0 | Failing |
| prefetch works as expected when changing the batch size while executing the commands batch | Failing |
| prefetch works as expected when killing a client from the middle of prefetch commands batch | Failing |
| replicas writes are offloaded to IO threads | Failing |
Obuf-limits
0 / 9 passing (0.0%)
| Test | Status |
|---|---|
| CONFIG SET client-output-buffer-limit | Failing |
| Client output buffer hard limit is enforced | Failing |
| Client output buffer soft limit is enforced if time is overreached | Failing |
| Client output buffer soft limit is not enforced too early and is enforced when no traffic | Failing |
| Execute transactions completely even if client output buffer limit is enforced | Failing |
| No response for multi commands in pipeline if client output buffer limit is enforced | Failing |
| No response for single command if client output buffer hard limit is enforced | Failing |
| Obuf limit, HRANDFIELD with huge count stopped mid-run | Failing |
| Obuf limit, KEYS stopped mid-run | Failing |
Other
1 / 33 passing (3.0%)
| Test | Status |
|---|---|
| RESET clears Pub/Sub state | Passing |
| APPEND basics | Failing |
| APPEND basics, integer encoded values | Failing |
| APPEND fuzzing | Failing |
| BGSAVE | Failing |
| Check consistency of different data types after a reload | Failing |
| Coverage: ECHO | Failing |
| Coverage: HELP commands | Failing |
| Coverage: MEMORY MALLOC-STATS | Failing |
| Coverage: MEMORY PURGE | Failing |
| Don’t rehash if server has child process | Failing |
| EXPIRES after AOF reload (without rewrite) | Failing |
| EXPIRES after a reload (snapshot + append only file rewrite) | Failing |
| Extended Redis Compatibility config | Failing |
| FLUSHALL should not reset the dirty counter if we disable save | Failing |
| FLUSHALL should reset the dirty counter to 0 if we enable save | Failing |
| FLUSHDB | Failing |
| FUZZ stresser with data model alpha | Failing |
| FUZZ stresser with data model binary | Failing |
| FUZZ stresser with data model compr | Failing |
| PIPELINING stresser (also a regression for the old epoll bug) | Failing |
| Perform a final SAVE to leave a clean DB on disk | Failing |
| Process title set as expected | Failing |
| RESET clears MONITOR state | Failing |
| RESET clears and discards MULTI state | Failing |
| RESET clears authenticated state | Failing |
| RESET clears client state | Failing |
| SAVE - make sure there are all the types as values | Failing |
| SELECT an out of range DB | Failing |
| Same dataset digest if saving/reloading as AOF? | Failing |
| Server can resize empty dict | Failing |
| Subcommand syntax error crash (issue #10070) | Failing |
| test unixsocket options are set correctly | Failing |
Pause
0 / 22 passing (0.0%)
| Test | Status |
|---|---|
| CLIENT UNBLOCK is not allow to unblock client blocked by CLIENT PAUSE | Failing |
| Test RO scripts are not blocked by pause RO | Failing |
| Test both active and passive expires are skipped during client pause | Failing |
| Test check paused info in info clients | Failing |
| Test clients with syntax errors will get responses immediately | Failing |
| Test eviction is skipped during client pause | Failing |
| Test may-replicate commands are rejected in RO scripts | Failing |
| Test multiple clients can be queued up and unblocked | Failing |
| Test new pause time is smaller than old one, then old time preserved | Failing |
| Test old pause-all takes precedence over new pause-write (less restrictive) | Failing |
| Test read commands are not blocked by client pause | Failing |
| Test read-only scripts in multi-exec are not blocked by pause RO | Failing |
| Test read/admin multi-execs are not blocked by pause RO | Failing |
| Test replica offset would grow after unpause | Failing |
| Test scripts are blocked by pause RO | Failing |
| Test special commands are paused by RO | Failing |
| Test that client pause starts at the end of a transaction | Failing |
| Test the randomkey command will not cause the server to get into an infinite loop during the client pause write | Failing |
| Test when replica paused, offset would not grow | Failing |
| Test write commands are paused by RO | Failing |
| Test write multi-execs are blocked by pause RO | Failing |
| Test write scripts in multi-exec are blocked by pause RO | Failing |
Protocol
0 / 28 passing (0.0%)
| Test | Status |
|---|---|
| Generic wrong number of args | Failing |
| HELLO and availability-zone | Failing |
| HELLO without protover | Failing |
| Handle an empty query | Failing |
| Multi bulk request not followed by bulk arguments | Failing |
| Negative multibulk length | Failing |
| Negative multibulk payload length | Failing |
| Non-number multibulk payload length | Failing |
| Out of range multibulk length | Failing |
| Out of range multibulk payload length | Failing |
| Protocol desync regression test #1 | Failing |
| Protocol desync regression test #2 | Failing |
| Protocol desync regression test #3 | Failing |
| Protocol desync regression test #4 | Failing |
| RESP3 attributes | Failing |
| RESP3 attributes on RESP2 | Failing |
| RESP3 attributes readraw | Failing |
| Regression for a crash with blocking ops and pipelining | Failing |
| Unbalanced number of quotes | Failing |
| Wrong multibulk payload header | Failing |
| raw protocol response | Failing |
| raw protocol response - deferred | Failing |
| raw protocol response - multiline | Failing |
| test argument rewriting - issue 9598 | Failing |
| test big number parsing | Failing |
| test bool parsing | Failing |
| test large number of args | Failing |
| test verbatim str parsing | Failing |
Pubsub
15 / 16 in-scope passing (93.8%) · 19 out of scope
| Test | Status |
|---|---|
| Mix SUBSCRIBE and PSUBSCRIBE | Passing |
| NUMPATs returns the number of unique patterns | Passing |
| NUMSUB returns numbers, not strings (#1561) | Passing |
| PUBLISH/PSUBSCRIBE after PUNSUBSCRIBE without arguments | Passing |
| PUBLISH/PSUBSCRIBE basics | Passing |
| PUBLISH/PSUBSCRIBE with two clients | Passing |
| PUBLISH/SUBSCRIBE after UNSUBSCRIBE without arguments | Passing |
| PUBLISH/SUBSCRIBE basics | Passing |
| PUBLISH/SUBSCRIBE with two clients | Passing |
| PUNSUBSCRIBE and UNSUBSCRIBE should always reply | Passing |
| PUNSUBSCRIBE from non-subscribed channels | Passing |
| Pub/Sub PING on RESP2 | Passing |
| PubSub messages with CLIENT REPLY OFF | Passing |
| SUBSCRIBE to one channel more than once | Passing |
| UNSUBSCRIBE from non-subscribed channels | Passing |
| Pub/Sub PING on RESP3 | Failing |
| Keyspace notification: expired event (Expiration time is already expired) | Out of scope |
| Keyspace notifications: evicted events | Out of scope |
| Keyspace notifications: expired events (background expire) | Out of scope |
| Keyspace notifications: expired events (triggered expire) | Out of scope |
| Keyspace notifications: general events test | Out of scope |
| Keyspace notifications: hash events test | Out of scope |
| Keyspace notifications: list events test | Out of scope |
| Keyspace notifications: new key test | Out of scope |
| Keyspace notifications: set events test | Out of scope |
| Keyspace notifications: stream events test | Out of scope |
| Keyspace notifications: test CONFIG GET/SET of event flags | Out of scope |
| Keyspace notifications: we are able to mask events | Out of scope |
| Keyspace notifications: we can receive both kind of events | Out of scope |
| Keyspace notifications: we receive keyevent notifications | Out of scope |
| Keyspace notifications: we receive keyspace notifications | Out of scope |
| Keyspace notifications: zset events test | Out of scope |
| publish to self inside multi | Out of scope |
| publish to self inside script | Out of scope |
| unsubscribe inside multi, and publish to self | Out of scope |
Pubsubshard
0 / 0 in-scope passing (0.0%) · 10 out of scope
| Test | Status |
|---|---|
| PUBSUB command basics | Out of scope |
| PubSubShard with CLIENT REPLY OFF | Out of scope |
| SPUBLISH/SSUBSCRIBE after UNSUBSCRIBE without arguments | Out of scope |
| SPUBLISH/SSUBSCRIBE basics | Out of scope |
| SPUBLISH/SSUBSCRIBE with PUBLISH/SUBSCRIBE | Out of scope |
| SPUBLISH/SSUBSCRIBE with two clients | Out of scope |
| SSUBSCRIBE to one channel more than once | Out of scope |
| SUNSUBSCRIBE from non-subscribed channels | Out of scope |
| publish message to master and receive on replica | Out of scope |
| setup replication for following tests | Out of scope |
Querybuf
0 / 3 passing (0.0%)
| Test | Status |
|---|---|
| query buffer resized correctly | Failing |
| query buffer resized correctly when not idle | Failing |
| query buffer resized correctly with fat argv | Failing |
Quit
0 / 3 passing (0.0%)
| Test | Status |
|---|---|
| Pipelined commands after QUIT must not be executed | Failing |
| Pipelined commands after QUIT that exceed read buffer size | Failing |
| QUIT returns OK | Failing |
Replybufsize
0 / 1 passing (0.0%)
| Test | Status |
|---|---|
| verify reply buffer limits | Failing |
Scan
4 / 24 passing (16.7%)
| Test | Status |
|---|---|
| {standalone} SCAN COUNT | Passing |
| {standalone} SCAN MATCH | Passing |
| {standalone} SCAN TYPE | Passing |
| {standalone} SCAN basic | Passing |
| {standalone} HSCAN with NOVALUES | Failing |
| {standalone} HSCAN with PATTERN | Failing |
| {standalone} HSCAN with encoding hashtable | Failing |
| {standalone} HSCAN with encoding listpack | Failing |
| {standalone} SCAN MATCH pattern implies cluster slot | Failing |
| {standalone} SCAN guarantees check under write load | Failing |
| {standalone} SCAN regression test for issue #4906 | Failing |
| {standalone} SCAN unknown type | Failing |
| {standalone} SCAN with expired keys | Failing |
| {standalone} SCAN with expired keys with TYPE filter | Failing |
| {standalone} SSCAN with PATTERN | Failing |
| {standalone} SSCAN with encoding hashtable | Failing |
| {standalone} SSCAN with encoding intset | Failing |
| {standalone} SSCAN with encoding listpack | Failing |
| {standalone} SSCAN with integer encoded object (issue #1345) | Failing |
| {standalone} ZSCAN scores: regression test for issue #2175 | Failing |
| {standalone} ZSCAN with NOSCORES | Failing |
| {standalone} ZSCAN with PATTERN | Failing |
| {standalone} ZSCAN with encoding listpack | Failing |
| {standalone} ZSCAN with encoding skiplist | Failing |
Scripting
0 / 201 passing (0.0%)
| Test | Status |
|---|---|
| ‘x’ should be ‘4’ for EVALSHA being replicated by effects | Failing |
| Before the replica connects we issue two EVAL commands | Failing |
| Binary code loading failed | Failing |
| CLUSTER RESET can not be invoke from within a script | Failing |
| Call Redis command with many args from Lua (issue #1764) | Failing |
| Connect a replica to the master instance | Failing |
| Consistent eval error reporting | Failing |
| Correct handling of reused argv (issue #1939) | Failing |
| Dynamic reset of lua engine with insecure API config change | Failing |
| EVAL - Able to parse trailing comments | Failing |
| EVAL - Are the KEYS and ARGV arrays populated correctly? | Failing |
| EVAL - Does Lua interpreter replies to our requests? | Failing |
| EVAL - Is the Lua client using the currently selected DB? | Failing |
| EVAL - JSON numeric decoding | Failing |
| EVAL - JSON smoke test | Failing |
| EVAL - JSON string decoding | Failing |
| EVAL - JSON string encoding a string larger than 2GB | Failing |
| EVAL - Lua can parse string with too many new lines | Failing |
| EVAL - Lua error reply -> Redis protocol type conversion | Failing |
| EVAL - Lua false boolean -> Redis protocol type conversion | Failing |
| EVAL - Lua integer -> Redis protocol type conversion | Failing |
| EVAL - Lua number -> Redis integer conversion | Failing |
| EVAL - Lua status code reply -> Redis protocol type conversion | Failing |
| EVAL - Lua string -> Redis protocol type conversion | Failing |
| EVAL - Lua table -> Redis protocol type conversion | Failing |
| EVAL - Lua true boolean -> Redis protocol type conversion | Failing |
| EVAL - No arguments to redis.call/pcall is considered an error | Failing |
| EVAL - Numerical sanity check from bitop | Failing |
| EVAL - Redis bulk -> Lua type conversion | Failing |
| EVAL - Redis error reply -> Lua type conversion | Failing |
| EVAL - Redis integer -> Lua type conversion | Failing |
| EVAL - Redis multi bulk -> Lua type conversion | Failing |
| EVAL - Redis nil bulk reply -> Lua type conversion | Failing |
| EVAL - Redis status reply -> Lua type conversion | Failing |
| EVAL - Return _G | Failing |
| EVAL - Return table with a metatable that call server | Failing |
| EVAL - Return table with a metatable that raise error | Failing |
| EVAL - SELECT inside Lua should not affect the caller | Failing |
| EVAL - Scripts can run non-deterministic commands | Failing |
| EVAL - Scripts do not block on XREAD with BLOCK option | Failing |
| EVAL - Scripts do not block on XREAD with BLOCK option – non empty stream | Failing |
| EVAL - Scripts do not block on XREADGROUP with BLOCK option | Failing |
| EVAL - Scripts do not block on XREADGROUP with BLOCK option – non empty stream | Failing |
| EVAL - Scripts do not block on blmove command | Failing |
| EVAL - Scripts do not block on blpop command | Failing |
| EVAL - Scripts do not block on brpop command | Failing |
| EVAL - Scripts do not block on brpoplpush command | Failing |
| EVAL - Scripts do not block on bzpopmax command | Failing |
| EVAL - Scripts do not block on bzpopmin command | Failing |
| EVAL - Scripts do not block on wait | Failing |
| EVAL - Scripts do not block on waitaof | Failing |
| EVAL - Scripts support NULL byte | Failing |
| EVAL - Test long escape sequences for strings | Failing |
| EVAL - Test table unpack with invalid indexes | Failing |
| EVAL - Verify minimal bitop functionality | Failing |
| EVAL - cmsgpack can pack and unpack circular references? | Failing |
| EVAL - cmsgpack can pack double? | Failing |
| EVAL - cmsgpack can pack negative int64? | Failing |
| EVAL - cmsgpack pack/unpack smoke test | Failing |
| EVAL - explicit error() call handling | Failing |
| EVAL - is Lua able to call Redis API? | Failing |
| EVAL - redis.call variant raises a Lua error on Redis cmd error (1) | Failing |
| EVAL does not leak in the Lua stack | Failing |
| EVALSHA - Can we call a SHA1 if already defined? | Failing |
| EVALSHA - Can we call a SHA1 in uppercase? | Failing |
| EVALSHA - Do we get an error on invalid SHA1? | Failing |
| EVALSHA - Do we get an error on non defined SHA1? | Failing |
| EVALSHA replication when first call is readonly | Failing |
| EVALSHA_RO - Can we call a SHA1 if already defined? | Failing |
| EVAL_RO - Cannot run write commands | Failing |
| EVAL_RO - Successful case | Failing |
| EXPIRE: We can call scripts rewriting client->argv from Lua | Failing |
| Functions in the Redis namespace are able to report errors | Failing |
| Globals protection reading an undeclared global variable | Failing |
| Globals protection setting an undeclared global* | Failing |
| INCRBYFLOAT: We can call scripts expanding client->argv from Lua | Failing |
| LUA redis.error_reply API | Failing |
| LUA redis.error_reply API with empty string | Failing |
| LUA redis.status_reply API | Failing |
| LUA test pcall | Failing |
| LUA test pcall with error | Failing |
| LUA test pcall with non string/integer arg | Failing |
| LUA test trim string as expected | Failing |
| Lua scripts eviction does not affect script load | Failing |
| Lua scripts eviction does not generate many scripts | Failing |
| Lua scripts eviction is plain LRU | Failing |
| Lua scripts promoted from eval to script load | Failing |
| Lua scripts using SELECT are replicated correctly | Failing |
| MGET: mget shouldn’t be propagated in Lua | Failing |
| Measures elapsed time os.clock() | Failing |
| Now use EVALSHA against the master, with both SHAs | Failing |
| Number conversion precision test (issue #1118) | Failing |
| PRNG is seeded randomly for command replication | Failing |
| Prohibit dangerous lua methods in sandbox | Failing |
| RESTORE expired keys with expiration time | Failing |
| Redis.replicate_commands() can be issued anywhere now | Failing |
| Redis.set_repl() can be issued before replicate_commands() now | Failing |
| Redis.set_repl() don’t accept invalid values | Failing |
| Replication of script multiple pushes to list with BLPOP | Failing |
| SCRIPT EXISTS - can detect already defined scripts? | Failing |
| SCRIPT LOAD - is able to register scripts in the scripting cache | Failing |
| SCRIPT SHOW - is able to dump scripts from the scripting cache | Failing |
| SCRIPT SHOW - script not exist return noscript error | Failing |
| SCRIPT SHOW - wrong sha1 length or invalid sha1 char return noscript error | Failing |
| SCRIPTING FLUSH - is able to clear the scripts cache? | Failing |
| SCRIPTING FLUSH ASYNC | Failing |
| SHUTDOWN NOSAVE can kill a timedout script anyway | Failing |
| SORT BY <constant> output gets ordered for scripting | Failing |
| SORT BY <constant> with GET gets ordered for scripting | Failing |
| SORT is normally not alpha re-ordered for the scripting engine | Failing |
| SPOP: We can call scripts rewriting client->argv from Lua | Failing |
| Script - disallow write on OOM | Failing |
| Script ACL check | Failing |
| Script block the time during execution | Failing |
| Script block the time in some expiration related commands | Failing |
| Script check unpack with massive arguments | Failing |
| Script del key with expiration set | Failing |
| Script delete the expired key | Failing |
| Script read key with expiration set | Failing |
| Script return recursive object | Failing |
| Script with RESP3 map | Failing |
| Scripting engine PRNG can be seeded correctly | Failing |
| Scripts can handle commands with incorrect arity | Failing |
| Shebang support for lua engine | Failing |
| String containing number precision test (regression of issue #1118) | Failing |
| TIME command using cached time | Failing |
| Test an example script DECR_IF_GT | Failing |
| Test dofile are not available | Failing |
| Test loadfile are not available | Failing |
| Test print are not available | Failing |
| Test scripting debug lua server invocations | Failing |
| Test scripting debug lua stack overflow | Failing |
| Test scripting debug protocol parsing | Failing |
| Test selective replication of certain commands from Lua | Failing |
| Timedout read-only scripts can be killed by SCRIPT KILL | Failing |
| Timedout read-only scripts can be killed by SCRIPT KILL even when use pcall | Failing |
| Timedout script does not cause a false dead client | Failing |
| Timedout script link is still usable after Lua returns | Failing |
| Timedout scripts and unblocked command | Failing |
| Timedout scripts that modified data can’t be killed by SCRIPT KILL | Failing |
| Try trick global protection 1 | Failing |
| Try trick global protection 2 | Failing |
| Try trick global protection 3 | Failing |
| Try trick global protection 4 | Failing |
| Try trick readonly table on basic types metatable | Failing |
| Try trick readonly table on bit table | Failing |
| Try trick readonly table on cmsgpack table | Failing |
| Try trick readonly table on json table | Failing |
| Try trick readonly table on valkey table | Failing |
| Unknown shebang flag | Failing |
| Unknown shebang option | Failing |
| Using side effects is not a problem with command replication | Failing |
| Verify execution of prohibit dangerous Lua methods will fail | Failing |
| Verify negative arg count is error instead of crash (issue #1842) | Failing |
| allow-oom shebang flag | Failing |
| allow-stale shebang flag | Failing |
| lua bit.tohex bug | Failing |
| no-writes shebang flag | Failing |
| no-writes shebang flag on replica | Failing |
| not enough good replicas | Failing |
| not enough good replicas state change during long script | Failing |
| random numbers are random now | Failing |
| redis.sha1hex() implementation | Failing |
| reject script do not cause a Lua stack leak | Failing |
| test RESP2/2 big number protocol parsing | Failing |
| test RESP2/2 double protocol parsing | Failing |
| test RESP2/2 false protocol parsing | Failing |
| test RESP2/2 malformed big number protocol parsing | Failing |
| test RESP2/2 map protocol parsing | Failing |
| test RESP2/2 null protocol parsing | Failing |
| test RESP2/2 set protocol parsing | Failing |
| test RESP2/2 true protocol parsing | Failing |
| test RESP2/2 verbatim protocol parsing | Failing |
| test RESP2/3 big number protocol parsing | Failing |
| test RESP2/3 double protocol parsing | Failing |
| test RESP2/3 false protocol parsing | Failing |
| test RESP2/3 malformed big number protocol parsing | Failing |
| test RESP2/3 map protocol parsing | Failing |
| test RESP2/3 null protocol parsing | Failing |
| test RESP2/3 set protocol parsing | Failing |
| test RESP2/3 true protocol parsing | Failing |
| test RESP2/3 verbatim protocol parsing | Failing |
| test RESP3/2 big number protocol parsing | Failing |
| test RESP3/2 double protocol parsing | Failing |
| test RESP3/2 false protocol parsing | Failing |
| test RESP3/2 malformed big number protocol parsing | Failing |
| test RESP3/2 map protocol parsing | Failing |
| test RESP3/2 null protocol parsing | Failing |
| test RESP3/2 set protocol parsing | Failing |
| test RESP3/2 true protocol parsing | Failing |
| test RESP3/2 verbatim protocol parsing | Failing |
| test RESP3/3 big number protocol parsing | Failing |
| test RESP3/3 double protocol parsing | Failing |
| test RESP3/3 false protocol parsing | Failing |
| test RESP3/3 malformed big number protocol parsing | Failing |
| test RESP3/3 map protocol parsing | Failing |
| test RESP3/3 null protocol parsing | Failing |
| test RESP3/3 set protocol parsing | Failing |
| test RESP3/3 true protocol parsing | Failing |
| test RESP3/3 verbatim protocol parsing | Failing |
| test resp3 attribute protocol parsing | Failing |
Shutdown
0 / 9 passing (0.0%)
| Test | Status |
|---|---|
| Clean up rdb same named folder | Failing |
| RDB save will be failed in shutdown | Failing |
| SHUTDOWN ABORT can cancel SIGTERM | Failing |
| SHUTDOWN SIGTERM will abort if there’s an initial AOFRW - default | Failing |
| SHUTDOWN can proceed if shutdown command was with nosave | Failing |
| SHUTDOWN will abort if rdb save failed on shutdown command | Failing |
| SHUTDOWN will abort if rdb save failed on signal | Failing |
| Temp rdb will be deleted if we use bg_unlink when shutdown | Failing |
| Temp rdb will be deleted in signal handle | Failing |
Slowlog
0 / 20 passing (0.0%)
| Test | Status |
|---|---|
| SLOWLOG - Certain commands are omitted that contain sensitive information | Failing |
| SLOWLOG - EXEC is not logged, just executed commands | Failing |
| SLOWLOG - GET optional argument to limit output len works | Failing |
| SLOWLOG - RESET subcommand works | Failing |
| SLOWLOG - Rewritten commands are logged as their original command | Failing |
| SLOWLOG - Some commands can redact sensitive fields | Failing |
| SLOWLOG - blocking command is reported only after unblocked | Failing |
| SLOWLOG - can be disabled | Failing |
| SLOWLOG - can clean older entries | Failing |
| SLOWLOG - check that it starts with an empty log | Failing |
| SLOWLOG - commands with too many arguments are trimmed | Failing |
| SLOWLOG - count must be >= -1 | Failing |
| SLOWLOG - get all slow logs | Failing |
| SLOWLOG - logged entry sanity check | Failing |
| SLOWLOG - max entries is correctly handled | Failing |
| SLOWLOG - only logs commands taking more time than specified | Failing |
| SLOWLOG - the commands in script are recorded normally - is_eval: 0 | Failing |
| SLOWLOG - the commands in script are recorded normally - is_eval: 1 | Failing |
| SLOWLOG - too long arguments are trimmed | Failing |
| SLOWLOG - zero max length is correctly handled | Failing |
Sort
0 / 42 passing (0.0%)
| Test | Status |
|---|---|
| $command GET <const> | Failing |
| $title: SORT BY hash field | Failing |
| $title: SORT BY key | Failing |
| $title: SORT BY key with limit | Failing |
| SETRANGE with huge offset | Failing |
| SORT ALPHA against integer encoded strings | Failing |
| SORT BY hash field STORE | Failing |
| SORT BY key STORE | Failing |
| SORT BY sub-sorts lexicographically if score is the same | Failing |
| SORT DESC | Failing |
| SORT GET # | Failing |
| SORT GET (key and hash) with sanity check | Failing |
| SORT GET with pattern ending with just -> does not get hash field | Failing |
| SORT STORE quicklist with the right options | Failing |
| SORT by nosort plus store retains native order for lists | Failing |
| SORT by nosort retains native order for lists | Failing |
| SORT by nosort with limit returns based on original list order | Failing |
| SORT extracts STORE correctly | Failing |
| SORT extracts multiple STORE correctly | Failing |
| SORT regression for issue #19, sorting floats | Failing |
| SORT sorted set | Failing |
| SORT sorted set BY nosort + LIMIT | Failing |
| SORT sorted set BY nosort should retain ordering | Failing |
| SORT sorted set BY nosort works as expected from scripts | Failing |
| SORT sorted set: +inf and -inf handling | Failing |
| SORT speed, $num element list BY <const>, 100 times | Failing |
| SORT speed, $num element list BY hash field, 100 times | Failing |
| SORT speed, $num element list BY key, 100 times | Failing |
| SORT speed, $num element list directly, 100 times | Failing |
| SORT will complain with numerical sorting and bad doubles (1) | Failing |
| SORT will complain with numerical sorting and bad doubles (2) | Failing |
| SORT with BY <constant> and STORE should still order output | Failing |
| SORT with STORE does not create empty lists (github issue 224) | Failing |
| SORT with STORE removes key if result is empty (github issue 227) | Failing |
| SORT with STORE returns zero if result is empty (github issue 224) | Failing |
| SORT_RO - Cannot run with STORE arg | Failing |
| SORT_RO - Successful case | Failing |
| SORT_RO get keys | Failing |
| sort by in cluster mode | Failing |
| sort get in cluster mode | Failing |
| sort_ro by in cluster mode | Failing |
| sort_ro get in cluster mode | Failing |
Tracking
0 / 59 passing (0.0%)
| Test | Status |
|---|---|
| Able to redirect to a RESP3 client | Failing |
| Adding prefixes to BCAST mode works | Failing |
| After switching from normal tracking to BCAST mode, no invalidation message is produced for pre-BCAST keys | Failing |
| BCAST with prefix collisions throw errors | Failing |
| CLIENT GETREDIR provides correct client id | Failing |
| CLIENT TRACKINGINFO provides reasonable results when tracking bcast mode | Failing |
| CLIENT TRACKINGINFO provides reasonable results when tracking off | Failing |
| CLIENT TRACKINGINFO provides reasonable results when tracking on | Failing |
| CLIENT TRACKINGINFO provides reasonable results when tracking on with options | Failing |
| CLIENT TRACKINGINFO provides reasonable results when tracking optin | Failing |
| CLIENT TRACKINGINFO provides reasonable results when tracking optout | Failing |
| CLIENT TRACKINGINFO provides reasonable results when tracking redir broken | Failing |
| CLIENT TRACKINGINFO when start | Failing |
| Client tracking prefixes memory overhead | Failing |
| Clients are able to enable tracking and redirect it | Failing |
| Clients can enable the BCAST mode with prefixes | Failing |
| Clients can enable the BCAST mode with the empty prefix | Failing |
| Coverage: Basic CLIENT CACHING | Failing |
| Coverage: Basic CLIENT GETREDIR | Failing |
| Coverage: Basic CLIENT REPLY | Failing |
| Coverage: Basic CLIENT TRACKINGINFO | Failing |
| Different clients can redirect to the same connection | Failing |
| Different clients using different protocols can track the same key | Failing |
| HELLO 3 reply is correct | Failing |
| Invalid keys should not be tracked for scripts in NOLOOP mode | Failing |
| Invalidation message received for flushall | Failing |
| Invalidation message received for flushdb | Failing |
| Invalidation message sent when using OPTIN option with CLIENT CACHING yes | Failing |
| Invalidation message sent when using OPTOUT option | Failing |
| Invalidations of new keys can be redirected after switching to RESP3 | Failing |
| Invalidations of previous keys can be redirected after switching to RESP3 | Failing |
| No invalidation message when using OPTIN option | Failing |
| No invalidation message when using OPTOUT option with CLIENT CACHING no | Failing |
| RESP2 based basic invalidation with client reply off | Failing |
| RESP3 Client gets tracking-redir-broken push message after cached key changed when rediretion client is terminated | Failing |
| RESP3 based basic invalidation | Failing |
| RESP3 based basic invalidation with client reply off | Failing |
| RESP3 based basic redirect invalidation with client reply off | Failing |
| RESP3 based basic tracking-redir-broken with client reply off | Failing |
| RESP3 tracking redirection | Failing |
| Regression test for #11715 | Failing |
| Server is able to evacuate enough keys when num of keys surpasses limit by more than defined initial effort | Failing |
| Test ASYNC flushall | Failing |
| The client is now able to disable tracking | Failing |
| The connection gets invalidation messages about all the keys | Failing |
| The other connection is able to get invalidations | Failing |
| Tracking NOLOOP mode in BCAST mode works | Failing |
| Tracking NOLOOP mode in standard mode works | Failing |
| Tracking gets notification of expired keys | Failing |
| Tracking gets notification of lazy expired keys | Failing |
| Tracking gets notification on tracking table key eviction | Failing |
| Tracking info is correct | Failing |
| Tracking invalidation message is not interleaved with multiple keys response | Failing |
| Tracking invalidation message is not interleaved with transaction response | Failing |
| Tracking invalidation message of eviction keys should be before response | Failing |
| Tracking only occurs for scripts when a command calls a read-only command | Failing |
| Unblocked BLMOVE gets notification after response | Failing |
| flushdb tracking invalidation message is not interleaved with transaction response | Failing |
| hdel deliver invalidate message after response in the same connection | Failing |
Violations
0 / 7 passing (0.0%)
| Test | Status |
|---|---|
| SORT adds integer field to list | Failing |
| XADD one huge field | Failing |
| XADD one huge field - 1 | Failing |
| hash with many big fields | Failing |
| hash with one huge field | Failing |
| several XADD big fields | Failing |
| single XADD big fields | Failing |
Wait
0 / 37 in-scope passing (0.0%) · 1 out of scope
| Test | Status |
|---|---|
| Setup a new replica | Failing |
| Setup slave | Failing |
| WAIT and WAITAOF replica multiple clients unblock - reuse last result | Failing |
| WAIT implicitly blocks on client pause since ACKs aren’t sent | Failing |
| WAIT in script will work | Failing |
| WAIT out of range timeout (milliseconds) | Failing |
| WAIT replica multiple clients unblock - reuse last result | Failing |
| WAIT should acknowledge 1 additional copy of the data | Failing |
| WAIT should not acknowledge 1 additional copy if slave is blocked | Failing |
| WAIT should not acknowledge 2 additional copies of the data | Failing |
| WAITAOF both local and replica got AOF enabled at runtime | Failing |
| WAITAOF local copy before fsync | Failing |
| WAITAOF local copy everysec | Failing |
| WAITAOF local copy with appendfsync always | Failing |
| WAITAOF local if AOFRW was postponed | Failing |
| WAITAOF local on server with aof disabled | Failing |
| WAITAOF local wait and then stop aof | Failing |
| WAITAOF master client didn’t send any command | Failing |
| WAITAOF master client didn’t send any write command | Failing |
| WAITAOF master isn’t configured to do AOF | Failing |
| WAITAOF master sends PING after last write | Failing |
| WAITAOF master that loses a replica and backlog is dropped | Failing |
| WAITAOF master without backlog, wait is released when the replica finishes full-sync | Failing |
| WAITAOF on demoted master gets unblocked with an error | Failing |
| WAITAOF on promoted replica | Failing |
| WAITAOF replica copy appendfsync always | Failing |
| WAITAOF replica copy before fsync | Failing |
| WAITAOF replica copy everysec | Failing |
| WAITAOF replica copy everysec with AOFRW | Failing |
| WAITAOF replica copy everysec with slow AOFRW | Failing |
| WAITAOF replica copy everysec->always with AOFRW | Failing |
| WAITAOF replica copy if replica is blocked | Failing |
| WAITAOF replica isn’t configured to do AOF | Failing |
| WAITAOF replica multiple clients unblock - reuse last result | Failing |
| WAITAOF when replica switches between masters, fsync: always | Failing |
| WAITAOF when replica switches between masters, fsync: everysec | Failing |
| WAITAOF when replica switches between masters, fsync: no | Failing |
| setup replication for following tests | Out of scope |
Type
Hash
35 / 74 passing (47.3%)
| Test | Status |
|---|---|
| HDEL - hash becomes empty before deleting all specified fields | Passing |
| HDEL - more than a single value | Passing |
| HDEL and return value | Passing |
| HEXISTS | Passing |
| HGET against non existing key | Passing |
| HGET against the big hash | Passing |
| HGET against the small hash | Passing |
| HGETALL - big hash | Passing |
| HGETALL - small hash | Passing |
| HGETALL against non-existing key | Passing |
| HKEYS - big hash | Passing |
| HKEYS - small hash | Passing |
| HMGET - big hash | Passing |
| HMGET - small hash | Passing |
| HMGET against non existing key and fields | Passing |
| HMSET - big hash | Passing |
| HMSET - small hash | Passing |
| HSET in update and insert mode | Passing |
| HSET/HLEN - Big hash creation | Passing |
| HSET/HLEN - Small hash creation | Passing |
| HSET/HMSET wrong number of args | Passing |
| HSETNX target key exists - big hash | Passing |
| HSETNX target key exists - small hash | Passing |
| HSETNX target key missing - big hash | Passing |
| HSETNX target key missing - small hash | Passing |
| HVALS - big hash | Passing |
| HVALS - small hash | Passing |
| Hash fuzzing #1 - 10 fields | Passing |
| Hash fuzzing #1 - 512 fields | Passing |
| Hash fuzzing #2 - 10 fields | Passing |
| Hash fuzzing #2 - 512 fields | Passing |
| Hash ziplist regression test for large keys | Passing |
| Is the big hash encoded with an hash table? | Passing |
| Is the small hash encoded with a listpack? | Passing |
| Stress test the hash ziplist -> hashtable encoding conversion | Passing |
| HINCRBY HINCRBYFLOAT against non-integer increment value | Failing |
| HINCRBY against hash key created by hincrby itself | Failing |
| HINCRBY against hash key originally set with HSET | Failing |
| HINCRBY against non existing database key | Failing |
| HINCRBY against non existing hash key | Failing |
| HINCRBY can detect overflows | Failing |
| HINCRBY fails against hash value with spaces (left) | Failing |
| HINCRBY fails against hash value with spaces (right) | Failing |
| HINCRBY over 32bit value | Failing |
| HINCRBY over 32bit value with over 32bit increment | Failing |
| HINCRBYFLOAT against hash key created by hincrby itself | Failing |
| HINCRBYFLOAT against hash key originally set with HSET | Failing |
| HINCRBYFLOAT against non existing database key | Failing |
| HINCRBYFLOAT against non existing hash key | Failing |
| HINCRBYFLOAT does not allow NaN or Infinity | Failing |
| HINCRBYFLOAT fails against hash value that contains a null-terminator in the middle | Failing |
| HINCRBYFLOAT fails against hash value with spaces (left) | Failing |
| HINCRBYFLOAT fails against hash value with spaces (right) | Failing |
| HINCRBYFLOAT over 32bit value | Failing |
| HINCRBYFLOAT over 32bit value with over 32bit increment | Failing |
| HINCRBYFLOAT over hash-max-listpack-value encoded with a listpack | Failing |
| HRANDFIELD - hashtable | Failing |
| HRANDFIELD - listpack | Failing |
| HRANDFIELD count of 0 is handled correctly | Failing |
| HRANDFIELD count of 0 is handled correctly - emptyarray | Failing |
| HRANDFIELD count overflow | Failing |
| HRANDFIELD with <count> - hashtable | Failing |
| HRANDFIELD with <count> - listpack | Failing |
| HRANDFIELD with <count> against non existing key | Failing |
| HRANDFIELD with <count> against non existing key - emptyarray | Failing |
| HRANDFIELD with RESP3 | Failing |
| HSTRLEN against non existing field | Failing |
| HSTRLEN against the big hash | Failing |
| HSTRLEN against the small hash | Failing |
| HSTRLEN corner cases | Failing |
| Hash commands against wrong type | Failing |
| Hash ziplist of various encodings | Failing |
| Hash ziplist of various encodings - sanitize dump | Failing |
| Is a ziplist encoded Hash promoted on big payload? | Failing |
Incr
27 / 32 passing (84.4%)
| Test | Status |
|---|---|
| DECR against key created by incr | Passing |
| DECR against key is not exist and incr | Passing |
| DECRBY against key is not exist | Passing |
| DECRBY negation overflow | Passing |
| DECRBY over 32bit value with over 32bit increment, negative res | Passing |
| INCR against key created by incr itself | Passing |
| INCR against key originally set with SET | Passing |
| INCR against non existing key | Passing |
| INCR fails against a key holding a list | Passing |
| INCR fails against key with spaces (both) | Passing |
| INCR fails against key with spaces (left) | Passing |
| INCR fails against key with spaces (right) | Passing |
| INCR over 32bit value | Passing |
| INCRBY INCRBYFLOAT DECRBY against unhappy path | Passing |
| INCRBY over 32bit value with over 32bit increment | Passing |
| INCRBYFLOAT against key originally set with SET | Passing |
| INCRBYFLOAT against non existing key | Passing |
| INCRBYFLOAT decrement | Passing |
| INCRBYFLOAT does not allow NaN or Infinity | Passing |
| INCRBYFLOAT fails against a key holding a list | Passing |
| INCRBYFLOAT fails against key with spaces (both) | Passing |
| INCRBYFLOAT fails against key with spaces (left) | Passing |
| INCRBYFLOAT fails against key with spaces (right) | Passing |
| INCRBYFLOAT over 32bit value | Passing |
| INCRBYFLOAT over 32bit value with over 32bit increment | Passing |
| No negative zero | Passing |
| string to double with null terminator | Passing |
| INCR can modify objects in-place | Failing |
| decr operation should update encoding from raw to int | Failing |
| decrby operation should update encoding from raw to int | Failing |
| incr operation should update encoding from raw to int | Failing |
| incrby operation should update encoding from raw to int | Failing |
List-2
0 / 2 passing (0.0%)
| Test | Status |
|---|---|
| LTRIM stress testing - listpack | Failing |
| LTRIM stress testing - quicklist | Failing |
List-3
0 / 11 passing (0.0%)
| Test | Status |
|---|---|
| Check compression with recompress | Failing |
| Crash due to wrongly recompress after lrem | Failing |
| Explicit regression for a list bug | Failing |
| LINSERT correctly recompress full quicklistNode after inserting a element after it | Failing |
| LINSERT correctly recompress full quicklistNode after inserting a element before it | Failing |
| Regression for quicklist #3343 bug | Failing |
| Stress tester for #3343-alike bugs comp: 0 | Failing |
| Stress tester for #3343-alike bugs comp: 1 | Failing |
| Stress tester for #3343-alike bugs comp: 2 | Failing |
| ziplist implementation: encoding stress testing | Failing |
| ziplist implementation: value encoding and backlink | Failing |
List
49 / 268 passing (18.3%)
| Test | Status |
|---|---|
| LINDEX against non existing key | Passing |
| LINDEX against non-list value error | Passing |
| LINSERT - listpack | Passing |
| LINSERT - quicklist | Passing |
| LINSERT against non existing key | Passing |
| LINSERT against non-list value error | Passing |
| LINSERT raise error on bad syntax | Passing |
| LLEN against non existing key | Passing |
| LLEN against non-list value error | Passing |
| LPOP/RPOP with wrong number of arguments | Passing |
| LPUSH against non-list value error | Passing |
| LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - listpack | Passing |
| LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - quicklist | Passing |
| LRANGE against non existing key | Passing |
| LRANGE basics - listpack | Passing |
| LRANGE basics - quicklist | Passing |
| LRANGE inverted indexes - listpack | Passing |
| LRANGE inverted indexes - quicklist | Passing |
| LRANGE out of range indexes including the full list - listpack | Passing |
| LRANGE out of range indexes including the full list - quicklist | Passing |
| LRANGE out of range negative end index - listpack | Passing |
| LRANGE out of range negative end index - quicklist | Passing |
| LRANGE with start > end yields an empty array for backward compatibility | Passing |
| LREM deleting objects that may be int encoded - listpack | Passing |
| LREM deleting objects that may be int encoded - quicklist | Passing |
| LREM remove all the occurrences - listpack | Passing |
| LREM remove all the occurrences - quicklist | Passing |
| LREM remove non existing element - listpack | Passing |
| LREM remove non existing element - quicklist | Passing |
| LREM remove the first occurrence - listpack | Passing |
| LREM remove the first occurrence - quicklist | Passing |
| LREM starting from tail with negative count (2) - listpack | Passing |
| LREM starting from tail with negative count (2) - quicklist | Passing |
| LREM starting from tail with negative count - listpack | Passing |
| LREM starting from tail with negative count - quicklist | Passing |
| LSET - listpack | Passing |
| LSET - quicklist | Passing |
| LSET against non existing key | Passing |
| LSET against non list value | Passing |
| LSET out of range index - listpack | Passing |
| LSET out of range index - quicklist | Passing |
| LTRIM basics - listpack | Passing |
| LTRIM basics - quicklist | Passing |
| LTRIM out of range negative end index - listpack | Passing |
| LTRIM out of range negative end index - quicklist | Passing |
| RPOP/LPOP with the optional count argument - listpack | Passing |
| RPOP/LPOP with the optional count argument - quicklist | Passing |
| RPUSH against non-list value error | Passing |
| Variadic RPUSH/LPUSH | Passing |
| BLMOVE (left, left) with a client BLPOPing the target list | Failing |
| BLMOVE (left, right) with a client BLPOPing the target list | Failing |
| BLMOVE (right, left) with a client BLPOPing the target list | Failing |
| BLMOVE (right, right) with a client BLPOPing the target list | Failing |
| BLMOVE left left - listpack | Failing |
| BLMOVE left left - quicklist | Failing |
| BLMOVE left left with zero timeout should block indefinitely | Failing |
| BLMOVE left right - listpack | Failing |
| BLMOVE left right - quicklist | Failing |
| BLMOVE left right with zero timeout should block indefinitely | Failing |
| BLMOVE right left - listpack | Failing |
| BLMOVE right left - quicklist | Failing |
| BLMOVE right left with zero timeout should block indefinitely | Failing |
| BLMOVE right right - listpack | Failing |
| BLMOVE right right - quicklist | Failing |
| BLMOVE right right with zero timeout should block indefinitely | Failing |
| BLMPOP propagate as pop with count command to replica | Failing |
| BLMPOP with multiple blocked clients | Failing |
| BLMPOP_LEFT inside a transaction | Failing |
| BLMPOP_LEFT when new key is moved into place | Failing |
| BLMPOP_LEFT when result key is created by SORT..STORE | Failing |
| BLMPOP_LEFT with variadic LPUSH | Failing |
| BLMPOP_LEFT, LPUSH + DEL + SET should not awake blocked client | Failing |
| BLMPOP_LEFT, LPUSH + DEL should not awake blocked client | Failing |
| BLMPOP_LEFT: arguments are empty | Failing |
| BLMPOP_LEFT: multiple existing lists - listpack | Failing |
| BLMPOP_LEFT: multiple existing lists - quicklist | Failing |
| BLMPOP_LEFT: second argument is not a list | Failing |
| BLMPOP_LEFT: second list has an entry - listpack | Failing |
| BLMPOP_LEFT: second list has an entry - quicklist | Failing |
| BLMPOP_LEFT: single existing list - listpack | Failing |
| BLMPOP_LEFT: single existing list - quicklist | Failing |
| BLMPOP_LEFT: timeout | Failing |
| BLMPOP_LEFT: with 0.001 timeout should not block indefinitely | Failing |
| BLMPOP_LEFT: with negative timeout | Failing |
| BLMPOP_LEFT: with non-integer timeout | Failing |
| BLMPOP_LEFT: with single empty list argument | Failing |
| BLMPOP_LEFT: with zero timeout should block indefinitely | Failing |
| BLMPOP_RIGHT: arguments are empty | Failing |
| BLMPOP_RIGHT: second argument is not a list | Failing |
| BLMPOP_RIGHT: timeout | Failing |
| BLMPOP_RIGHT: with 0.001 timeout should not block indefinitely | Failing |
| BLMPOP_RIGHT: with negative timeout | Failing |
| BLMPOP_RIGHT: with non-integer timeout | Failing |
| BLMPOP_RIGHT: with single empty list argument | Failing |
| BLMPOP_RIGHT: with zero timeout should block indefinitely | Failing |
| BLPOP inside a transaction | Failing |
| BLPOP unblock but the key is expired and then block again - reprocessing command | Failing |
| BLPOP when new key is moved into place | Failing |
| BLPOP when result key is created by SORT..STORE | Failing |
| BLPOP with same key multiple times should work (issue #801) | Failing |
| BLPOP with variadic LPUSH | Failing |
| BLPOP, LPUSH + DEL + SET should not awake blocked client | Failing |
| BLPOP, LPUSH + DEL should not awake blocked client | Failing |
| BLPOP/BLMOVE should increase dirty | Failing |
| BLPOP: arguments are empty | Failing |
| BLPOP: multiple existing lists - listpack | Failing |
| BLPOP: multiple existing lists - quicklist | Failing |
| BLPOP: second argument is not a list | Failing |
| BLPOP: second list has an entry - listpack | Failing |
| BLPOP: second list has an entry - quicklist | Failing |
| BLPOP: single existing list - listpack | Failing |
| BLPOP: single existing list - quicklist | Failing |
| BLPOP: timeout | Failing |
| BLPOP: timeout value out of range | Failing |
| BLPOP: with 0.001 timeout should not block indefinitely | Failing |
| BLPOP: with negative timeout | Failing |
| BLPOP: with non-integer timeout | Failing |
| BLPOP: with single empty list argument | Failing |
| BLPOP: with zero timeout should block indefinitely | Failing |
| BRPOP: arguments are empty | Failing |
| BRPOP: second argument is not a list | Failing |
| BRPOP: timeout | Failing |
| BRPOP: with 0.001 timeout should not block indefinitely | Failing |
| BRPOP: with negative timeout | Failing |
| BRPOP: with non-integer timeout | Failing |
| BRPOP: with single empty list argument | Failing |
| BRPOP: with zero timeout should block indefinitely | Failing |
| BRPOPLPUSH - listpack | Failing |
| BRPOPLPUSH - quicklist | Failing |
| BRPOPLPUSH does not affect WATCH while still blocked | Failing |
| BRPOPLPUSH inside a transaction | Failing |
| BRPOPLPUSH maintains order of elements after failure | Failing |
| BRPOPLPUSH timeout | Failing |
| BRPOPLPUSH with multiple blocked clients | Failing |
| BRPOPLPUSH with wrong destination type | Failing |
| BRPOPLPUSH with wrong source type | Failing |
| BRPOPLPUSH with zero timeout should block indefinitely | Failing |
| Basic LPOP/RPOP/LMPOP - listpack | Failing |
| Basic LPOP/RPOP/LMPOP - quicklist | Failing |
| Blocking command accounted only once in commandstats | Failing |
| Blocking command accounted only once in commandstats after timeout | Failing |
| Blocking timeout following PAUSE should honor the timeout | Failing |
| CLIENT NO-TOUCH with BRPOP and RPUSH regression test | Failing |
| Check if list is still ok after a DEBUG RELOAD - listpack | Failing |
| Check if list is still ok after a DEBUG RELOAD - quicklist | Failing |
| Circular BRPOPLPUSH | Failing |
| Command being unblocked cause another command to get unblocked execution order test | Failing |
| Crash due to delete entry from a compress quicklist node | Failing |
| Crash due to split quicklist node wrongly | Failing |
| DEL a list | Failing |
| LINDEX consistency test - listpack | Failing |
| LINDEX consistency test - quicklist | Failing |
| LINDEX random access - listpack | Failing |
| LINDEX random access - quicklist | Failing |
| LMOVE left left base case - listpack | Failing |
| LMOVE left left base case - quicklist | Failing |
| LMOVE left left with listpack source and existing target listpack | Failing |
| LMOVE left left with listpack source and existing target quicklist | Failing |
| LMOVE left left with quicklist source and existing target listpack | Failing |
| LMOVE left left with quicklist source and existing target quicklist | Failing |
| LMOVE left left with the same list as src and dst - listpack | Failing |
| LMOVE left left with the same list as src and dst - quicklist | Failing |
| LMOVE left right base case - listpack | Failing |
| LMOVE left right base case - quicklist | Failing |
| LMOVE left right with listpack source and existing target listpack | Failing |
| LMOVE left right with listpack source and existing target quicklist | Failing |
| LMOVE left right with quicklist source and existing target listpack | Failing |
| LMOVE left right with quicklist source and existing target quicklist | Failing |
| LMOVE left right with the same list as src and dst - listpack | Failing |
| LMOVE left right with the same list as src and dst - quicklist | Failing |
| LMOVE right left base case - listpack | Failing |
| LMOVE right left base case - quicklist | Failing |
| LMOVE right left with listpack source and existing target listpack | Failing |
| LMOVE right left with listpack source and existing target quicklist | Failing |
| LMOVE right left with quicklist source and existing target listpack | Failing |
| LMOVE right left with quicklist source and existing target quicklist | Failing |
| LMOVE right left with the same list as src and dst - listpack | Failing |
| LMOVE right left with the same list as src and dst - quicklist | Failing |
| LMOVE right right base case - listpack | Failing |
| LMOVE right right base case - quicklist | Failing |
| LMOVE right right with listpack source and existing target listpack | Failing |
| LMOVE right right with listpack source and existing target quicklist | Failing |
| LMOVE right right with quicklist source and existing target listpack | Failing |
| LMOVE right right with quicklist source and existing target quicklist | Failing |
| LMOVE right right with the same list as src and dst - listpack | Failing |
| LMOVE right right with the same list as src and dst - quicklist | Failing |
| LMPOP multiple existing lists - listpack | Failing |
| LMPOP multiple existing lists - quicklist | Failing |
| LMPOP propagate as pop with count command to replica | Failing |
| LMPOP single existing list - listpack | Failing |
| LMPOP single existing list - quicklist | Failing |
| LMPOP with illegal argument | Failing |
| LPOP/RPOP against non existing key in RESP2 | Failing |
| LPOP/RPOP against non existing key in RESP3 | Failing |
| LPOP/RPOP with <count> against non existing key in RESP2 | Failing |
| LPOP/RPOP with <count> against non existing key in RESP3 | Failing |
| LPOP/RPOP with the count 0 returns an empty array in RESP2 | Failing |
| LPOP/RPOP with the count 0 returns an empty array in RESP3 | Failing |
| LPOP/RPOP/LMPOP NON-BLOCK or BLOCK against non list value | Failing |
| LPOP/RPOP/LMPOP against empty list | Failing |
| LPOS COUNT + RANK option | Failing |
| LPOS COUNT option | Failing |
| LPOS MAXLEN | Failing |
| LPOS RANK (positive, negative and zero rank) option | Failing |
| LPOS basic usage - listpack | Failing |
| LPOS basic usage - quicklist | Failing |
| LPOS no match | Failing |
| LPOS non existing key | Failing |
| LPOS when RANK is greater than matches | Failing |
| LPUSHX, RPUSHX - generic | Failing |
| LPUSHX, RPUSHX - listpack | Failing |
| LPUSHX, RPUSHX - quicklist | Failing |
| Linked LMOVEs | Failing |
| List encoding conversion when RDB loading | Failing |
| List invalid list-max-listpack-size config | Failing |
| List listpack -> quicklist encoding conversion | Failing |
| List of various encodings | Failing |
| List of various encodings - sanitize dump | Failing |
| List quicklist -> listpack encoding conversion | Failing |
| MULTI + LPUSH + EXPIRE + DEBUG SLEEP on blocked client, key already expired | Failing |
| MULTI/EXEC is isolated from the point of view of BLMPOP_LEFT | Failing |
| MULTI/EXEC is isolated from the point of view of BLPOP | Failing |
| Mass RPOP/LPOP - listpack | Failing |
| PUSH resulting from BRPOPLPUSH affect WATCH | Failing |
| RPOPLPUSH against non existing key | Failing |
| RPOPLPUSH against non existing src key | Failing |
| RPOPLPUSH against non list dst key - listpack | Failing |
| RPOPLPUSH against non list dst key - quicklist | Failing |
| RPOPLPUSH against non list src key | Failing |
| RPOPLPUSH base case - listpack | Failing |
| RPOPLPUSH base case - quicklist | Failing |
| RPOPLPUSH with listpack source and existing target listpack | Failing |
| RPOPLPUSH with listpack source and existing target quicklist | Failing |
| RPOPLPUSH with quicklist source and existing target listpack | Failing |
| RPOPLPUSH with quicklist source and existing target quicklist | Failing |
| RPOPLPUSH with the same list as src and dst - listpack | Failing |
| RPOPLPUSH with the same list as src and dst - quicklist | Failing |
| Regression for bug 593 - chaining BRPOPLPUSH with other blocking cmds | Failing |
| SWAPDB awakes blocked client | Failing |
| SWAPDB wants to wake blocked client, but the key already expired | Failing |
| Self-referential BRPOPLPUSH | Failing |
| Test LINDEX and LINSERT on plain nodes | Failing |
| Test LINDEX and LINSERT on plain nodes over 4GB | Failing |
| Test LMOVE on plain nodes | Failing |
| Test LMOVE on plain nodes over 4GB | Failing |
| Test LPOS on plain nodes | Failing |
| Test LPUSH and LPOP on plain nodes | Failing |
| Test LPUSH and LPOP on plain nodes over 4GB | Failing |
| Test LREM on plain nodes | Failing |
| Test LREM on plain nodes over 4GB | Failing |
| Test LSET on plain nodes over 4GB | Failing |
| Test LSET on plain nodes with large elements under packed_threshold over 4GB | Failing |
| Test LSET splits a LZF compressed quicklist node, and then merge | Failing |
| Test LSET splits a quicklist node, and then merge | Failing |
| Test LSET with packed / plain combinations | Failing |
| Test LSET with packed consist only one item | Failing |
| Test LSET with packed is split in the middle | Failing |
| Test LTRIM on plain nodes | Failing |
| Test LTRIM on plain nodes over 4GB | Failing |
| Unblock fairness is kept during nested unblock | Failing |
| Unblock fairness is kept while pipelining | Failing |
| client unblock tests | Failing |
| packed node check compression combined with trim | Failing |
| packed node check compression with insert and pop | Failing |
| packed node check compression with lset | Failing |
| plain node check compression combined with trim | Failing |
| plain node check compression with insert and pop | Failing |
| plain node check compression with lset | Failing |
Set
44 / 118 passing (37.3%)
| Test | Status |
|---|---|
| SADD a non-integer against a large intset | Passing |
| SADD a non-integer against a small intset | Passing |
| SADD against non set | Passing |
| SADD an integer larger than 64 bits | Passing |
| SADD an integer larger than 64 bits to a large intset | Passing |
| SADD overflows the maximum allowed elements in a listpack - multiple | Passing |
| SADD overflows the maximum allowed elements in a listpack - single | Passing |
| SADD overflows the maximum allowed elements in a listpack - single_multiple | Passing |
| SADD overflows the maximum allowed integers in an intset - multiple | Passing |
| SADD overflows the maximum allowed integers in an intset - single | Passing |
| SADD overflows the maximum allowed integers in an intset - single_multiple | Passing |
| SADD, SCARD, SISMEMBER, SMISMEMBER, SMEMBERS basics - hashtable | Passing |
| SADD, SCARD, SISMEMBER, SMISMEMBER, SMEMBERS basics - intset | Passing |
| SADD, SCARD, SISMEMBER, SMISMEMBER, SMEMBERS basics - listpack | Passing |
| SMISMEMBER SMEMBERS SCARD against non existing key | Passing |
| SMISMEMBER SMEMBERS SCARD against non set | Passing |
| SPOP basics - intset | Passing |
| SPOP basics - listpack | Passing |
| SPOP integer from listpack set | Passing |
| SPOP new implementation: code path #1 intset | Passing |
| SPOP new implementation: code path #1 listpack | Passing |
| SPOP new implementation: code path #2 intset | Passing |
| SPOP new implementation: code path #2 listpack | Passing |
| SPOP new implementation: code path #3 intset | Passing |
| SPOP new implementation: code path #3 listpack | Passing |
| SPOP using integers with Knuth’s algorithm | Passing |
| SPOP using integers, testing Knuth’s and Floyd’s algorithm | Passing |
| SPOP with <count> - hashtable | Passing |
| SPOP with <count> - intset | Passing |
| SPOP with <count> - listpack | Passing |
| SPOP with <count>=1 - intset | Passing |
| SPOP with <count>=1 - listpack | Passing |
| SREM basics - $type | Passing |
| SREM basics - intset | Passing |
| SREM variadic version with more args needed to destroy the key | Passing |
| SREM with multiple arguments | Passing |
| SUNION against non-set should throw error | Passing |
| SUNION hashtable and listpack | Passing |
| SUNION should handle non existing key as empty | Passing |
| SUNION with non existing keys - intset | Passing |
| SUNION with non existing keys - regular | Passing |
| SUNION with two sets - intset | Passing |
| SUNION with two sets - regular | Passing |
| Variadic SADD | Passing |
| Generated sets must be encoded correctly - intset | Failing |
| Generated sets must be encoded correctly - regular | Failing |
| SADD, SCARD, SISMEMBER - large data | Failing |
| SDIFF against non-set should throw error | Failing |
| SDIFF fuzzing | Failing |
| SDIFF should handle non existing key as empty | Failing |
| SDIFF with first set empty | Failing |
| SDIFF with same set two times | Failing |
| SDIFF with three sets - intset | Failing |
| SDIFF with three sets - regular | Failing |
| SDIFF with two sets - intset | Failing |
| SDIFF with two sets - regular | Failing |
| SDIFFSTORE against non-set should throw error | Failing |
| SDIFFSTORE should handle non existing key as empty | Failing |
| SDIFFSTORE with three sets - intset | Failing |
| SDIFFSTORE with three sets - regular | Failing |
| SINTER against non-set should throw error | Failing |
| SINTER against three sets - intset | Failing |
| SINTER against three sets - regular | Failing |
| SINTER should handle non existing key as empty | Failing |
| SINTER with same integer elements but different encoding | Failing |
| SINTER with two sets - intset | Failing |
| SINTER with two sets - regular | Failing |
| SINTER/SUNION/SDIFF with three same sets - intset | Failing |
| SINTER/SUNION/SDIFF with three same sets - regular | Failing |
| SINTERCARD against non-existing key | Failing |
| SINTERCARD against non-set should throw error | Failing |
| SINTERCARD against three sets - intset | Failing |
| SINTERCARD against three sets - regular | Failing |
| SINTERCARD with illegal arguments | Failing |
| SINTERCARD with two sets - intset | Failing |
| SINTERCARD with two sets - regular | Failing |
| SINTERSTORE against non existing keys should delete dstkey | Failing |
| SINTERSTORE against non-set should throw error | Failing |
| SINTERSTORE with three sets - intset | Failing |
| SINTERSTORE with three sets - regular | Failing |
| SINTERSTORE with two hashtable sets where result is intset | Failing |
| SINTERSTORE with two listpack sets where result is intset | Failing |
| SINTERSTORE with two sets - intset | Failing |
| SINTERSTORE with two sets - regular | Failing |
| SINTERSTORE with two sets, after a DEBUG RELOAD - intset | Failing |
| SINTERSTORE with two sets, after a DEBUG RELOAD - regular | Failing |
| SMISMEMBER requires one or more members | Failing |
| SMOVE basics - from intset to regular set | Failing |
| SMOVE basics - from regular set to intset | Failing |
| SMOVE from intset to non existing destination set | Failing |
| SMOVE from regular set to non existing destination set | Failing |
| SMOVE non existing key | Failing |
| SMOVE non existing src set | Failing |
| SMOVE only notify dstset when the addition is successful | Failing |
| SMOVE with identical source and destination | Failing |
| SMOVE wrong dst key type | Failing |
| SMOVE wrong src key type | Failing |
| SPOP new implementation: code path #1 propagate as DEL or UNLINK | Failing |
| SRANDMEMBER - intset | Failing |
| SRANDMEMBER - listpack | Failing |
| SRANDMEMBER count of 0 is handled correctly | Failing |
| SRANDMEMBER count of 0 is handled correctly - emptyarray | Failing |
| SRANDMEMBER count overflow | Failing |
| SRANDMEMBER histogram distribution - hashtable | Failing |
| SRANDMEMBER histogram distribution - intset | Failing |
| SRANDMEMBER histogram distribution - listpack | Failing |
| SRANDMEMBER with <count> - hashtable | Failing |
| SRANDMEMBER with <count> - intset | Failing |
| SRANDMEMBER with <count> - listpack | Failing |
| SRANDMEMBER with <count> against non existing key | Failing |
| SRANDMEMBER with <count> against non existing key - emptyarray | Failing |
| SUNIONSTORE against non existing keys should delete dstkey | Failing |
| SUNIONSTORE against non-set should throw error | Failing |
| SUNIONSTORE should handle non existing key as empty | Failing |
| SUNIONSTORE with two sets - intset | Failing |
| SUNIONSTORE with two sets - regular | Failing |
| Set encoding after DEBUG RELOAD | Failing |
| intsets implementation stress testing | Failing |
Stream-cgroups
0 / 66 passing (0.0%)
| Test | Status |
|---|---|
| Blocking XREAD: key deleted | Failing |
| Blocking XREAD: key type changed with SET | Failing |
| Blocking XREADGROUP for stream key that has clients blocked on list | Failing |
| Blocking XREADGROUP for stream key that has clients blocked on stream - avoid endless loop | Failing |
| Blocking XREADGROUP for stream key that has clients blocked on stream - reprocessing command | Failing |
| Blocking XREADGROUP for stream that ran dry (issue #5299) | Failing |
| Blocking XREADGROUP will ignore BLOCK if ID is not > | Failing |
| Blocking XREADGROUP will not reply with an empty array | Failing |
| Blocking XREADGROUP: flushed DB | Failing |
| Blocking XREADGROUP: key deleted | Failing |
| Blocking XREADGROUP: key type changed with SET | Failing |
| Blocking XREADGROUP: key type changed with transaction | Failing |
| Blocking XREADGROUP: swapped DB, key doesn’t exist | Failing |
| Blocking XREADGROUP: swapped DB, key is not a stream | Failing |
| Consumer group lag with XADD trimming | Failing |
| Consumer group lag with XDELs | Failing |
| Consumer group lag with XTRIM | Failing |
| Consumer group last ID propagation to slave (NOACK=0) | Failing |
| Consumer group last ID propagation to slave (NOACK=1) | Failing |
| Consumer group read counter and lag in empty streams | Failing |
| Consumer group read counter and lag sanity | Failing |
| Consumer seen-time and active-time | Failing |
| Consumer without PEL is present in AOF after AOFRW | Failing |
| Empty stream with no lastid can be rewrite into AOF correctly | Failing |
| Loading from legacy (Redis <= v6.2.x, rdb_ver < 10) persistence | Failing |
| Loading from legacy (Redis <= v7.0.x, rdb_ver < 11) persistence | Failing |
| PEL NACK reassignment after XGROUP SETID event | Failing |
| RENAME can unblock XREADGROUP with -NOGROUP | Failing |
| RENAME can unblock XREADGROUP with data | Failing |
| Replication tests of XCLAIM with deleted entries (autoclaim=0) | Failing |
| Replication tests of XCLAIM with deleted entries (autoclaim=1) | Failing |
| XACK can’t remove the same item multiple times | Failing |
| XACK is able to accept multiple arguments | Failing |
| XACK is able to remove items from the consumer/group PEL | Failing |
| XACK should fail if got at least one invalid ID | Failing |
| XAUTOCLAIM COUNT must be > 0 | Failing |
| XAUTOCLAIM as an iterator | Failing |
| XAUTOCLAIM can claim PEL items from another consumer | Failing |
| XAUTOCLAIM with XDEL | Failing |
| XAUTOCLAIM with XDEL and count | Failing |
| XAUTOCLAIM with out of range count | Failing |
| XCLAIM can claim PEL items from another consumer | Failing |
| XCLAIM same consumer | Failing |
| XCLAIM with XDEL | Failing |
| XCLAIM with trimming | Failing |
| XCLAIM without JUSTID increments delivery count | Failing |
| XGROUP CREATE: automatic stream creation fails without MKSTREAM | Failing |
| XGROUP CREATE: automatic stream creation works with MKSTREAM | Failing |
| XGROUP CREATE: creation and duplicate group name detection | Failing |
| XGROUP CREATE: with ENTRIESREAD parameter | Failing |
| XGROUP CREATECONSUMER: create consumer if does not exist | Failing |
| XGROUP CREATECONSUMER: group must exist | Failing |
| XGROUP DESTROY should unblock XREADGROUP with -NOGROUP | Failing |
| XINFO FULL output | Failing |
| XPENDING can return single consumer items | Failing |
| XPENDING is able to return pending items | Failing |
| XPENDING only group | Failing |
| XPENDING with IDLE | Failing |
| XPENDING with exclusive range intervals works as expected | Failing |
| XREAD and XREADGROUP against wrong parameter | Failing |
| XREADGROUP ACK would propagate entries-read | Failing |
| XREADGROUP can read the history of the elements we own | Failing |
| XREADGROUP history reporting of deleted entries. Bug #5570 | Failing |
| XREADGROUP will not report data on empty history. Bug #5577 | Failing |
| XREADGROUP will return only new elements | Failing |
| XREADGROUP with NOACK creates consumer | Failing |
Stream
0 / 81 passing (0.0%)
| Test | Status |
|---|---|
| Blocking XREAD for stream that ran dry (issue #5299) | Failing |
| Blocking XREAD waiting new data | Failing |
| Blocking XREAD waiting old data | Failing |
| Blocking XREAD will not reply with an empty array | Failing |
| Empty stream can be rewrite into AOF correctly | Failing |
| Maximum XDEL ID behaves correctly | Failing |
| Non blocking XREAD with empty streams | Failing |
| Stream can be rewrite into AOF correctly after XDEL lastid | Failing |
| XADD 0-* should succeed | Failing |
| XADD IDs are incremental | Failing |
| XADD IDs are incremental when ms is the same as well | Failing |
| XADD IDs correctly report an error when overflowing | Failing |
| XADD advances the entries-added counter and sets the recorded-first-entry-id | Failing |
| XADD auto-generated sequence can’t be smaller than last ID | Failing |
| XADD auto-generated sequence can’t overflow | Failing |
| XADD auto-generated sequence is incremented for last ID | Failing |
| XADD auto-generated sequence is zero for future timestamp ID | Failing |
| XADD can CREATE an empty stream | Failing |
| XADD can add entries into a stream that XRANGE can fetch | Failing |
| XADD mass insertion and XLEN | Failing |
| XADD streamID edge | Failing |
| XADD with ID 0-0 | Failing |
| XADD with LIMIT consecutive calls | Failing |
| XADD with LIMIT delete entries no more than limit | Failing |
| XADD with MAXLEN > xlen can propagate correctly | Failing |
| XADD with MAXLEN option | Failing |
| XADD with MAXLEN option and the ‘=’ argument | Failing |
| XADD with MAXLEN option and the ‘~’ argument | Failing |
| XADD with MINID > lastid can propagate correctly | Failing |
| XADD with MINID option | Failing |
| XADD with NOMKSTREAM option | Failing |
| XADD with artial ID with maximal seq | Failing |
| XADD with ~ MAXLEN and LIMIT can propagate correctly | Failing |
| XADD with ~ MAXLEN can propagate correctly | Failing |
| XADD with ~ MINID and LIMIT can propagate correctly | Failing |
| XADD with ~ MINID can propagate correctly | Failing |
| XADD wrong number of args | Failing |
| XDEL basic test | Failing |
| XDEL fuzz test | Failing |
| XDEL multiply id test | Failing |
| XDEL/TRIM are reflected by recorded first entry | Failing |
| XGROUP HELP should not have unexpected options | Failing |
| XINFO HELP should not have unexpected options | Failing |
| XRANGE COUNT works as expected | Failing |
| XRANGE can be used to iterate the whole stream | Failing |
| XRANGE exclusive ranges | Failing |
| XRANGE fuzzing | Failing |
| XREAD + multiple XADD inside transaction | Failing |
| XREAD last element blocking from empty stream | Failing |
| XREAD last element blocking from non-empty stream | Failing |
| XREAD last element from empty stream | Failing |
| XREAD last element from multiple streams | Failing |
| XREAD last element from non-empty stream | Failing |
| XREAD last element with count > 1 | Failing |
| XREAD streamID edge (blocking) | Failing |
| XREAD streamID edge (no-blocking) | Failing |
| XREAD with non empty second stream | Failing |
| XREAD with non empty stream | Failing |
| XREAD with same stream name multiple times should work | Failing |
| XREAD: XADD + DEL + LPUSH should not awake client | Failing |
| XREAD: XADD + DEL should not awake client | Failing |
| XREVRANGE COUNT works as expected | Failing |
| XREVRANGE regression test for issue #5006 | Failing |
| XREVRANGE returns the reverse of XRANGE | Failing |
| XSETID can set a specific ID | Failing |
| XSETID cannot SETID on non-existent key | Failing |
| XSETID cannot SETID with smaller ID | Failing |
| XSETID cannot run with a maximal tombstone but without an offset | Failing |
| XSETID cannot run with an offset but without a maximal tombstone | Failing |
| XSETID cannot set smaller ID than current MAXDELETEDID | Failing |
| XSETID cannot set the maximal tombstone with larger ID | Failing |
| XSETID cannot set the offset to less than the length | Failing |
| XSETID errors on negstive offset | Failing |
| XTRIM with LIMIT delete entries no more than limit | Failing |
| XTRIM with MAXLEN option basic test | Failing |
| XTRIM with MINID option | Failing |
| XTRIM with MINID option, big delta from master record | Failing |
| XTRIM with ~ MAXLEN can propagate correctly | Failing |
| XTRIM with ~ is limited | Failing |
| XTRIM without ~ and with LIMIT | Failing |
| XTRIM without ~ is not limited | Failing |
String
86 / 86 in-scope passing (100.0%) · 3 out of scope
| Test | Status |
|---|---|
| APPEND modifies the encoding from int to raw | Passing |
| Coverage: SUBSTR | Passing |
| DBSIZE should be 10000 now | Passing |
| Extended SET EX option | Passing |
| Extended SET EXAT option | Passing |
| Extended SET GET option | Passing |
| Extended SET GET option with NX | Passing |
| Extended SET GET option with NX and previous value | Passing |
| Extended SET GET option with XX | Passing |
| Extended SET GET option with XX and no previous value | Passing |
| Extended SET GET option with no previous value | Passing |
| Extended SET GET with incorrect type should result in wrong type error | Passing |
| Extended SET NX option | Passing |
| Extended SET PX option | Passing |
| Extended SET PXAT option | Passing |
| Extended SET XX option | Passing |
| Extended SET can detect syntax errors | Passing |
| Extended SET using multiple options at once | Passing |
| GETBIT against integer-encoded key | Passing |
| GETBIT against non-existing key | Passing |
| GETBIT against string-encoded key | Passing |
| GETDEL command | Passing |
| GETEX EX option | Passing |
| GETEX EXAT option | Passing |
| GETEX PERSIST option | Passing |
| GETEX PX option | Passing |
| GETEX PXAT option | Passing |
| GETEX and GET expired key or not exist | Passing |
| GETEX no arguments | Passing |
| GETEX no option | Passing |
| GETEX syntax errors | Passing |
| GETRANGE against integer-encoded value | Passing |
| GETRANGE against non-existing key | Passing |
| GETRANGE against string value | Passing |
| GETRANGE against wrong key type | Passing |
| GETRANGE fuzzing | Passing |
| GETRANGE with huge ranges, Github issue #1844 | Passing |
| GETSET (replace old value) | Passing |
| GETSET (set new value) | Passing |
| LCS basic | Passing |
| LCS indexes | Passing |
| LCS indexes with match len | Passing |
| LCS indexes with match len and minimum match len | Passing |
| LCS len | Passing |
| MGET | Passing |
| MGET against non existing key | Passing |
| MGET against non-string key | Passing |
| MSET base case | Passing |
| MSET with already existing - same key twice | Passing |
| MSET/MSETNX wrong number of args | Passing |
| MSETNX with already existent key | Passing |
| MSETNX with already existing keys - same key twice | Passing |
| MSETNX with not existing keys | Passing |
| MSETNX with not existing keys - same key twice | Passing |
| SET 10000 numeric keys and access all them in reverse order | Passing |
| SET and GET an empty item | Passing |
| SET and GET an item | Passing |
| SET with IFEQ conditional | Passing |
| SET with IFEQ conditional - non string current value with get | Passing |
| SET with IFEQ conditional - non-string current value | Passing |
| SET with IFEQ conditional - with get | Passing |
| SET with IFEQ conditional - with nx | Passing |
| SET with IFEQ conditional - with xx | Passing |
| SETBIT against integer-encoded key | Passing |
| SETBIT against key with wrong type | Passing |
| SETBIT against non-existing key | Passing |
| SETBIT against string-encoded key | Passing |
| SETBIT fuzzing | Passing |
| SETBIT with non-bit argument | Passing |
| SETBIT with out of range bit offset | Passing |
| SETNX against expired volatile key | Passing |
| SETNX against not-expired volatile key | Passing |
| SETNX target key exists | Passing |
| SETNX target key missing | Passing |
| SETRANGE against integer-encoded key | Passing |
| SETRANGE against key with wrong type | Passing |
| SETRANGE against non-existing key | Passing |
| SETRANGE against string-encoded key | Passing |
| SETRANGE with huge offset | Passing |
| SETRANGE with out of range offset | Passing |
| STRLEN against integer-encoded value | Passing |
| STRLEN against non-existing key | Passing |
| STRLEN against plain string | Passing |
| Very big payload in GET/SET | Passing |
| Very big payload random access | Passing |
| memoryusage of string | Passing |
| GETDEL propagate as DEL command to replica | Out of scope |
| GETEX without argument does not propagate to replica | Out of scope |
| SET EXAT / PXAT Expiration time is expired | Out of scope |
Zset
0 / 305 passing (0.0%)
| Test | Status |
|---|---|
| BZMPOP propagate as pop with count command to replica | Failing |
| BZMPOP readraw in RESP2 | Failing |
| BZMPOP readraw in RESP3 | Failing |
| BZMPOP should not blocks on non key arguments - #10762 | Failing |
| BZMPOP with illegal argument | Failing |
| BZMPOP with multiple blocked clients | Failing |
| BZMPOP_MIN with variadic ZADD | Failing |
| BZMPOP_MIN with zero timeout should block indefinitely | Failing |
| BZMPOP_MIN, ZADD + DEL + SET should not awake blocked client | Failing |
| BZMPOP_MIN, ZADD + DEL should not awake blocked client | Failing |
| BZMPOP_MIN/BZMPOP_MAX - listpack RESP3 | Failing |
| BZMPOP_MIN/BZMPOP_MAX - skiplist RESP3 | Failing |
| BZMPOP_MIN/BZMPOP_MAX second sorted set has members - listpack | Failing |
| BZMPOP_MIN/BZMPOP_MAX second sorted set has members - skiplist | Failing |
| BZMPOP_MIN/BZMPOP_MAX with a single existing sorted set - listpack | Failing |
| BZMPOP_MIN/BZMPOP_MAX with a single existing sorted set - skiplist | Failing |
| BZMPOP_MIN/BZMPOP_MAX with multiple existing sorted sets - listpack | Failing |
| BZMPOP_MIN/BZMPOP_MAX with multiple existing sorted sets - skiplist | Failing |
| BZPOP/BZMPOP against wrong type | Failing |
| BZPOPMIN unblock but the key is expired and then block again - reprocessing command | Failing |
| BZPOPMIN with same key multiple times should work | Failing |
| BZPOPMIN with variadic ZADD | Failing |
| BZPOPMIN with zero timeout should block indefinitely | Failing |
| BZPOPMIN, ZADD + DEL + SET should not awake blocked client | Failing |
| BZPOPMIN, ZADD + DEL should not awake blocked client | Failing |
| BZPOPMIN/BZPOPMAX - listpack RESP3 | Failing |
| BZPOPMIN/BZPOPMAX - skiplist RESP3 | Failing |
| BZPOPMIN/BZPOPMAX readraw in RESP2 | Failing |
| BZPOPMIN/BZPOPMAX readraw in RESP3 | Failing |
| BZPOPMIN/BZPOPMAX second sorted set has members - listpack | Failing |
| BZPOPMIN/BZPOPMAX second sorted set has members - skiplist | Failing |
| BZPOPMIN/BZPOPMAX with a single existing sorted set - listpack | Failing |
| BZPOPMIN/BZPOPMAX with a single existing sorted set - skiplist | Failing |
| BZPOPMIN/BZPOPMAX with multiple existing sorted sets - listpack | Failing |
| BZPOPMIN/BZPOPMAX with multiple existing sorted sets - skiplist | Failing |
| Basic ZMPOP_MIN/ZMPOP_MAX - listpack RESP3 | Failing |
| Basic ZMPOP_MIN/ZMPOP_MAX - skiplist RESP3 | Failing |
| Basic ZMPOP_MIN/ZMPOP_MAX with a single key - listpack | Failing |
| Basic ZMPOP_MIN/ZMPOP_MAX with a single key - skiplist | Failing |
| Basic ZPOPMIN/ZPOPMAX - listpack RESP3 | Failing |
| Basic ZPOPMIN/ZPOPMAX - skiplist RESP3 | Failing |
| Basic ZPOPMIN/ZPOPMAX with a single key - listpack | Failing |
| Basic ZPOPMIN/ZPOPMAX with a single key - skiplist | Failing |
| Check encoding - listpack | Failing |
| Check encoding - skiplist | Failing |
| MULTI/EXEC is isolated from the point of view of BZMPOP_MIN | Failing |
| MULTI/EXEC is isolated from the point of view of BZPOPMIN | Failing |
| ZADD - Return value is the number of actually added items - listpack | Failing |
| ZADD - Return value is the number of actually added items - skiplist | Failing |
| ZADD - Variadic version base case - listpack | Failing |
| ZADD - Variadic version base case - skiplist | Failing |
| ZADD - Variadic version does not add nothing on single parsing err - listpack | Failing |
| ZADD - Variadic version does not add nothing on single parsing err - skiplist | Failing |
| ZADD - Variadic version will raise error on missing arg - listpack | Failing |
| ZADD - Variadic version will raise error on missing arg - skiplist | Failing |
| ZADD CH option changes return value to all changed elements - listpack | Failing |
| ZADD CH option changes return value to all changed elements - skiplist | Failing |
| ZADD GT XX updates existing elements when new scores are greater and skips new elements - listpack | Failing |
| ZADD GT XX updates existing elements when new scores are greater and skips new elements - skiplist | Failing |
| ZADD GT and NX are not compatible - listpack | Failing |
| ZADD GT and NX are not compatible - skiplist | Failing |
| ZADD GT updates existing elements when new scores are greater - listpack | Failing |
| ZADD GT updates existing elements when new scores are greater - skiplist | Failing |
| ZADD INCR LT/GT replies with nill if score not updated - listpack | Failing |
| ZADD INCR LT/GT replies with nill if score not updated - skiplist | Failing |
| ZADD INCR LT/GT with inf - listpack | Failing |
| ZADD INCR LT/GT with inf - skiplist | Failing |
| ZADD INCR works like ZINCRBY - listpack | Failing |
| ZADD INCR works like ZINCRBY - skiplist | Failing |
| ZADD INCR works with a single score-element pair - listpack | Failing |
| ZADD INCR works with a single score-element pair - skiplist | Failing |
| ZADD LT XX updates existing elements when new scores are lower and skips new elements - listpack | Failing |
| ZADD LT XX updates existing elements when new scores are lower and skips new elements - skiplist | Failing |
| ZADD LT and GT are not compatible - listpack | Failing |
| ZADD LT and GT are not compatible - skiplist | Failing |
| ZADD LT and NX are not compatible - listpack | Failing |
| ZADD LT and NX are not compatible - skiplist | Failing |
| ZADD LT updates existing elements when new scores are lower - listpack | Failing |
| ZADD LT updates existing elements when new scores are lower - skiplist | Failing |
| ZADD NX only add new elements without updating old ones - listpack | Failing |
| ZADD NX only add new elements without updating old ones - skiplist | Failing |
| ZADD NX with non existing key - listpack | Failing |
| ZADD NX with non existing key - skiplist | Failing |
| ZADD XX and NX are not compatible - listpack | Failing |
| ZADD XX and NX are not compatible - skiplist | Failing |
| ZADD XX existing key - listpack | Failing |
| ZADD XX existing key - skiplist | Failing |
| ZADD XX option without key - listpack | Failing |
| ZADD XX option without key - skiplist | Failing |
| ZADD XX returns the number of elements actually added - listpack | Failing |
| ZADD XX returns the number of elements actually added - skiplist | Failing |
| ZADD XX updates existing elements score - listpack | Failing |
| ZADD XX updates existing elements score - skiplist | Failing |
| ZADD overflows the maximum allowed elements in a listpack - multiple | Failing |
| ZADD overflows the maximum allowed elements in a listpack - single | Failing |
| ZADD overflows the maximum allowed elements in a listpack - single_multiple | Failing |
| ZADD with options syntax error with incomplete pair - listpack | Failing |
| ZADD with options syntax error with incomplete pair - skiplist | Failing |
| ZCARD basics - listpack | Failing |
| ZCARD basics - skiplist | Failing |
| ZDIFF algorithm 1 - listpack | Failing |
| ZDIFF algorithm 1 - skiplist | Failing |
| ZDIFF algorithm 2 - listpack | Failing |
| ZDIFF algorithm 2 - skiplist | Failing |
| ZDIFF basics - listpack | Failing |
| ZDIFF basics - skiplist | Failing |
| ZDIFF fuzzing - listpack | Failing |
| ZDIFF fuzzing - skiplist | Failing |
| ZDIFF subtracting set from itself - listpack | Failing |
| ZDIFF subtracting set from itself - skiplist | Failing |
| ZDIFFSTORE basics - listpack | Failing |
| ZDIFFSTORE basics - skiplist | Failing |
| ZDIFFSTORE with a regular set - listpack | Failing |
| ZDIFFSTORE with a regular set - skiplist | Failing |
| ZINCRBY - can create a new sorted set - listpack | Failing |
| ZINCRBY - can create a new sorted set - skiplist | Failing |
| ZINCRBY - increment and decrement - listpack | Failing |
| ZINCRBY - increment and decrement - skiplist | Failing |
| ZINCRBY against invalid incr value - listpack | Failing |
| ZINCRBY against invalid incr value - skiplist | Failing |
| ZINCRBY calls leading to NaN result in error - listpack | Failing |
| ZINCRBY calls leading to NaN result in error - skiplist | Failing |
| ZINCRBY does not work variadic even if shares ZADD implementation - listpack | Failing |
| ZINCRBY does not work variadic even if shares ZADD implementation - skiplist | Failing |
| ZINCRBY return value - listpack | Failing |
| ZINCRBY return value - skiplist | Failing |
| ZINTER RESP3 - listpack | Failing |
| ZINTER RESP3 - skiplist | Failing |
| ZINTER basics - listpack | Failing |
| ZINTER basics - skiplist | Failing |
| ZINTER with weights - listpack | Failing |
| ZINTER with weights - skiplist | Failing |
| ZINTERCARD basics - listpack | Failing |
| ZINTERCARD basics - skiplist | Failing |
| ZINTERCARD with illegal arguments | Failing |
| ZINTERSTORE #516 regression, mixed sets and ziplist zsets | Failing |
| ZINTERSTORE basics - listpack | Failing |
| ZINTERSTORE basics - skiplist | Failing |
| ZINTERSTORE regression with two sets, intset+hashtable | Failing |
| ZINTERSTORE with +inf/-inf scores - listpack | Failing |
| ZINTERSTORE with +inf/-inf scores - skiplist | Failing |
| ZINTERSTORE with AGGREGATE MAX - listpack | Failing |
| ZINTERSTORE with AGGREGATE MAX - skiplist | Failing |
| ZINTERSTORE with AGGREGATE MIN - listpack | Failing |
| ZINTERSTORE with AGGREGATE MIN - skiplist | Failing |
| ZINTERSTORE with NaN weights - listpack | Failing |
| ZINTERSTORE with NaN weights - skiplist | Failing |
| ZINTERSTORE with a regular set and weights - listpack | Failing |
| ZINTERSTORE with a regular set and weights - skiplist | Failing |
| ZINTERSTORE with weights - listpack | Failing |
| ZINTERSTORE with weights - skiplist | Failing |
| ZLEXCOUNT advanced - listpack | Failing |
| ZLEXCOUNT advanced - skiplist | Failing |
| ZMPOP propagate as pop with count command to replica | Failing |
| ZMPOP readraw in RESP2 | Failing |
| ZMPOP readraw in RESP3 | Failing |
| ZMPOP with illegal argument | Failing |
| ZMPOP_MIN/ZMPOP_MAX with count - listpack | Failing |
| ZMPOP_MIN/ZMPOP_MAX with count - listpack RESP3 | Failing |
| ZMPOP_MIN/ZMPOP_MAX with count - skiplist | Failing |
| ZMPOP_MIN/ZMPOP_MAX with count - skiplist RESP3 | Failing |
| ZMSCORE - listpack | Failing |
| ZMSCORE - skiplist | Failing |
| ZMSCORE retrieve | Failing |
| ZMSCORE retrieve from empty set | Failing |
| ZMSCORE retrieve requires one or more members | Failing |
| ZMSCORE retrieve single member | Failing |
| ZMSCORE retrieve with missing member | Failing |
| ZPOP/ZMPOP against wrong type | Failing |
| ZPOPMAX with negative count | Failing |
| ZPOPMAX with the count 0 returns an empty array | Failing |
| ZPOPMIN with negative count | Failing |
| ZPOPMIN with the count 0 returns an empty array | Failing |
| ZPOPMIN/ZPOPMAX readraw in RESP2 | Failing |
| ZPOPMIN/ZPOPMAX readraw in RESP3 | Failing |
| ZPOPMIN/ZPOPMAX with count - listpack | Failing |
| ZPOPMIN/ZPOPMAX with count - listpack RESP3 | Failing |
| ZPOPMIN/ZPOPMAX with count - skiplist | Failing |
| ZPOPMIN/ZPOPMAX with count - skiplist RESP3 | Failing |
| ZRANDMEMBER - listpack | Failing |
| ZRANDMEMBER - skiplist | Failing |
| ZRANDMEMBER count of 0 is handled correctly | Failing |
| ZRANDMEMBER count of 0 is handled correctly - emptyarray | Failing |
| ZRANDMEMBER count overflow | Failing |
| ZRANDMEMBER with <count> - listpack | Failing |
| ZRANDMEMBER with <count> - skiplist | Failing |
| ZRANDMEMBER with <count> against non existing key | Failing |
| ZRANDMEMBER with <count> against non existing key - emptyarray | Failing |
| ZRANDMEMBER with RESP3 | Failing |
| ZRANGE BYLEX | Failing |
| ZRANGE BYSCORE REV LIMIT | Failing |
| ZRANGE basics - listpack | Failing |
| ZRANGE basics - skiplist | Failing |
| ZRANGE invalid syntax | Failing |
| ZRANGEBYLEX fuzzy test, 100 ranges in 100 element sorted set - skiplist | Failing |
| ZRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - listpack | Failing |
| ZRANGEBYLEX with LIMIT - listpack | Failing |
| ZRANGEBYLEX with LIMIT - skiplist | Failing |
| ZRANGEBYLEX with invalid lex range specifiers - listpack | Failing |
| ZRANGEBYLEX with invalid lex range specifiers - skiplist | Failing |
| ZRANGEBYLEX/ZREVRANGEBYLEX/ZLEXCOUNT basics - listpack | Failing |
| ZRANGEBYLEX/ZREVRANGEBYLEX/ZLEXCOUNT basics - skiplist | Failing |
| ZRANGEBYSCORE fuzzy test, 100 ranges in 100 element sorted set - skiplist | Failing |
| ZRANGEBYSCORE fuzzy test, 100 ranges in 128 element sorted set - listpack | Failing |
| ZRANGEBYSCORE with LIMIT - listpack | Failing |
| ZRANGEBYSCORE with LIMIT - skiplist | Failing |
| ZRANGEBYSCORE with LIMIT and WITHSCORES - listpack | Failing |
| ZRANGEBYSCORE with LIMIT and WITHSCORES - skiplist | Failing |
| ZRANGEBYSCORE with WITHSCORES - listpack | Failing |
| ZRANGEBYSCORE with WITHSCORES - skiplist | Failing |
| ZRANGEBYSCORE with non-value min or max - listpack | Failing |
| ZRANGEBYSCORE with non-value min or max - skiplist | Failing |
| ZRANGEBYSCORE/ZREVRANGEBYSCORE/ZCOUNT basics - listpack | Failing |
| ZRANGEBYSCORE/ZREVRANGEBYSCORE/ZCOUNT basics - skiplist | Failing |
| ZRANGESTORE - empty range | Failing |
| ZRANGESTORE - src key missing | Failing |
| ZRANGESTORE - src key wrong type | Failing |
| ZRANGESTORE BYLEX | Failing |
| ZRANGESTORE BYLEX - empty range | Failing |
| ZRANGESTORE BYSCORE | Failing |
| ZRANGESTORE BYSCORE - empty range | Failing |
| ZRANGESTORE BYSCORE LIMIT | Failing |
| ZRANGESTORE BYSCORE REV LIMIT | Failing |
| ZRANGESTORE RESP3 | Failing |
| ZRANGESTORE basic | Failing |
| ZRANGESTORE invalid syntax | Failing |
| ZRANGESTORE range | Failing |
| ZRANGESTORE with zset-max-listpack-entries 0 #10767 case | Failing |
| ZRANGESTORE with zset-max-listpack-entries 1 dst key should use skiplist encoding | Failing |
| ZRANK - after deletion - listpack | Failing |
| ZRANK - after deletion - skiplist | Failing |
| ZRANK/ZREVRANK basics - listpack | Failing |
| ZRANK/ZREVRANK basics - skiplist | Failing |
| ZREM removes key after last element is removed - listpack | Failing |
| ZREM removes key after last element is removed - skiplist | Failing |
| ZREM variadic version - listpack | Failing |
| ZREM variadic version - skiplist | Failing |
| ZREM variadic version – remove elements after key deletion - listpack | Failing |
| ZREM variadic version – remove elements after key deletion - skiplist | Failing |
| ZREMRANGEBYLEX basics - listpack | Failing |
| ZREMRANGEBYLEX basics - skiplist | Failing |
| ZREMRANGEBYLEX fuzzy test, 100 ranges in 100 element sorted set - skiplist | Failing |
| ZREMRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - listpack | Failing |
| ZREMRANGEBYRANK basics - listpack | Failing |
| ZREMRANGEBYRANK basics - skiplist | Failing |
| ZREMRANGEBYSCORE basics - listpack | Failing |
| ZREMRANGEBYSCORE basics - skiplist | Failing |
| ZREMRANGEBYSCORE with non-value min or max - listpack | Failing |
| ZREMRANGEBYSCORE with non-value min or max - skiplist | Failing |
| ZREVRANGE basics - listpack | Failing |
| ZREVRANGE basics - skiplist | Failing |
| ZSCORE - listpack | Failing |
| ZSCORE - skiplist | Failing |
| ZSCORE after a DEBUG RELOAD - listpack | Failing |
| ZSCORE after a DEBUG RELOAD - skiplist | Failing |
| ZSET basic ZADD and score update - listpack | Failing |
| ZSET basic ZADD and score update - skiplist | Failing |
| ZSET commands don’t accept the empty strings as valid score | Failing |
| ZSET element can’t be set to NaN with ZADD - listpack | Failing |
| ZSET element can’t be set to NaN with ZADD - skiplist | Failing |
| ZSET element can’t be set to NaN with ZINCRBY - listpack | Failing |
| ZSET element can’t be set to NaN with ZINCRBY - skiplist | Failing |
| ZSET skiplist order consistency when elements are moved | Failing |
| ZSET sorting stresser - listpack | Failing |
| ZSET sorting stresser - skiplist | Failing |
| ZSETs ZRANK augmented skip list stress testing - listpack | Failing |
| ZSETs ZRANK augmented skip list stress testing - skiplist | Failing |
| ZSETs skiplist implementation backlink consistency test - listpack | Failing |
| ZSETs skiplist implementation backlink consistency test - skiplist | Failing |
| ZUNION with weights - listpack | Failing |
| ZUNION with weights - skiplist | Failing |
| ZUNION/ZINTER with AGGREGATE MAX - listpack | Failing |
| ZUNION/ZINTER with AGGREGATE MAX - skiplist | Failing |
| ZUNION/ZINTER with AGGREGATE MIN - listpack | Failing |
| ZUNION/ZINTER with AGGREGATE MIN - skiplist | Failing |
| ZUNION/ZINTER/ZINTERCARD/ZDIFF against non-existing key - listpack | Failing |
| ZUNION/ZINTER/ZINTERCARD/ZDIFF against non-existing key - skiplist | Failing |
| ZUNION/ZINTER/ZINTERCARD/ZDIFF with empty set - listpack | Failing |
| ZUNION/ZINTER/ZINTERCARD/ZDIFF with empty set - skiplist | Failing |
| ZUNION/ZINTER/ZINTERCARD/ZDIFF with integer members - listpack | Failing |
| ZUNION/ZINTER/ZINTERCARD/ZDIFF with integer members - skiplist | Failing |
| ZUNIONSTORE against non-existing key doesn’t set destination - listpack | Failing |
| ZUNIONSTORE against non-existing key doesn’t set destination - skiplist | Failing |
| ZUNIONSTORE basics - listpack | Failing |
| ZUNIONSTORE basics - skiplist | Failing |
| ZUNIONSTORE regression, should not create NaN in scores | Failing |
| ZUNIONSTORE result is sorted | Failing |
| ZUNIONSTORE with +inf/-inf scores - listpack | Failing |
| ZUNIONSTORE with +inf/-inf scores - skiplist | Failing |
| ZUNIONSTORE with AGGREGATE MAX - listpack | Failing |
| ZUNIONSTORE with AGGREGATE MAX - skiplist | Failing |
| ZUNIONSTORE with AGGREGATE MIN - listpack | Failing |
| ZUNIONSTORE with AGGREGATE MIN - skiplist | Failing |
| ZUNIONSTORE with NaN weights - listpack | Failing |
| ZUNIONSTORE with NaN weights - skiplist | Failing |
| ZUNIONSTORE with a regular set and weights - listpack | Failing |
| ZUNIONSTORE with a regular set and weights - skiplist | Failing |
| ZUNIONSTORE with empty set - listpack | Failing |
| ZUNIONSTORE with empty set - skiplist | Failing |
| ZUNIONSTORE with weights - listpack | Failing |
| ZUNIONSTORE with weights - skiplist | Failing |
| ZUNIONSTORE/ZINTERSTORE/ZDIFFSTORE error if using WITHSCORES | Failing |
| zset score double range | Failing |
| zunionInterDiffGenericCommand acts on SET and ZSET | Failing |
| zunionInterDiffGenericCommand at least 1 input key | Failing |
Cluster
Cli
0 / 5 passing (0.0%)
| Test | Status |
|---|---|
| Migrate the last slot away from a node using valkey-cli | Failing |
| valkey-cli -4 –cluster add-node using 127.0.0.1 with cluster-port | Failing |
| valkey-cli -4 –cluster add-node using localhost with cluster-port | Failing |
| valkey-cli -4 –cluster create using 127.0.0.1 with cluster-port | Failing |
| valkey-cli -4 –cluster create using localhost with cluster-port | Failing |
Divergent-cluster-shardid-conf
0 / 1 passing (0.0%)
| Test | Status |
|---|---|
| divergent cluster shardid conflict | Failing |
Integration
Aof-multi-part
0 / 36 passing (0.0%)
| Test | Status |
|---|---|
| AOF can produce consecutive sequence number after reload | Failing |
| AOF enable during BGSAVE will not write data util AOFRW finish | Failing |
| AOF enable will create manifest file | Failing |
| AOF enable/disable auto gc | Failing |
| AOF multiple rewrite failures will open multiple INCR AOFs | Failing |
| AOF rewrite doesn’t open new aof when AOF turn off | Failing |
| AOF will open a temporary INCR AOF to accumulate data until the first AOFRW success when AOF is dynamically enabled | Failing |
| AOF will trigger limit when AOFRW fails many times | Failing |
| Changing aof-use-rdb-preamble during rewrite process | Failing |
| Make sure aof manifest $aof_manifest_name not in aof directory | Failing |
| Multi Part AOF can be loaded correctly when both server dir and aof dir contain old AOF | Failing |
| Multi Part AOF can continue the upgrade from the interrupted upgrade state | Failing |
| Multi Part AOF can create BASE (AOF format) when server starts from empty | Failing |
| Multi Part AOF can create BASE (RDB format) when server starts from empty | Failing |
| Multi Part AOF can handle appendfilename contains whitespaces | Failing |
| Multi Part AOF can load data discontinuously increasing sequence | Failing |
| Multi Part AOF can load data from old version valkey (rdb preamble no) | Failing |
| Multi Part AOF can load data from old version valkey (rdb preamble yes) | Failing |
| Multi Part AOF can load data when manifest add new k-v | Failing |
| Multi Part AOF can load data when some AOFs are empty | Failing |
| Multi Part AOF can start when no aof and no manifest | Failing |
| Multi Part AOF can start when we have en empty AOF dir | Failing |
| Multi Part AOF can upgrade when when two servers share the same server dir | Failing |
| Multi Part AOF can upgrade when when two servers share the same server dir (server1) | Failing |
| Multi Part AOF can upgrade when when two servers share the same server dir (server2) | Failing |
| Multi Part AOF can’t load data when some file missing | Failing |
| Multi Part AOF can’t load data when the manifest contains the old AOF file name but the file does not exist in server dir and aof dir | Failing |
| Multi Part AOF can’t load data when the manifest file is empty | Failing |
| Multi Part AOF can’t load data when the manifest format is wrong (line too long) | Failing |
| Multi Part AOF can’t load data when the manifest format is wrong (line too short) | Failing |
| Multi Part AOF can’t load data when the manifest format is wrong (missing key) | Failing |
| Multi Part AOF can’t load data when the manifest format is wrong (odd parameter) | Failing |
| Multi Part AOF can’t load data when the manifest format is wrong (type unknown) | Failing |
| Multi Part AOF can’t load data when the sequence not increase monotonically | Failing |
| Multi Part AOF can’t load data when there are blank lines in the manifest file | Failing |
| Multi Part AOF can’t load data when there is a duplicate base file | Failing |
Aof
0 / 43 passing (0.0%)
| Test | Status |
|---|---|
| AOF fsync always barrier issue | Failing |
| AOF+EXPIRE: List should be empty | Failing |
| AOF+EXPIRE: Server should have been started | Failing |
| AOF+LMPOP/BLMPOP: after pop elements from the list | Failing |
| AOF+LMPOP/BLMPOP: pop elements from the list | Failing |
| AOF+SPOP: Server should have been started | Failing |
| AOF+SPOP: Set should have 1 member | Failing |
| AOF+ZMPOP/BZMPOP: after pop elements from the zset | Failing |
| AOF+ZMPOP/BZMPOP: pop elements from the zset | Failing |
| Append a new command after loading an incomplete AOF | Failing |
| Bad format: Server should have logged an error | Failing |
| EVAL can process writes from AOF in read-only replicas | Failing |
| EVAL timeout with slow verbatim Lua script from AOF | Failing |
| FLUSHDB / FLUSHALL should persist in AOF | Failing |
| Fixed AOF: Keyspace should contain values that were parseable | Failing |
| Fixed AOF: Server should have been started | Failing |
| GETEX should not append to AOF | Failing |
| Generate timestamp annotations in AOF | Failing |
| Server should not try to convert DEL into EXPIREAT for EXPIRE -1 | Failing |
| Short read + command: Server should start | Failing |
| Short read: Server should have logged an error | Failing |
| Short read: Server should start if load-truncated is yes | Failing |
| Short read: Utility should be able to fix the AOF | Failing |
| Short read: Utility should confirm the AOF is not valid | Failing |
| Short read: Utility should show the abnormal line num in AOF | Failing |
| Successfully load AOF which has timestamp annotations inside | Failing |
| Test cluster slots / cluster shards in aof won’t crash | Failing |
| Test command check in aof won’t crash | Failing |
| Test valkey-check-aof for Multi Part AOF contains a format error | Failing |
| Test valkey-check-aof for Multi Part AOF with rdb-preamble AOF base | Failing |
| Test valkey-check-aof for Multi Part AOF with resp AOF base | Failing |
| Test valkey-check-aof for old style rdb-preamble AOF | Failing |
| Test valkey-check-aof for old style resp AOF | Failing |
| Test valkey-check-aof for old style resp AOF - has data in the same format as manifest | Failing |
| Test valkey-check-aof only truncates the last file for Multi Part AOF in fix mode | Failing |
| Test valkey-check-aof only truncates the last file for Multi Part AOF in truncate-to-timestamp mode | Failing |
| Truncate AOF to specific timestamp | Failing |
| Truncated AOF loaded: we expect foo to be equal to 5 | Failing |
| Truncated AOF loaded: we expect foo to be equal to 6 now | Failing |
| Turning appendonly on and off within a transaction | Failing |
| Unfinished MULTI: Server should have logged an error | Failing |
| Unfinished MULTI: Server should start if load-truncated is yes | Failing |
| Unknown command: Server should have logged an error | Failing |
Block-repl
0 / 2 passing (0.0%)
| Test | Status |
|---|---|
| First server should have role slave after SLAVEOF | Failing |
| Test replication with blocking lists and sorted sets operations | Failing |
Convert-ziplist-hash-on-load
0 / 2 passing (0.0%)
| Test | Status |
|---|---|
| RDB load ziplist hash: converts to hash table when hash-max-ziplist-entries is exceeded | Failing |
| RDB load ziplist hash: converts to listpack when RDB loading | Failing |
Convert-ziplist-zset-on-load
0 / 2 passing (0.0%)
| Test | Status |
|---|---|
| RDB load ziplist zset: converts to listpack when RDB loading | Failing |
| RDB load ziplist zset: converts to skiplist when zset-max-ziplist-entries is exceeded | Failing |
Convert-zipmap-hash-on-load
0 / 3 passing (0.0%)
| Test | Status |
|---|---|
| RDB load zipmap hash: converts to hash table when hash-max-ziplist-entries is exceeded | Failing |
| RDB load zipmap hash: converts to hash table when hash-max-ziplist-value is exceeded | Failing |
| RDB load zipmap hash: converts to listpack | Failing |
Corrupt-dump-fuzzer
0 / 2 passing (0.0%)
| Test | Status |
|---|---|
| Fuzzer corrupt restore payloads - sanitize_dump: no | Failing |
| Fuzzer corrupt restore payloads - sanitize_dump: yes | Failing |
Corrupt-dump
0 / 73 passing (0.0%)
| Test | Status |
|---|---|
| corrupt payload: #3080 - quicklist | Failing |
| corrupt payload: #3080 - ziplist | Failing |
| corrupt payload: #7445 - with sanitize | Failing |
| corrupt payload: fuzzer findings - LCS OOM | Failing |
| corrupt payload: fuzzer findings - NPD in quicklistIndex | Failing |
| corrupt payload: fuzzer findings - NPD in streamIteratorGetID | Failing |
| corrupt payload: fuzzer findings - dict init to huge size | Failing |
| corrupt payload: fuzzer findings - empty hash ziplist | Failing |
| corrupt payload: fuzzer findings - empty intset | Failing |
| corrupt payload: fuzzer findings - empty quicklist | Failing |
| corrupt payload: fuzzer findings - empty set listpack | Failing |
| corrupt payload: fuzzer findings - empty zset | Failing |
| corrupt payload: fuzzer findings - encoded entry header reach outside the allocation | Failing |
| corrupt payload: fuzzer findings - gcc asan reports false leak on assert | Failing |
| corrupt payload: fuzzer findings - hash crash | Failing |
| corrupt payload: fuzzer findings - hash listpack first element too long entry len | Failing |
| corrupt payload: fuzzer findings - hash with len of 0 | Failing |
| corrupt payload: fuzzer findings - hash ziplist too long entry len | Failing |
| corrupt payload: fuzzer findings - huge string | Failing |
| corrupt payload: fuzzer findings - infinite loop | Failing |
| corrupt payload: fuzzer findings - invalid access in ziplist tail prevlen decoding | Failing |
| corrupt payload: fuzzer findings - invalid read in lzf_decompress | Failing |
| corrupt payload: fuzzer findings - invalid ziplist encoding | Failing |
| corrupt payload: fuzzer findings - leak in rdbloading due to dup entry in set | Failing |
| corrupt payload: fuzzer findings - listpack NPD on invalid stream | Failing |
| corrupt payload: fuzzer findings - lpFind invalid access | Failing |
| corrupt payload: fuzzer findings - lzf decompression fails, avoid valgrind invalid read | Failing |
| corrupt payload: fuzzer findings - negative reply length | Failing |
| corrupt payload: fuzzer findings - quicklist ziplist tail followed by extra data which start with 0xff | Failing |
| corrupt payload: fuzzer findings - set with duplicate elements causes sdiff to hang | Failing |
| corrupt payload: fuzzer findings - stream PEL without consumer | Failing |
| corrupt payload: fuzzer findings - stream bad lp_count | Failing |
| corrupt payload: fuzzer findings - stream bad lp_count - unsanitized | Failing |
| corrupt payload: fuzzer findings - stream double free listpack when insert dup node to rax returns 0 | Failing |
| corrupt payload: fuzzer findings - stream integrity check issue | Failing |
| corrupt payload: fuzzer findings - stream listpack lpPrev valgrind issue | Failing |
| corrupt payload: fuzzer findings - stream listpack valgrind issue | Failing |
| corrupt payload: fuzzer findings - stream with bad lpFirst | Failing |
| corrupt payload: fuzzer findings - stream with no records | Failing |
| corrupt payload: fuzzer findings - stream with non-integer entry id | Failing |
| corrupt payload: fuzzer findings - streamLastValidID panic | Failing |
| corrupt payload: fuzzer findings - uneven entry count in hash | Failing |
| corrupt payload: fuzzer findings - valgrind - bad rdbLoadDoubleValue | Failing |
| corrupt payload: fuzzer findings - valgrind fishy value warning | Failing |
| corrupt payload: fuzzer findings - valgrind invalid read | Failing |
| corrupt payload: fuzzer findings - valgrind negative malloc | Failing |
| corrupt payload: fuzzer findings - valgrind ziplist prev too big | Failing |
| corrupt payload: fuzzer findings - valgrind ziplist prevlen reaches outside the ziplist | Failing |
| corrupt payload: fuzzer findings - zset ziplist entry lensize is 0 | Failing |
| corrupt payload: fuzzer findings - zset ziplist invalid tail offset | Failing |
| corrupt payload: fuzzer findings - zset zslInsert with a NAN score | Failing |
| corrupt payload: hash duplicate records | Failing |
| corrupt payload: hash empty zipmap | Failing |
| corrupt payload: hash listpack with duplicate records | Failing |
| corrupt payload: hash listpack with duplicate records - convert | Failing |
| corrupt payload: hash with valid zip list header, invalid entry len | Failing |
| corrupt payload: hash ziplist uneven record count | Failing |
| corrupt payload: hash ziplist with duplicate records | Failing |
| corrupt payload: invalid zlbytes header | Failing |
| corrupt payload: listpack invalid size header | Failing |
| corrupt payload: listpack too long entry len | Failing |
| corrupt payload: listpack too long entry prev len | Failing |
| corrupt payload: listpack very long entry len | Failing |
| corrupt payload: load corrupted rdb with empty keys | Failing |
| corrupt payload: load corrupted rdb with no CRC - #3505 | Failing |
| corrupt payload: quicklist big ziplist prev len | Failing |
| corrupt payload: quicklist encoded_len is 0 | Failing |
| corrupt payload: quicklist listpack entry start with EOF | Failing |
| corrupt payload: quicklist small ziplist prev len | Failing |
| corrupt payload: quicklist with empty ziplist | Failing |
| corrupt payload: quicklist ziplist wrong count | Failing |
| corrupt payload: stream with duplicate consumers | Failing |
| corrupt payload: valid zipped hash header, dup records | Failing |
Cross-version-replication
0 / 2 passing (0.0%)
| Test | Status |
|---|---|
| Replicate a SET command from 0 0 | Failing |
| Start replication from 0 0 | Failing |
Dismiss-mem
0 / 4 passing (0.0%)
| Test | Status |
|---|---|
| dismiss all data types memory | Failing |
| dismiss client output buffer | Failing |
| dismiss client query buffer | Failing |
| dismiss replication backlog | Failing |
Dual-channel-replication
0 / 37 passing (0.0%)
| Test | Status |
|---|---|
| Dual channel replication sync doesn’t impair subsequent normal syncs | Failing |
| Dual-channel replication counts snapshot bytes | Failing |
| Online toggle dual-channel-replication-enabled on primary, starting with ‘no’ | Failing |
| Online toggle dual-channel-replication-enabled on primary, starting with ‘yes’ | Failing |
| Online toggle dual-channel-replication-enabled on replica, starting with ‘no’ | Failing |
| Online toggle dual-channel-replication-enabled on replica, starting with ‘yes’ | Failing |
| Primary abort sync if all slaves dropped dual-channel-replication | Failing |
| Primary memory usage does not increase during dual-channel-replication sync | Failing |
| Psync established after RDB load - beyond grace period | Failing |
| Psync established after rdb load - within grace period | Failing |
| Replica notice main-connection killed during rdb load callback | Failing |
| Replica recover main-connection killed | Failing |
| Replica recover rdb-connection killed | Failing |
| Steady state after dual channel sync | Failing |
| Sync should continue if not all slaves dropped | Failing |
| Test diverse replica sync: dual-channel on/off | Failing |
| Test dual channel replication slave of no one after main conn kill | Failing |
| Test dual channel replication slave of no one after rdb conn kill | Failing |
| Test dual-channel-replication primary gets cob overrun before established psync | Failing |
| Test dual-channel-replication primary gets cob overrun during replica rdb load | Failing |
| Test dual-channel-replication primary reject set-rdb-client after client killed | Failing |
| Test dual-channel-replication replica main channel disconnected | Failing |
| Test dual-channel-replication replica rdb connection disconnected | Failing |
| Test dual-channel-replication sync- psync established after rdb load | Failing |
| Test dual-channel-replication-enabled enters wait_bgsave | Failing |
| Test dual-channel-replication-enabled replica enters handshake | Failing |
| Test dual-channel-replication-enabled replica is able to sync | Failing |
| Test dual-channel: primary tracking replica backlog refcount - start with backlog | Failing |
| Test dual-channel: primary tracking replica backlog refcount - start with empty backlog | Failing |
| Test replica unable to join dual channel replication sync after started | Failing |
| Test replica’s buffer limit reached | Failing |
| Toggle dual-channel-replication-enabled: no start | Failing |
| Toggle dual-channel-replication-enabled: yes start | Failing |
| dual-channel replication reports rdb transfer bytes | Failing |
| dual-channel-replication fails when primary diskless disabled | Failing |
| dual-channel-replication with multiple replicas | Failing |
| dual-channel-replication: Primary COB growth with inactive replica | Failing |
Failover
0 / 12 in-scope passing (0.0%) · 1 out of scope
| Test | Status |
|---|---|
| failover aborts if target rejects sync request | Failing |
| failover command fails when sent to a replica | Failing |
| failover command fails with force without timeout | Failing |
| failover command fails with invalid host | Failing |
| failover command fails with invalid port | Failing |
| failover command fails with just force and timeout | Failing |
| failover command fails without connected replica | Failing |
| failover command to any replica works | Failing |
| failover command to specific replica works | Failing |
| failover to a replica with force works | Failing |
| failover with timeout aborts if replica never catches up | Failing |
| failovers can be aborted | Failing |
| setup replication for following tests | Out of scope |
Logging
0 / 7 passing (0.0%)
| Test | Status |
|---|---|
| Config hide-user-data-from-log is off | Failing |
| Config hide-user-data-from-log is on | Failing |
| Crash report generated on DEBUG SEGFAULT | Failing |
| Crash report generated on SIGABRT | Failing |
| Generate stacktrace on assertion | Failing |
| Server is able to generate a stack trace on selected systems | Failing |
| Stacktraces generated on SIGALRM | Failing |
Psync2-master-restart
0 / 4 passing (0.0%)
| Test | Status |
|---|---|
| PSYNC2: Full resync after Master restart when too many key expired | Failing |
| PSYNC2: Partial resync after Master restart using RDB aux fields when offset is 0 | Failing |
| PSYNC2: Partial resync after Master restart using RDB aux fields with data | Failing |
| PSYNC2: Partial resync after Master restart using RDB aux fields with expire | Failing |
Psync2-pingoff
0 / 6 passing (0.0%)
| Test | Status |
|---|---|
| Chained replicas disconnect when replica re-connect with the same master | Failing |
| Make the old master a replica of the new one and check conditions | Failing |
| PSYNC2 pingoff: pause replica and promote it | Failing |
| PSYNC2 pingoff: setup | Failing |
| PSYNC2 pingoff: write and wait replication | Failing |
| test various edge cases of repl topology changes with missing pings at the end | Failing |
Psync2-reg
0 / 4 passing (0.0%)
| Test | Status |
|---|---|
| PSYNC2 #3899 regression: kill chained replica | Failing |
| PSYNC2 #3899 regression: kill first replica | Failing |
| PSYNC2 #3899 regression: setup | Failing |
| PSYNC2 #3899 regression: verify consistency | Failing |
Psync2
0 / 11 passing (0.0%)
| Test | Status |
|---|---|
| PSYNC2: — CYCLE $cycle — | Failing |
| PSYNC2: — CYCLE 1 — | Failing |
| PSYNC2: Bring the master back again for next test | Failing |
| PSYNC2: Partial resync after restart using RDB aux fields | Failing |
| PSYNC2: Set #$slave_id to replicate from #$mid | Failing |
| PSYNC2: [NEW LAYOUT] Set #0 as master | Failing |
| PSYNC2: [NEW LAYOUT] Set #$master_id as master | Failing |
| PSYNC2: cluster is consistent after failover | Failing |
| PSYNC2: cluster is consistent after load (x = $x) | Failing |
| PSYNC2: generate load while killing replication links | Failing |
| PSYNC2: total sum of full synchronizations is exactly 4 | Failing |
Rdb
0 / 19 passing (0.0%)
| Test | Status |
|---|---|
| RDB encoding loading test | Failing |
| RDB future version loading, relaxed version check | Failing |
| RDB future version loading, strict version check | Failing |
| Server should not start if RDB file can’t be open | Failing |
| Server should not start if RDB is corrupted | Failing |
| Server started empty with empty RDB file | Failing |
| Server started empty with non-existing RDB file | Failing |
| Test FLUSHALL aborts bgsave | Failing |
| Test RDB load info | Failing |
| Test RDB stream encoding | Failing |
| Test RDB stream encoding - sanitize dump | Failing |
| Test child sending info | Failing |
| bgsave cancel aborts save | Failing |
| bgsave cancel schedulled request | Failing |
| bgsave resets the change counter | Failing |
| client freed during loading | Failing |
| failed bgsave prevents writes | Failing |
| script won’t load anymore if it’s in rdb | Failing |
| test old version rdb file | Failing |
Replica-redirect
0 / 9 passing (0.0%)
| Test | Status |
|---|---|
| CLIENT INFO | Failing |
| client paused during failover-in-progress | Failing |
| non-data access commands are not redirected | Failing |
| replica allow read command by default | Failing |
| replica allow read command in READONLY mode | Failing |
| replica redirect read and write command after CLIENT CAPA REDIRECT | Failing |
| replica reply READONLY error for write command by default | Failing |
| write command inside MULTI is QUEUED, EXEC should be REDIRECT | Failing |
| write command inside MULTI is REDIRECT, EXEC should be EXECABORT | Failing |
Replication-2
0 / 7 passing (0.0%)
| Test | Status |
|---|---|
| First server should have role slave after SLAVEOF | Failing |
| If min-slaves-to-write is honored, write is accepted | Failing |
| If min-slaves-to-write is honored, write is accepted (again) | Failing |
| MASTER and SLAVE dataset should be identical after complex ops | Failing |
| No write if min-slaves-max-lag is > of the slave lag | Failing |
| No write if min-slaves-to-write is < attached slaves | Failing |
| min-slaves-to-write is ignored by slaves | Failing |
Replication-3
0 / 7 passing (0.0%)
| Test | Status |
|---|---|
| First server should have role slave after SLAVEOF | Failing |
| MASTER and SLAVE consistency with expire | Failing |
| Master can replicate command longer than client-query-buffer-limit on replica | Failing |
| PFCOUNT doesn’t use expired key on readonly replica | Failing |
| PFCOUNT updates cache on readonly replica | Failing |
| Slave is able to evict keys created in writable slaves | Failing |
| Writable replica doesn’t return expired keys | Failing |
Replication-4
0 / 13 passing (0.0%)
| Test | Status |
|---|---|
| Data divergence can happen under default conditions | Failing |
| Data divergence is allowed on writable replicas | Failing |
| First server should have role slave after SLAVEOF | Failing |
| Replication of SPOP command – alsoPropagate() API | Failing |
| Replication of an expired key does not delete the expired key | Failing |
| Replication: commands with many arguments (issue #1221) | Failing |
| Test replication with parallel clients writing in different DBs | Failing |
| With min-slaves-to-write (1,3): master should be writable | Failing |
| With min-slaves-to-write (2,3): master should not be writable | Failing |
| With min-slaves-to-write function without no-write flag | Failing |
| With min-slaves-to-write: master not writable with lagged slave | Failing |
| With not enough good slaves, read in Lua script is still accepted | Failing |
| spopwithcount rewrite srem command | Failing |
Replication-buffer
0 / 14 passing (0.0%)
| Test | Status |
|---|---|
| All replicas share one global replication buffer dualchannel no | Failing |
| All replicas share one global replication buffer dualchannel yes | Failing |
| Partial resynchronization is successful even client-output-buffer-limit is less than repl-backlog-size. dualchannel no | Failing |
| Partial resynchronization is successful even client-output-buffer-limit is less than repl-backlog-size. dualchannel yes | Failing |
| Replica client-output-buffer size is limited to backlog_limit/16 when no replication data is pending. dualchannel no | Failing |
| Replica client-output-buffer size is limited to backlog_limit/16 when no replication data is pending. dualchannel yes | Failing |
| Replica could use replication buffer (beyond backlog config) for partial resynchronization dualchannel no | Failing |
| Replica could use replication buffer (beyond backlog config) for partial resynchronization dualchannel yes | Failing |
| Replication backlog memory will become smaller if disconnecting with replica dualchannel no | Failing |
| Replication backlog memory will become smaller if disconnecting with replica dualchannel yes | Failing |
| Replication backlog size can outgrow the backlog limit config dualchannel no | Failing |
| Replication backlog size can outgrow the backlog limit config dualchannel yes | Failing |
| Replication buffer will become smaller when no replica uses dualchannel no | Failing |
| Replication buffer will become smaller when no replica uses dualchannel yes | Failing |
Replication-psync
0 / 32 passing (0.0%)
| Test | Status |
|---|---|
| Detect write load to master | Failing |
| Slave should be able to synchronize with the master | Failing |
| Test replication partial resync: backlog expired (diskless: no, disabled, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: backlog expired (diskless: no, swapdb, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: backlog expired (diskless: yes, disabled, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: backlog expired (diskless: yes, disabled, dual-channel: yes, reconnect: 1) | Failing |
| Test replication partial resync: backlog expired (diskless: yes, swapdb, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: backlog expired (diskless: yes, swapdb, dual-channel: yes, reconnect: 1) | Failing |
| Test replication partial resync: no backlog (diskless: no, disabled, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: no backlog (diskless: no, swapdb, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: no backlog (diskless: yes, disabled, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: no backlog (diskless: yes, disabled, dual-channel: yes, reconnect: 1) | Failing |
| Test replication partial resync: no backlog (diskless: yes, swapdb, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: no backlog (diskless: yes, swapdb, dual-channel: yes, reconnect: 1) | Failing |
| Test replication partial resync: no reconnection, just sync (diskless: no, disabled, dual-channel: no, reconnect: 0) | Failing |
| Test replication partial resync: no reconnection, just sync (diskless: no, swapdb, dual-channel: no, reconnect: 0) | Failing |
| Test replication partial resync: no reconnection, just sync (diskless: yes, disabled, dual-channel: no, reconnect: 0) | Failing |
| Test replication partial resync: no reconnection, just sync (diskless: yes, disabled, dual-channel: yes, reconnect: 0) | Failing |
| Test replication partial resync: no reconnection, just sync (diskless: yes, swapdb, dual-channel: no, reconnect: 0) | Failing |
| Test replication partial resync: no reconnection, just sync (diskless: yes, swapdb, dual-channel: yes, reconnect: 0) | Failing |
| Test replication partial resync: ok after delay (diskless: no, disabled, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: ok after delay (diskless: no, swapdb, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: ok after delay (diskless: yes, disabled, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: ok after delay (diskless: yes, disabled, dual-channel: yes, reconnect: 1) | Failing |
| Test replication partial resync: ok after delay (diskless: yes, swapdb, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: ok after delay (diskless: yes, swapdb, dual-channel: yes, reconnect: 1) | Failing |
| Test replication partial resync: ok psync (diskless: no, disabled, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: ok psync (diskless: no, swapdb, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: ok psync (diskless: yes, disabled, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: ok psync (diskless: yes, disabled, dual-channel: yes, reconnect: 1) | Failing |
| Test replication partial resync: ok psync (diskless: yes, swapdb, dual-channel: no, reconnect: 1) | Failing |
| Test replication partial resync: ok psync (diskless: yes, swapdb, dual-channel: yes, reconnect: 1) | Failing |
Replication
0 / 67 passing (0.0%)
| Test | Status |
|---|---|
| BLMOVE (left, left) replication, list exists | Failing |
| BLMOVE (left, left) replication, when blocking against empty list | Failing |
| BLMOVE (left, right) replication, list exists | Failing |
| BLMOVE (left, right) replication, when blocking against empty list | Failing |
| BLMOVE (right, left) replication, list exists | Failing |
| BLMOVE (right, left) replication, when blocking against empty list | Failing |
| BLMOVE (right, right) replication, list exists | Failing |
| BLMOVE (right, right) replication, when blocking against empty list | Failing |
| BLPOP followed by role change, issue #2473 | Failing |
| BRPOPLPUSH replication, list exists | Failing |
| BRPOPLPUSH replication, when blocking against empty list | Failing |
| Blocked commands and configs during async-loading | Failing |
| Busy script during async loading | Failing |
| Connect multiple replicas at the same time (issue #141), master diskless=no, replica diskless=disabled dual-channel-replication-enabled=no | Failing |
| Connect multiple replicas at the same time (issue #141), master diskless=no, replica diskless=swapdb dual-channel-replication-enabled=no | Failing |
| Connect multiple replicas at the same time (issue #141), master diskless=yes, replica diskless=disabled dual-channel-replication-enabled=yes | Failing |
| Connect multiple replicas at the same time (issue #141), master diskless=yes, replica diskless=swapdb dual-channel-replication-enabled=yes | Failing |
| Discard cache master before loading transferred RDB when full sync with dual-channel-replication no | Failing |
| Discard cache master before loading transferred RDB when full sync with dual-channel-replication yes | Failing |
| Diskless load swapdb (async_loading): new database is exposed after swapping | Failing |
| Diskless load swapdb (async_loading): old database is exposed after async replication fails | Failing |
| Diskless load swapdb (async_loading): old database is exposed while async replication is in progress | Failing |
| Diskless load swapdb (async_loading): replica enter async_loading | Failing |
| Diskless load swapdb (different replid): new database is exposed after swapping dual-channel=yes | Failing |
| Diskless load swapdb (different replid): old database is exposed after replication fails dual-channel=no | Failing |
| Diskless load swapdb (different replid): replica enter loading dual-channel-replication-enabled=no | Failing |
| Don’t disconnect with replicas before loading transferred RDB when full sync with dual-channel-replication no | Failing |
| Don’t disconnect with replicas before loading transferred RDB when full sync with dual-channel-replication yes | Failing |
| FLUSHDB / FLUSHALL should replicate | Failing |
| GETSET replication | Failing |
| INCRBYFLOAT replication, should not remove expire | Failing |
| Kill rdb child process if its dumping RDB is not useful | Failing |
| Master stream is correctly processed while the replica has a script in -BUSY state | Failing |
| PSYNC with wrong offset should throw error | Failing |
| ROLE in master reports master with a slave | Failing |
| ROLE in slave reports slave in connected state | Failing |
| Replica keep the old data if RDB file save fails in disk-based replication | Failing |
| Replica output bytes metric | Failing |
| SET on the master should immediately propagate | Failing |
| SLAVEOF should start with link status “down” | Failing |
| Second server should have role master at first | Failing |
| Set instance A as slave of B | Failing |
| Slave enters handshake | Failing |
| Slave enters wait_bgsave | Failing |
| Slave is able to detect timeout during handshake | Failing |
| Sync should have transferred keys from master | Failing |
| Test replication with lazy expire | Failing |
| The link status should be up | Failing |
| The role should immediately be changed to “replica” | Failing |
| diskless all replicas drop during rdb pipe | Failing |
| diskless fast replicas drop during rdb pipe | Failing |
| diskless loading short read | Failing |
| diskless no replicas drop during rdb pipe | Failing |
| diskless replication child being killed is collected | Failing |
| diskless replication read pipe cleanup | Failing |
| diskless slow replicas drop during rdb pipe | Failing |
| diskless timeout replicas drop during rdb pipe | Failing |
| replica actually flushes db if use diskless load with flush-before-load dual-channel-replication-enabled=no | Failing |
| replica actually flushes db if use diskless load with flush-before-load dual-channel-replication-enabled=yes | Failing |
| replica can handle EINTR if use diskless load | Failing |
| replica do not write the reply to the replication link - PSYNC (_addReplyToBufferOrList) | Failing |
| replica do not write the reply to the replication link - PSYNC (addReplyDeferredLen) | Failing |
| replica do not write the reply to the replication link - SYNC (_addReplyToBufferOrList) | Failing |
| replica do not write the reply to the replication link - SYNC (addReplyDeferredLen) | Failing |
| replicaof right after disconnection | Failing |
| replication child dies when parent is killed - diskless: no dual-channel-replication-enabled: no | Failing |
| replication child dies when parent is killed - diskless: yes dual-channel-replication-enabled: yes | Failing |
Shutdown
0 / 6 passing (0.0%)
| Test | Status |
|---|---|
| Shutting down master waits for replica then aborted | Failing |
| Shutting down master waits for replica then fails | Failing |
| Shutting down master waits for replica timeout | Failing |
| Shutting down master waits for replica to catch up (shutdown) | Failing |
| Shutting down master waits for replica to catch up (sigterm) | Failing |
| Shutting down primary wait for replica after previous block | Failing |
Skip-rdb-checksum
0 / 1 passing (0.0%)
| Test | Status |
|---|---|
| Skip RDB checksum sync - tls, repl_diskless_sync, repl_diskless_load | Failing |
Valkey-benchmark
0 / 10 passing (0.0%)
| Test | Status |
|---|---|
| benchmark: arbitrary command | Failing |
| benchmark: clients idle mode should return error when reached maxclients limit | Failing |
| benchmark: connecting using URI set,get | Failing |
| benchmark: connecting using URI with authentication set,get | Failing |
| benchmark: full test suite | Failing |
| benchmark: keyspace length | Failing |
| benchmark: multi-thread set,get | Failing |
| benchmark: pipelined full set,get | Failing |
| benchmark: read last argument from stdin | Failing |
| benchmark: set,get | Failing |
Valkey-cli
0 / 24 passing (0.0%)
| Test | Status |
|---|---|
| Connecting as a replica | Failing |
| DUMP RESTORE with -X option | Failing |
| DUMP RESTORE with -x option | Failing |
| Dumping an RDB - functions only: $functions_only | Failing |
| Interactive CLI: $name | Failing |
| Interactive non-TTY CLI: $name | Failing |
| Non-interactive TTY CLI: $name | Failing |
| Non-interactive non-TTY CLI: $name | Failing |
| Options -X with illegal argument | Failing |
| Piping raw protocol | Failing |
| Scan mode | Failing |
| Valid Connection Scheme: redis:// | Failing |
| Valid Connection Scheme: rediss:// | Failing |
| Valid Connection Scheme: valkey:// | Failing |
| Valid Connection Scheme: valkeys:// | Failing |
| valkey-cli make sure selected db survives connection drops | Failing |
| valkey-cli pubsub mode when subscribing to the same channel | Failing |
| valkey-cli pubsub mode with multiple pattern channel subscriptions | Failing |
| valkey-cli pubsub mode with multiple shard channel subscriptions | Failing |
| valkey-cli pubsub mode with multiple standard channel subscriptions | Failing |
| valkey-cli pubsub mode with multiple subscription types | Failing |
| valkey-cli pubsub mode with single pattern channel subscription | Failing |
| valkey-cli pubsub mode with single shard channel subscription | Failing |
| valkey-cli pubsub mode with single standard channel subscription | Failing |