summaryrefslogtreecommitdiff
path: root/tests/unit/tracking.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/tracking.tcl')
-rw-r--r--tests/unit/tracking.tcl22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/unit/tracking.tcl b/tests/unit/tracking.tcl
index 43bb5f864..0332fa726 100644
--- a/tests/unit/tracking.tcl
+++ b/tests/unit/tracking.tcl
@@ -107,5 +107,27 @@ start_server {tags {"tracking"}} {
assert {$keys eq {mykey}}
}
+ test {Tracking gets notification on tracking table key eviction} {
+ r CLIENT TRACKING off
+ r CLIENT TRACKING on REDIRECT $redir NOLOOP
+ r MSET key1 1 key2 2
+ # Let the server track the two keys for us
+ r MGET key1 key2
+ # Force the eviction of all the keys but one:
+ r config set tracking-table-max-keys 1
+ # Note that we may have other keys in the table for this client,
+ # since we disabled/enabled tracking multiple time with the same
+ # ID, and tracking does not do ID cleanups for performance reasons.
+ # So we check that eventually we'll receive one or the other key,
+ # otherwise the test will die for timeout.
+ while 1 {
+ set keys [lindex [$rd1 read] 2]
+ if {$keys eq {key1} || $keys eq {key2}} break
+ }
+ # We should receive an expire notification for one of
+ # the two keys (only one must remain)
+ assert {$keys eq {key1} || $keys eq {key2}}
+ }
+
$rd1 close
}