mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 08:38:27 -05:00
205 lines
6.0 KiB
Tcl
205 lines
6.0 KiB
Tcl
|
set testmodule [file normalize tests/modules/postnotifications.so]
|
||
|
|
||
|
tags "modules" {
|
||
|
start_server [list overrides [list loadmodule "$testmodule"]] {
|
||
|
|
||
|
test {Test write on post notification callback} {
|
||
|
set repl [attach_to_replication_stream]
|
||
|
|
||
|
r set string_x 1
|
||
|
assert_equal {1} [r get string_changed{string_x}]
|
||
|
assert_equal {1} [r get string_total]
|
||
|
|
||
|
r set string_x 2
|
||
|
assert_equal {2} [r get string_changed{string_x}]
|
||
|
assert_equal {2} [r get string_total]
|
||
|
|
||
|
assert_replication_stream $repl {
|
||
|
{multi}
|
||
|
{select *}
|
||
|
{set string_x 1}
|
||
|
{incr string_changed{string_x}}
|
||
|
{incr string_total}
|
||
|
{exec}
|
||
|
{multi}
|
||
|
{set string_x 2}
|
||
|
{incr string_changed{string_x}}
|
||
|
{incr string_total}
|
||
|
{exec}
|
||
|
}
|
||
|
close_replication_stream $repl
|
||
|
}
|
||
|
|
||
|
test {Test write on post notification callback from module thread} {
|
||
|
r flushall
|
||
|
set repl [attach_to_replication_stream]
|
||
|
|
||
|
assert_equal {OK} [r postnotification.async_set]
|
||
|
assert_equal {1} [r get string_changed{string_x}]
|
||
|
assert_equal {1} [r get string_total]
|
||
|
|
||
|
assert_replication_stream $repl {
|
||
|
{multi}
|
||
|
{select *}
|
||
|
{set string_x 1}
|
||
|
{incr string_changed{string_x}}
|
||
|
{incr string_total}
|
||
|
{exec}
|
||
|
}
|
||
|
close_replication_stream $repl
|
||
|
}
|
||
|
|
||
|
test {Test active expire} {
|
||
|
r flushall
|
||
|
set repl [attach_to_replication_stream]
|
||
|
|
||
|
r set x 1
|
||
|
r pexpire x 10
|
||
|
|
||
|
wait_for_condition 100 50 {
|
||
|
[r keys expired] == {expired}
|
||
|
} else {
|
||
|
puts [r keys *]
|
||
|
fail "Failed waiting for x to expired"
|
||
|
}
|
||
|
|
||
|
assert_replication_stream $repl {
|
||
|
{select *}
|
||
|
{set x 1}
|
||
|
{pexpireat x *}
|
||
|
{multi}
|
||
|
{del x}
|
||
|
{incr expired}
|
||
|
{exec}
|
||
|
}
|
||
|
close_replication_stream $repl
|
||
|
}
|
||
|
|
||
|
test {Test lazy expire} {
|
||
|
r flushall
|
||
|
r DEBUG SET-ACTIVE-EXPIRE 0
|
||
|
set repl [attach_to_replication_stream]
|
||
|
|
||
|
r set x 1
|
||
|
r pexpire x 1
|
||
|
after 10
|
||
|
assert_equal {} [r get x]
|
||
|
|
||
|
assert_replication_stream $repl {
|
||
|
{select *}
|
||
|
{set x 1}
|
||
|
{pexpireat x *}
|
||
|
{multi}
|
||
|
{del x}
|
||
|
{incr expired}
|
||
|
{exec}
|
||
|
}
|
||
|
close_replication_stream $repl
|
||
|
r DEBUG SET-ACTIVE-EXPIRE 1
|
||
|
} {OK} {needs:debug}
|
||
|
|
||
|
test {Test lazy expire inside post job notification} {
|
||
|
r flushall
|
||
|
r DEBUG SET-ACTIVE-EXPIRE 0
|
||
|
set repl [attach_to_replication_stream]
|
||
|
|
||
|
r set x 1
|
||
|
r pexpire x 1
|
||
|
after 10
|
||
|
assert_equal {OK} [r set read_x 1]
|
||
|
|
||
|
assert_replication_stream $repl {
|
||
|
{select *}
|
||
|
{set x 1}
|
||
|
{pexpireat x *}
|
||
|
{multi}
|
||
|
{set read_x 1}
|
||
|
{del x}
|
||
|
{incr expired}
|
||
|
{exec}
|
||
|
}
|
||
|
close_replication_stream $repl
|
||
|
r DEBUG SET-ACTIVE-EXPIRE 1
|
||
|
} {OK} {needs:debug}
|
||
|
|
||
|
test {Test nested keyspace notification} {
|
||
|
r flushall
|
||
|
set repl [attach_to_replication_stream]
|
||
|
|
||
|
assert_equal {OK} [r set write_sync_write_sync_x 1]
|
||
|
|
||
|
assert_replication_stream $repl {
|
||
|
{multi}
|
||
|
{select *}
|
||
|
{set x 1}
|
||
|
{set write_sync_x 1}
|
||
|
{set write_sync_write_sync_x 1}
|
||
|
{exec}
|
||
|
}
|
||
|
close_replication_stream $repl
|
||
|
}
|
||
|
|
||
|
test {Test eviction} {
|
||
|
r flushall
|
||
|
set repl [attach_to_replication_stream]
|
||
|
r set x 1
|
||
|
r config set maxmemory-policy allkeys-random
|
||
|
r config set maxmemory 1
|
||
|
|
||
|
assert_error {OOM *} {r set y 1}
|
||
|
|
||
|
assert_replication_stream $repl {
|
||
|
{select *}
|
||
|
{set x 1}
|
||
|
{multi}
|
||
|
{del x}
|
||
|
{incr evicted}
|
||
|
{exec}
|
||
|
}
|
||
|
close_replication_stream $repl
|
||
|
} {} {needs:config-maxmemory}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
set testmodule2 [file normalize tests/modules/keyspace_events.so]
|
||
|
|
||
|
tags "modules" {
|
||
|
start_server [list overrides [list loadmodule "$testmodule"]] {
|
||
|
r module load $testmodule2
|
||
|
test {Test write on post notification callback} {
|
||
|
set repl [attach_to_replication_stream]
|
||
|
|
||
|
r set string_x 1
|
||
|
assert_equal {1} [r get string_changed{string_x}]
|
||
|
assert_equal {1} [r get string_total]
|
||
|
|
||
|
r set string_x 2
|
||
|
assert_equal {2} [r get string_changed{string_x}]
|
||
|
assert_equal {2} [r get string_total]
|
||
|
|
||
|
r set string1_x 1
|
||
|
assert_equal {1} [r get string_changed{string1_x}]
|
||
|
assert_equal {3} [r get string_total]
|
||
|
|
||
|
assert_replication_stream $repl {
|
||
|
{multi}
|
||
|
{select *}
|
||
|
{set string_x 1}
|
||
|
{incr string_changed{string_x}}
|
||
|
{incr string_total}
|
||
|
{exec}
|
||
|
{multi}
|
||
|
{set string_x 2}
|
||
|
{incr string_changed{string_x}}
|
||
|
{incr string_total}
|
||
|
{exec}
|
||
|
{multi}
|
||
|
{set string1_x 1}
|
||
|
{incr string_changed{string1_x}}
|
||
|
{incr string_total}
|
||
|
{exec}
|
||
|
}
|
||
|
close_replication_stream $repl
|
||
|
}
|
||
|
}
|
||
|
}
|