mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
2e1bc942aa
This is an enhancement for INFO command, previously INFO only support one argument for different info section , if user want to get more categories information, either perform INFO all / default or calling INFO for multiple times. **Description of the feature** The goal of adding this feature is to let the user retrieve multiple categories via the INFO command, and still avoid emitting the same section twice. A use case for this is like Redis Sentinel, which periodically calling INFO command to refresh info from monitored Master/Slaves, only Server and Replication part categories are used for parsing information. If the INFO command can return just enough categories that client side needs, it can save a lot of time for client side parsing it as well as network bandwidth. **Implementation** To share code between redis, sentinel, and other users of INFO (DEBUG and modules), we have a new `genInfoSectionDict` function that returns a dict and some boolean flags (e.g. `all`) to the caller (built from user input). Sentinel is later purging unwanted sections from that, and then it is forwarded to the info `genRedisInfoString`. **Usage Examples** INFO Server Replication INFO CPU Memory INFO default commandstats Co-authored-by: Oran Agra <oran@redislabs.com>
63 lines
2.6 KiB
Tcl
63 lines
2.6 KiB
Tcl
start_server {tags {"info and its relative command"}} {
|
|
test "info command with at most one sub command" {
|
|
foreach arg {"" "all" "default" "everything"} {
|
|
if {$arg == ""} {
|
|
set info [r 0 info]
|
|
} else {
|
|
set info [r 0 info $arg]
|
|
}
|
|
|
|
assert { [string match "*redis_version*" $info] }
|
|
assert { [string match "*used_cpu_user*" $info] }
|
|
assert { ![string match "*sentinel_tilt*" $info] }
|
|
assert { [string match "*used_memory*" $info] }
|
|
if {$arg == "" || $arg == "default"} {
|
|
assert { ![string match "*rejected_calls*" $info] }
|
|
} else {
|
|
assert { [string match "*rejected_calls*" $info] }
|
|
}
|
|
}
|
|
}
|
|
|
|
test "info command with one sub-section" {
|
|
set info [r info cpu]
|
|
assert { [string match "*used_cpu_user*" $info] }
|
|
assert { ![string match "*sentinel_tilt*" $info] }
|
|
assert { ![string match "*used_memory*" $info] }
|
|
|
|
set info [r info sentinel]
|
|
assert { ![string match "*sentinel_tilt*" $info] }
|
|
assert { ![string match "*used_memory*" $info] }
|
|
|
|
set info [r info commandSTATS] ;# test case insensitive compare
|
|
assert { ![string match "*used_memory*" $info] }
|
|
assert { [string match "*rejected_calls*" $info] }
|
|
}
|
|
|
|
test "info command with multiple sub-sections" {
|
|
set info [r info cpu sentinel]
|
|
assert { [string match "*used_cpu_user*" $info] }
|
|
assert { ![string match "*sentinel_tilt*" $info] }
|
|
assert { ![string match "*master_repl_offset*" $info] }
|
|
|
|
set info [r info cpu all]
|
|
assert { [string match "*used_cpu_user*" $info] }
|
|
assert { ![string match "*sentinel_tilt*" $info] }
|
|
assert { [string match "*used_memory*" $info] }
|
|
assert { [string match "*master_repl_offset*" $info] }
|
|
assert { [string match "*rejected_calls*" $info] }
|
|
# check that we didn't get the same info twice
|
|
assert { ![string match "*used_cpu_user_children*used_cpu_user_children*" $info] }
|
|
|
|
set info [r info cpu default]
|
|
assert { [string match "*used_cpu_user*" $info] }
|
|
assert { ![string match "*sentinel_tilt*" $info] }
|
|
assert { [string match "*used_memory*" $info] }
|
|
assert { [string match "*master_repl_offset*" $info] }
|
|
assert { ![string match "*rejected_calls*" $info] }
|
|
# check that we didn't get the same info twice
|
|
assert { ![string match "*used_cpu_user_children*used_cpu_user_children*" $info] }
|
|
}
|
|
|
|
}
|