diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-01-21 22:40:55 +0100 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-01-21 22:40:55 +0100 |
| commit | 5d8dfe892a2ea89f706ee140c3bdcfd89fe03fda (patch) | |
| tree | 1acdfa5220cd13b7be43a2a01368e80d306473ca /examples/redis-unstable/tests/unit/moduleapi/zset.tcl | |
| parent | c7ab12bba64d9c20ccd79b132dac475f7bc3923e (diff) | |
| download | crep-5d8dfe892a2ea89f706ee140c3bdcfd89fe03fda.tar.gz | |
Add Redis source code for testing
Diffstat (limited to 'examples/redis-unstable/tests/unit/moduleapi/zset.tcl')
| -rw-r--r-- | examples/redis-unstable/tests/unit/moduleapi/zset.tcl | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/examples/redis-unstable/tests/unit/moduleapi/zset.tcl b/examples/redis-unstable/tests/unit/moduleapi/zset.tcl new file mode 100644 index 0000000..f2a324c --- /dev/null +++ b/examples/redis-unstable/tests/unit/moduleapi/zset.tcl @@ -0,0 +1,121 @@ +set testmodule [file normalize tests/modules/zset.so] + +start_server {tags {"modules external:skip"}} { + r module load $testmodule + + test {Module zset rem} { + r del k + r zadd k 100 hello 200 world + assert_equal 1 [r zset.rem k hello] + assert_equal 0 [r zset.rem k hello] + assert_equal 1 [r exists k] + # Check that removing the last element deletes the key + assert_equal 1 [r zset.rem k world] + assert_equal 0 [r exists k] + } + + test {Module zset add} { + r del k + # Check that failure does not create empty key + assert_error "ERR ZsetAdd failed" {r zset.add k nan hello} + assert_equal 0 [r exists k] + + r zset.add k 100 hello + assert_equal {hello 100} [r zrange k 0 -1 withscores] + } + + test {Module zset incrby} { + r del k + # Check that failure does not create empty key + assert_error "ERR ZsetIncrby failed" {r zset.incrby k hello nan} + assert_equal 0 [r exists k] + + r zset.incrby k hello 100 + assert_equal {hello 100} [r zrange k 0 -1 withscores] + } + + test {Module zset - KEYSIZES is updated as expected (like test at hash.tcl)} { + proc run_cmd_verify_hist {cmd expOutput {retries 1}} { + proc K {} {return [string map { "db0_distrib_zsets_items" "db0_ZSET" "# Keysizes" "" " " "" "\n" "" "\r" "" } [r info keysizes] ]} + uplevel 1 $cmd + wait_for_condition 50 $retries { + $expOutput eq [K] + } else { fail "Expected: \n`$expOutput`\n Actual:\n`[K]`.\nFailed after command: $cmd" } + } + + r select 0 + + #RedisModule_ZsetAdd, RedisModule_ZsetRem + run_cmd_verify_hist {r FLUSHALL} {} + run_cmd_verify_hist {r zset.add k 100 hello} {db0_ZSET:1=1} + run_cmd_verify_hist {r zset.add k 101 bye} {db0_ZSET:2=1} + run_cmd_verify_hist {r zset.rem k hello} {db0_ZSET:1=1} + run_cmd_verify_hist {r zset.rem k bye} {} + + #RM_ZsetIncrby + run_cmd_verify_hist {r FLUSHALL} {} + run_cmd_verify_hist {r zset.incrby k hello 100} {db0_ZSET:1=1} + run_cmd_verify_hist {r zset.incrby k hello 100} {db0_ZSET:1=1} + run_cmd_verify_hist {r zset.rem k hello} {} + + # Check lazy expire + r debug set-active-expire 0 + run_cmd_verify_hist {r zset.add k 100 hello} {db0_ZSET:1=1} + run_cmd_verify_hist {r pexpire k 2} {db0_ZSET:1=1} + run_cmd_verify_hist {after 5} {db0_ZSET:1=1} + r debug set-active-expire 1 + run_cmd_verify_hist {after 5} {} 50 + } + + test {Module zset DELALL functionality} { + # Clean up any existing keys + r flushall + + # Create some zsets and other types of keys + r zadd zset1 100 hello 200 world + r zadd zset2 300 foo 400 bar + r zadd zset3 500 baz + r set string1 "value1" + r hset hash1 field1 value1 + r lpush list1 item1 + + # Verify we have the expected keys + assert_equal 6 [r dbsize] + assert_equal 3 [llength [r keys zset*]] + + # Run zset.delall + set deleted [r zset.delall] + assert_equal 3 $deleted + + # Verify only zsets were deleted + assert_equal 3 [r dbsize] + assert_equal 0 [llength [r keys zset*]] + assert_equal 1 [r exists string1] + assert_equal 1 [r exists hash1] + assert_equal 1 [r exists list1] + + # Test with no zsets + set deleted [r zset.delall] + assert_equal 0 $deleted + assert_equal 3 [r dbsize] + } + + test {Module zset DELALL not in transaction} { + set repl [attach_to_replication_stream] + r zadd z1 1 e1 + r zadd z2 1 e1 + r zset.delall + assert_replication_stream $repl { + {select *} + {zadd z1 1 e1} + {zadd z2 1 e1} + {del z*} + {del z*} + } + close_replication_stream $repl + } {} {needs:repl} + + test "Unload the module - zset" { + assert_equal {OK} [r module unload zset] + } +} |
