mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
23325c135f
Summary of changes: 1. Rename `redisCommand->name` to `redisCommand->declared_name`, it is a const char * for native commands and SDS for module commands. 2. Store the [sub]command fullname in `redisCommand->fullname` (sds). 3. List subcommands in `ACL CAT` 4. List subcommands in `COMMAND LIST` 5. `moduleUnregisterCommands` now will also free the module subcommands. 6. RM_GetCurrentCommandName returns full command name Other changes: 1. Add `addReplyErrorArity` and `addReplyErrorExpireTime` 2. Remove `getFullCommandName` function that now is useless. 3. Some cleanups about `fullname` since now it is SDS. 4. Delete `populateSingleCommand` function from server.h that is useless. 5. Added tests to cover this change. 6. Add some module unload tests and fix the leaks 7. Make error messages uniform, make sure they always contain the full command name and that it's quoted. 7. Fixes some typos see the history in #9504, fixes #10124 Co-authored-by: Oran Agra <oran@redislabs.com> Co-authored-by: guybe7 <guy.benoish@redislabs.com>
56 lines
3.2 KiB
Tcl
56 lines
3.2 KiB
Tcl
set testmodule [file normalize tests/modules/keyspecs.so]
|
|
|
|
start_server {tags {"modules"}} {
|
|
r module load $testmodule
|
|
|
|
test "Module key specs: Legacy" {
|
|
set reply [lindex [r command info kspec.legacy] 0]
|
|
# Verify (first, last, step)
|
|
assert_equal [lindex $reply 3] 1
|
|
assert_equal [lindex $reply 4] 2
|
|
assert_equal [lindex $reply 5] 1
|
|
# Verify key-specs
|
|
set keyspecs [lindex $reply 8]
|
|
assert_equal [lindex $keyspecs 0] {flags {RO access} begin_search {type index spec {index 1}} find_keys {type range spec {lastkey 0 keystep 1 limit 0}}}
|
|
assert_equal [lindex $keyspecs 1] {flags {RW update} begin_search {type index spec {index 2}} find_keys {type range spec {lastkey 0 keystep 1 limit 0}}}
|
|
}
|
|
|
|
test "Module key specs: Complex specs, case 1" {
|
|
set reply [lindex [r command info kspec.complex1] 0]
|
|
# Verify (first, last, step)
|
|
assert_equal [lindex $reply 3] 1
|
|
assert_equal [lindex $reply 4] 1
|
|
assert_equal [lindex $reply 5] 1
|
|
# Verify key-specs
|
|
set keyspecs [lindex $reply 8]
|
|
assert_equal [lindex $keyspecs 0] {flags {} begin_search {type index spec {index 1}} find_keys {type range spec {lastkey 0 keystep 1 limit 0}}}
|
|
assert_equal [lindex $keyspecs 1] {flags {RW update} begin_search {type keyword spec {keyword STORE startfrom 2}} find_keys {type range spec {lastkey 0 keystep 1 limit 0}}}
|
|
assert_equal [lindex $keyspecs 2] {flags {RO access} begin_search {type keyword spec {keyword KEYS startfrom 2}} find_keys {type keynum spec {keynumidx 0 firstkey 1 keystep 1}}}
|
|
}
|
|
|
|
test "Module key specs: Complex specs, case 2" {
|
|
set reply [lindex [r command info kspec.complex2] 0]
|
|
# Verify (first, last, step)
|
|
assert_equal [lindex $reply 3] 1
|
|
assert_equal [lindex $reply 4] 2
|
|
assert_equal [lindex $reply 5] 1
|
|
# Verify key-specs
|
|
set keyspecs [lindex $reply 8]
|
|
assert_equal [lindex $keyspecs 0] {flags {RW update} begin_search {type keyword spec {keyword STORE startfrom 5}} find_keys {type range spec {lastkey 0 keystep 1 limit 0}}}
|
|
assert_equal [lindex $keyspecs 1] {flags {RO access} begin_search {type index spec {index 1}} find_keys {type range spec {lastkey 0 keystep 1 limit 0}}}
|
|
assert_equal [lindex $keyspecs 2] {flags {RO access} begin_search {type index spec {index 2}} find_keys {type range spec {lastkey 0 keystep 1 limit 0}}}
|
|
assert_equal [lindex $keyspecs 3] {flags {RW update} begin_search {type index spec {index 3}} find_keys {type keynum spec {keynumidx 0 firstkey 1 keystep 1}}}
|
|
assert_equal [lindex $keyspecs 4] {flags {RW update} begin_search {type keyword spec {keyword MOREKEYS startfrom 5}} find_keys {type range spec {lastkey -1 keystep 1 limit 0}}}
|
|
}
|
|
|
|
test "Module command list filtering" {
|
|
;# Note: we piggyback this tcl file to test the general functionality of command list filtering
|
|
set reply [r command list filterby module keyspecs]
|
|
assert_equal [lsort $reply] {kspec.complex1 kspec.complex2 kspec.legacy}
|
|
}
|
|
|
|
test "Unload the module - keyspecs" {
|
|
assert_equal {OK} [r module unload keyspecs]
|
|
}
|
|
}
|