mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 00:28:26 -05:00
eb6accad40
PR #9320 introduces initialization order changes. Now cluster is initialized after modules. This changes causes a crash if the module uses RM_Call inside the load function on cluster mode (the code will try to access `server.cluster` which at this point is NULL). To solve it, separate cluster initialization into 2 phases: 1. Structure initialization that happened before the modules initialization 2. Listener initialization that happened after. Test was added to verify the fix.
42 lines
1.1 KiB
Tcl
42 lines
1.1 KiB
Tcl
set testmodule [file normalize tests/modules/basics.so]
|
|
|
|
start_server {tags {"modules"}} {
|
|
r module load $testmodule
|
|
|
|
test {test module api basics} {
|
|
r test.basics
|
|
} {ALL TESTS PASSED}
|
|
|
|
test {test rm_call auto mode} {
|
|
r hello 2
|
|
set reply [r test.rmcallautomode]
|
|
assert_equal [lindex $reply 0] f1
|
|
assert_equal [lindex $reply 1] v1
|
|
assert_equal [lindex $reply 2] f2
|
|
assert_equal [lindex $reply 3] v2
|
|
r hello 3
|
|
set reply [r test.rmcallautomode]
|
|
assert_equal [dict get $reply f1] v1
|
|
assert_equal [dict get $reply f2] v2
|
|
}
|
|
|
|
test {test get resp} {
|
|
r hello 2
|
|
set reply [r test.getresp]
|
|
assert_equal $reply 2
|
|
r hello 3
|
|
set reply [r test.getresp]
|
|
assert_equal $reply 3
|
|
}
|
|
|
|
test "Unload the module - test" {
|
|
assert_equal {OK} [r module unload test]
|
|
}
|
|
}
|
|
|
|
start_server {tags {"modules external:skip"} overrides {enable-module-command no}} {
|
|
test {module command disabled} {
|
|
assert_error "ERR *MODULE command not allowed*" {r module load $testmodule}
|
|
}
|
|
}
|