summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/tests/unit/introspection-2.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/redis-unstable/tests/unit/introspection-2.tcl')
-rw-r--r--examples/redis-unstable/tests/unit/introspection-2.tcl281
1 files changed, 0 insertions, 281 deletions
diff --git a/examples/redis-unstable/tests/unit/introspection-2.tcl b/examples/redis-unstable/tests/unit/introspection-2.tcl
deleted file mode 100644
index 1e98fdb..0000000
--- a/examples/redis-unstable/tests/unit/introspection-2.tcl
+++ /dev/null
@@ -1,281 +0,0 @@
-proc cmdstat {cmd} {
- return [cmdrstat $cmd r]
-}
-
-proc getlru {key} {
- set objinfo [r debug object $key]
- foreach info $objinfo {
- set kvinfo [split $info ":"]
- if {[string compare [lindex $kvinfo 0] "lru"] == 0} {
- return [lindex $kvinfo 1]
- }
- }
- fail "Can't get LRU info with DEBUG OBJECT"
-}
-
-start_server {tags {"introspection"}} {
- test {The microsecond part of the TIME command will not overflow} {
- set now [r time]
- set microseconds [lindex $now 1]
- assert_morethan $microseconds 0
- assert_lessthan $microseconds 1000000
- }
-
- test {TTL, TYPE and EXISTS do not alter the last access time of a key} {
- r set foo bar
- after 3000
- r ttl foo
- r type foo
- r exists foo
- assert {[r object idletime foo] >= 2}
- }
-
- test {TOUCH alters the last access time of a key} {
- r set foo bar
- after 3000
- r touch foo
- assert {[r object idletime foo] < 2}
- }
-
- test {Operations in no-touch mode do not alter the last access time of a key} {
- r set foo bar
- r client no-touch on
- set oldlru [getlru foo]
- after 1100
- r get foo
- set newlru [getlru foo]
- assert_equal $newlru $oldlru
- r client no-touch off
- r get foo
- set newlru [getlru foo]
- assert_morethan $newlru $oldlru
- } {} {needs:debug}
-
- test {Operations in no-touch mode TOUCH alters the last access time of a key} {
- r set foo bar
- r client no-touch on
- set oldlru [getlru foo]
- after 1100
- r touch foo
- set newlru [getlru foo]
- assert_morethan $newlru $oldlru
- } {} {needs:debug}
-
- test {Operations in no-touch mode TOUCH from script alters the last access time of a key} {
- r set foo bar
- r client no-touch on
- set oldlru [getlru foo]
- after 1100
- assert_equal {1} [r eval "return redis.call('touch', 'foo')" 0]
- set newlru [getlru foo]
- assert_morethan $newlru $oldlru
- } {} {needs:debug}
-
- test {TOUCH returns the number of existing keys specified} {
- r flushdb
- r set key1{t} 1
- r set key2{t} 2
- r touch key0{t} key1{t} key2{t} key3{t}
- } 2
-
- test {command stats for GEOADD} {
- r config resetstat
- r GEOADD foo 0 0 bar
- assert_match {*calls=1,*} [cmdstat geoadd]
- assert_match {} [cmdstat zadd]
- } {} {needs:config-resetstat}
-
- test {errors stats for GEOADD} {
- r config resetstat
- # make sure geo command will failed
- r set foo 1
- assert_error {WRONGTYPE Operation against a key holding the wrong kind of value*} {r GEOADD foo 0 0 bar}
- assert_match {*calls=1*,rejected_calls=0,failed_calls=1*} [cmdstat geoadd]
- assert_match {} [cmdstat zadd]
- } {} {needs:config-resetstat}
-
- test {command stats for EXPIRE} {
- r config resetstat
- r SET foo bar
- r EXPIRE foo 0
- assert_match {*calls=1,*} [cmdstat expire]
- assert_match {} [cmdstat del]
- } {} {needs:config-resetstat}
-
- test {command stats for BRPOP} {
- r config resetstat
- r LPUSH list foo
- r BRPOP list 0
- assert_match {*calls=1,*} [cmdstat brpop]
- assert_match {} [cmdstat rpop]
- } {} {needs:config-resetstat}
-
- test {command stats for MULTI} {
- r config resetstat
- r MULTI
- r set foo{t} bar
- r GEOADD foo2{t} 0 0 bar
- r EXPIRE foo2{t} 0
- r EXEC
- assert_match {*calls=1,*} [cmdstat multi]
- assert_match {*calls=1,*} [cmdstat exec]
- assert_match {*calls=1,*} [cmdstat set]
- assert_match {*calls=1,*} [cmdstat expire]
- assert_match {*calls=1,*} [cmdstat geoadd]
- } {} {needs:config-resetstat}
-
- test {command stats for scripts} {
- r config resetstat
- r set mykey myval
- r eval {
- redis.call('set', KEYS[1], 0)
- redis.call('expire', KEYS[1], 0)
- redis.call('geoadd', KEYS[1], 0, 0, "bar")
- } 1 mykey
- assert_match {*calls=1,*} [cmdstat eval]
- assert_match {*calls=2,*} [cmdstat set]
- assert_match {*calls=1,*} [cmdstat expire]
- assert_match {*calls=1,*} [cmdstat geoadd]
- } {} {needs:config-resetstat}
-
- test {COMMAND COUNT get total number of Redis commands} {
- assert_morethan [r command count] 0
- }
-
- test {COMMAND GETKEYS GET} {
- assert_equal {key} [r command getkeys get key]
- }
-
- test {COMMAND GETKEYSANDFLAGS} {
- assert_equal {{k1 {OW update}}} [r command getkeysandflags set k1 v1]
- assert_equal {{k1 {OW update}} {k2 {OW update}}} [r command getkeysandflags mset k1 v1 k2 v2]
- assert_equal {{k1 {RW access delete}} {k2 {RW insert}}} [r command getkeysandflags LMOVE k1 k2 left right]
- assert_equal {{k1 {RO access}} {k2 {OW update}}} [r command getkeysandflags sort k1 store k2]
- assert_equal {{k1 {RW update}}} [r command getkeysandflags set k1 v1 IFEQ v1]
- assert_equal {{k1 {RW access update}}} [r command getkeysandflags set k1 v1 GET]
- assert_equal {{k1 {RM delete}}} [r command getkeysandflags delex k1]
- assert_equal {{k1 {RW delete}}} [r command getkeysandflags delex k1 ifeq v1]
- }
-
- test {COMMAND GETKEYSANDFLAGS invalid args} {
- assert_error "ERR Invalid arguments*" {r command getkeysandflags ZINTERSTORE zz 1443677133621497600 asdf}
- }
-
- test {COMMAND GETKEYSANDFLAGS MSETEX} {
- assert_equal {{k1 {OW update}}} [r command getkeysandflags msetex 1 k1 v1 ex 10]
- assert_equal {{k1 {OW update}} {k2 {OW update}}} [r command getkeysandflags msetex 2 k1 v1 k2 v2 ex 10]
- assert_equal {{k1 {OW update}} {k2 {OW update}} {k3 {OW update}}} [r command getkeysandflags msetex 3 k1 v1 k2 v2 k3 v3 ex 10]
- assert_equal {{k1 {OW update}} {k2 {OW update}}} [r command getkeysandflags msetex 2 k1 v1 k2 v2 keepttl]
- assert_equal {{k1 {OW update}} {k2 {OW update}}} [r command getkeysandflags msetex 2 k1 v1 k2 v2 ex 10 nx]
- }
-
- test {COMMAND GETKEYS MEMORY USAGE} {
- assert_equal {key} [r command getkeys memory usage key]
- }
-
- test {COMMAND GETKEYS XGROUP} {
- assert_equal {key} [r command getkeys xgroup create key groupname $]
- }
-
- test {COMMAND GETKEYS EVAL with keys} {
- assert_equal {key} [r command getkeys eval "return 1" 1 key]
- }
-
- test {COMMAND GETKEYS EVAL without keys} {
- assert_equal {} [r command getkeys eval "return 1" 0]
- }
-
- test {COMMAND GETKEYS LCS} {
- assert_equal {key1 key2} [r command getkeys lcs key1 key2]
- }
-
- test {COMMAND GETKEYS MORE THAN 256 KEYS} {
- set all_keys [list]
- set numkeys 260
- for {set i 1} {$i <= $numkeys} {incr i} {
- lappend all_keys "key$i"
- }
- set all_keys_with_target [linsert $all_keys 0 target]
- # we are using ZUNIONSTORE command since in order to reproduce allocation of a new buffer in getKeysPrepareResult
- # when numkeys in result > 0
- # we need a command that the final number of keys is not known in the first call to getKeysPrepareResult
- # before the fix in that case data of old buffer was not copied to the new result buffer
- # causing all previous keys (numkeys) data to be uninitialize
- assert_equal $all_keys_with_target [r command getkeys ZUNIONSTORE target $numkeys {*}$all_keys]
- }
-
- test "COMMAND LIST syntax error" {
- assert_error "ERR syntax error*" {r command list bad_arg}
- assert_error "ERR syntax error*" {r command list filterby bad_arg}
- assert_error "ERR syntax error*" {r command list filterby bad_arg bad_arg2}
- }
-
- test "COMMAND LIST WITHOUT FILTERBY" {
- set commands [r command list]
- assert_not_equal [lsearch $commands "set"] -1
- assert_not_equal [lsearch $commands "client|list"] -1
- }
-
- test "COMMAND LIST FILTERBY ACLCAT against non existing category" {
- assert_equal {} [r command list filterby aclcat non_existing_category]
- }
-
- test "COMMAND LIST FILTERBY ACLCAT - list all commands/subcommands" {
- set commands [r command list filterby aclcat scripting]
- assert_not_equal [lsearch $commands "eval"] -1
- assert_not_equal [lsearch $commands "script|kill"] -1
-
- # Negative check, a command that should not be here
- assert_equal [lsearch $commands "set"] -1
- }
-
- test "COMMAND LIST FILTERBY PATTERN - list all commands/subcommands" {
- # Exact command match.
- assert_equal {set} [r command list filterby pattern set]
- assert_equal {get} [r command list filterby pattern get]
-
- # Return the parent command and all the subcommands below it.
- set commands [r command list filterby pattern config*]
- assert_not_equal [lsearch $commands "config"] -1
- assert_not_equal [lsearch $commands "config|get"] -1
-
- # We can filter subcommands under a parent command.
- set commands [r command list filterby pattern config|*re*]
- assert_not_equal [lsearch $commands "config|resetstat"] -1
- assert_not_equal [lsearch $commands "config|rewrite"] -1
-
- # We can filter subcommands across parent commands.
- set commands [r command list filterby pattern cl*help]
- assert_not_equal [lsearch $commands "client|help"] -1
- assert_not_equal [lsearch $commands "cluster|help"] -1
-
- # Negative check, command that doesn't exist.
- assert_equal {} [r command list filterby pattern non_exists]
- assert_equal {} [r command list filterby pattern non_exists*]
- }
-
- test "COMMAND LIST FILTERBY MODULE against non existing module" {
- # This should be empty, the real one is in subcommands.tcl
- assert_equal {} [r command list filterby module non_existing_module]
- }
-
- test {COMMAND INFO of invalid subcommands} {
- assert_equal {{}} [r command info get|key]
- assert_equal {{}} [r command info config|get|key]
- }
-
- foreach cmd {SET GET MSET BITFIELD LMOVE LPOP BLPOP PING MEMORY MEMORY|USAGE RENAME GEORADIUS_RO} {
- test "$cmd command will not be marked with movablekeys" {
- set info [lindex [r command info $cmd] 0]
- assert_no_match {*movablekeys*} [lindex $info 2]
- }
- }
-
- foreach cmd {ZUNIONSTORE XREAD EVAL SORT SORT_RO MIGRATE GEORADIUS} {
- test "$cmd command is marked with movablekeys" {
- set info [lindex [r command info $cmd] 0]
- assert_match {*movablekeys*} [lindex $info 2]
- }
- }
-
-}