diff options
author | Binbin <binloveplay1314@qq.com> | 2023-04-18 21:14:26 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-18 16:14:26 +0300 |
commit | 20533cc1d7684e3ffc8c74bbd6725e4189de6939 (patch) | |
tree | d9b04973990a412024680d7648c915f4e7623bef | |
parent | 42c8c61813a8c3287b8acb3155473551a491aa2b (diff) | |
download | redis-20533cc1d7684e3ffc8c74bbd6725e4189de6939.tar.gz |
Tests: Do not save an RDB by default and add a SIGTERM default AOFRW test (#12064)
In order to speed up tests, avoid saving an RDB (mostly notable on shutdown),
except for tests that explicitly test the RDB mechanism
In addition, use `shutdown-on-sigterm force` to prevetn shutdown from failing
in case the server is in the middle of the initial AOFRW
Also a a test that checks that the `shutdown-on-sigterm default` is to refuse
shutdown if there's an initial AOFRW
Co-authored-by: Guy Benoish <guy.benoish@redislabs.com>
-rw-r--r-- | tests/assets/default.conf | 8 | ||||
-rw-r--r-- | tests/cluster/run.tcl | 1 | ||||
-rw-r--r-- | tests/integration/psync2-master-restart.tcl | 3 | ||||
-rw-r--r-- | tests/integration/psync2.tcl | 2 | ||||
-rw-r--r-- | tests/integration/rdb.tcl | 5 | ||||
-rw-r--r-- | tests/sentinel/run.tcl | 1 | ||||
-rw-r--r-- | tests/unit/introspection.tcl | 11 | ||||
-rw-r--r-- | tests/unit/moduleapi/misc.tcl | 2 | ||||
-rw-r--r-- | tests/unit/moduleapi/testrdb.tcl | 8 | ||||
-rw-r--r-- | tests/unit/shutdown.tcl | 30 |
10 files changed, 52 insertions, 19 deletions
diff --git a/tests/assets/default.conf b/tests/assets/default.conf index 4ae420790..de460cc08 100644 --- a/tests/assets/default.conf +++ b/tests/assets/default.conf @@ -13,8 +13,9 @@ databases 16 latency-monitor-threshold 1 repl-diskless-sync-delay 0 +# Turn off RDB by default (to speedup tests) # Note the infrastructure in server.tcl uses a dict, we can't provide several save directives -save 900 1 +save '' rdbcompression yes dbfilename dump.rdb @@ -30,4 +31,7 @@ enable-protected-configs yes enable-debug-command yes enable-module-command yes -propagation-error-behavior panic
\ No newline at end of file +propagation-error-behavior panic + +# Make sure shutdown doesn't fail if there's an initial AOFRW +shutdown-on-sigterm force diff --git a/tests/cluster/run.tcl b/tests/cluster/run.tcl index c81d8f39d..86c5f589b 100644 --- a/tests/cluster/run.tcl +++ b/tests/cluster/run.tcl @@ -17,6 +17,7 @@ proc main {} { "appendonly yes" "enable-protected-configs yes" "enable-debug-command yes" + "save ''" } run_tests cleanup diff --git a/tests/integration/psync2-master-restart.tcl b/tests/integration/psync2-master-restart.tcl index 03470bf81..e925aaab8 100644 --- a/tests/integration/psync2-master-restart.tcl +++ b/tests/integration/psync2-master-restart.tcl @@ -11,6 +11,9 @@ start_server {} { set sub_replica [srv -2 client] + # Make sure the server saves an RDB on shutdown + $master config set save "3600 1" + # Because we will test partial resync later, we don’t want a timeout to cause # the master-replica disconnect, then the extra reconnections will break the # sync_partial_ok stat test diff --git a/tests/integration/psync2.tcl b/tests/integration/psync2.tcl index a258f1b83..4abe059b1 100644 --- a/tests/integration/psync2.tcl +++ b/tests/integration/psync2.tcl @@ -355,6 +355,8 @@ start_server {} { set sync_partial [status $R($master_id) sync_partial_ok] set sync_partial_err [status $R($master_id) sync_partial_err] catch { + # Make sure the server saves an RDB on shutdown + $R($slave_id) config set save "900 1" $R($slave_id) config rewrite restart_server [expr {0-$slave_id}] true false set R($slave_id) [srv [expr {0-$slave_id}] client] diff --git a/tests/integration/rdb.tcl b/tests/integration/rdb.tcl index 2362ef079..cce21671f 100644 --- a/tests/integration/rdb.tcl +++ b/tests/integration/rdb.tcl @@ -173,7 +173,7 @@ start_server {} { } test {client freed during loading} { - start_server [list overrides [list key-load-delay 50 loading-process-events-interval-bytes 1024 rdbcompression no]] { + start_server [list overrides [list key-load-delay 50 loading-process-events-interval-bytes 1024 rdbcompression no save "900 1"]] { # create a big rdb that will take long to load. it is important # for keys to be big since the server processes events only once in 2mb. # 100mb of rdb, 100k keys will load in more than 5 seconds @@ -370,6 +370,9 @@ start_server [list overrides [list "dir" $server_path "dbfilename" "scriptbackup start_server {} { test "failed bgsave prevents writes" { + # Make sure the server saves an RDB on shutdown + r config set save "900 1" + r config set rdb-key-save-delay 10000000 populate 1000 r set x x diff --git a/tests/sentinel/run.tcl b/tests/sentinel/run.tcl index 98c4c118b..6d3db324d 100644 --- a/tests/sentinel/run.tcl +++ b/tests/sentinel/run.tcl @@ -22,6 +22,7 @@ proc main {} { spawn_instance redis $::redis_base_port $::instances_count { "enable-protected-configs yes" "enable-debug-command yes" + "save ''" } run_tests cleanup diff --git a/tests/unit/introspection.tcl b/tests/unit/introspection.tcl index 547172579..76d56ee65 100644 --- a/tests/unit/introspection.tcl +++ b/tests/unit/introspection.tcl @@ -362,18 +362,13 @@ start_server {tags {"introspection"}} { assert_match [r config get save] {save {100 100}} } - # First "save" keyword in default config file - start_server {config "default.conf"} { - assert_match [r config get save] {save {900 1}} - } - # First "save" keyword appends default from config file - start_server {config "default.conf" args {--save 100 100}} { + start_server {config "default.conf" overrides {save {900 1}} args {--save 100 100}} { assert_match [r config get save] {save {900 1 100 100}} } # Empty "save" keyword resets all - start_server {config "default.conf" args {--save {}}} { + start_server {config "default.conf" overrides {save {900 1}} args {--save {}}} { assert_match [r config get save] {save {}} } } {} {external:skip} @@ -789,7 +784,7 @@ start_server {config "minimal.conf" tags {"introspection external:skip"} overrid } test {config during loading} { - start_server [list overrides [list key-load-delay 50 loading-process-events-interval-bytes 1024 rdbcompression no]] { + start_server [list overrides [list key-load-delay 50 loading-process-events-interval-bytes 1024 rdbcompression no save "900 1"]] { # create a big rdb that will take long to load. it is important # for keys to be big since the server processes events only once in 2mb. # 100mb of rdb, 100k keys will load in more than 5 seconds diff --git a/tests/unit/moduleapi/misc.tcl b/tests/unit/moduleapi/misc.tcl index 6bf7b8c2a..9b0989149 100644 --- a/tests/unit/moduleapi/misc.tcl +++ b/tests/unit/moduleapi/misc.tcl @@ -1,6 +1,6 @@ set testmodule [file normalize tests/modules/misc.so] -start_server {tags {"modules"}} { +start_server {overrides {save {900 1}} tags {"modules"}} { r module load $testmodule test {test RM_Call} { diff --git a/tests/unit/moduleapi/testrdb.tcl b/tests/unit/moduleapi/testrdb.tcl index 2545a8ad2..ae3036f70 100644 --- a/tests/unit/moduleapi/testrdb.tcl +++ b/tests/unit/moduleapi/testrdb.tcl @@ -61,13 +61,13 @@ tags "modules" { # 7 == 0111 - use aux_save2 before and after key space with data test {modules are able to persist globals before and after} { set server_path [tmpdir "server.module-testrdb"] - start_server [list overrides [list loadmodule "$testmodule $test_case" "dir" $server_path] keep_persistence true] { + start_server [list overrides [list loadmodule "$testmodule $test_case" "dir" $server_path "save" "900 1"] keep_persistence true] { r testrdb.set.before global1 r testrdb.set.after global2 assert_equal "global1" [r testrdb.get.before] assert_equal "global2" [r testrdb.get.after] } - start_server [list overrides [list loadmodule "$testmodule $test_case" "dir" $server_path]] { + start_server [list overrides [list loadmodule "$testmodule $test_case" "dir" $server_path "save" "900 1"]] { assert_equal "global1" [r testrdb.get.before] assert_equal "global2" [r testrdb.get.after] } @@ -80,11 +80,11 @@ tags "modules" { # 5 == 0101 - use aux_save2 after key space with data test {modules are able to persist globals just after} { set server_path [tmpdir "server.module-testrdb"] - start_server [list overrides [list loadmodule "$testmodule $test_case" "dir" $server_path] keep_persistence true] { + start_server [list overrides [list loadmodule "$testmodule $test_case" "dir" $server_path "save" "900 1"] keep_persistence true] { r testrdb.set.after global2 assert_equal "global2" [r testrdb.get.after] } - start_server [list overrides [list loadmodule "$testmodule $test_case" "dir" $server_path]] { + start_server [list overrides [list loadmodule "$testmodule $test_case" "dir" $server_path "save" "900 1"]] { assert_equal "global2" [r testrdb.get.after] } } diff --git a/tests/unit/shutdown.tcl b/tests/unit/shutdown.tcl index b419c83a1..7504851a1 100644 --- a/tests/unit/shutdown.tcl +++ b/tests/unit/shutdown.tcl @@ -30,7 +30,7 @@ start_server {tags {"shutdown external:skip"}} { } } -start_server {tags {"shutdown external:skip"}} { +start_server {tags {"shutdown external:skip"} overrides {save {900 1}}} { test {SHUTDOWN ABORT can cancel SIGTERM} { r debug pause-cron 1 set pid [s process_id] @@ -48,7 +48,7 @@ start_server {tags {"shutdown external:skip"}} { } # It will cost 2s (20 * 100ms) to dump rdb r config set rdb-key-save-delay 100000 - + set pid [s process_id] set temp_rdb [file join [lindex [r config get dir] 1] temp-${pid}.rdb] @@ -72,7 +72,7 @@ start_server {tags {"shutdown external:skip"}} { } } -start_server {tags {"shutdown external:skip"}} { +start_server {tags {"shutdown external:skip"} overrides {save {900 1}}} { set pid [s process_id] set dump_rdb [file join [lindex [r config get dir] 1] dump.rdb] @@ -107,3 +107,27 @@ start_server {tags {"shutdown external:skip"}} { exec rm -r $dump_rdb } } + + +start_server {tags {"shutdown external:skip"} overrides {appendonly no}} { + test {SHUTDOWN SIGTERM will abort if there's an initial AOFRW - default} { + r config set shutdown-on-sigterm default + r config set rdb-key-save-delay 10000000 + for {set i 0} {$i < 10} {incr i} { + r set $i $i + } + + r config set appendonly yes + wait_for_condition 1000 10 { + [s aof_rewrite_in_progress] eq 1 + } else { + fail "aof rewrite did not start in time" + } + + set pid [s process_id] + exec kill -SIGTERM $pid + wait_for_log_messages 0 {"*Writing initial AOF, can't exit*"} 0 1000 10 + + r config set shutdown-on-sigterm force + } +} |