start_server {tags {"scan"}} { test "SCAN basic" { r flushdb r debug populate 1000 set cur 0 set keys {} while 1 { set res [r scan $cur] set cur [lindex $res 0] set k [lindex $res 1] lappend keys {*}$k if {$cur == 0} break } set keys [lsort -unique $keys] assert_equal 1000 [llength $keys] } test "SCAN COUNT" { r flushdb r debug populate 1000 set cur 0 set keys {} while 1 { set res [r scan $cur count 5] set cur [lindex $res 0] set k [lindex $res 1] lappend keys {*}$k if {$cur == 0} break } set keys [lsort -unique $keys] assert_equal 1000 [llength $keys] } test "SCAN MATCH" { r flushdb r debug populate 1000 set cur 0 set keys {} while 1 { set res [r scan $cur match "key:1??"] set cur [lindex $res 0] set k [lindex $res 1] lappend keys {*}$k if {$cur == 0} break } set keys [lsort -unique $keys] assert_equal 100 [llength $keys] } foreach enc {intset hashtable} { test "SSCAN with encoding $enc" { # Create the Set r del set if {$enc eq {intset}} { set prefix "" } else { set prefix "ele:" } set elements {} for {set j 0} {$j < 100} {incr j} { lappend elements ${prefix}${j} } r sadd set {*}$elements # Verify that the encoding matches. assert {[r object encoding set] eq $enc} # Test SSCAN set cur 0 set keys {} while 1 { set res [r sscan set $cur] set cur [lindex $res 0] set k [lindex $res 1] lappend keys {*}$k if {$cur == 0} break } set keys [lsort -unique $keys] assert_equal 100 [llength $keys] } } }