redict/tests/unit/moduleapi/zset.tcl
sundb ce5f4ea3a9
Delete empty key if fails after moduleCreateEmptyKey() in module (#12129)
When `RM_ZsetAdd()`/`RM_ZsetIncrby()`/`RM_StreamAdd()` fails, if a new key happens to 
be created using `moduleCreateEmptyKey()`, we should clean up the empty key.

## Test
1) Add new module commands(`zset.add` and `zset.incrby`) to cover  `RM_ZsetAdd()`/`RM_ZsetIncrby()`.
2) Add a large-memory test to cover `RM_StreamAdd()`.
2023-05-07 10:13:19 +03:00

41 lines
1.2 KiB
Tcl

set testmodule [file normalize tests/modules/zset.so]
start_server {tags {"modules"}} {
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 "Unload the module - zset" {
assert_equal {OK} [r module unload zset]
}
}