summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBinbin <binloveplay1314@qq.com>2021-12-03 00:18:18 +0800
committerGitHub <noreply@github.com>2021-12-02 18:18:18 +0200
commite57a4db5d753e427317075071b0992fd965168b3 (patch)
treee8d4b3b7dae9d0507d09c3fb17d558da9ad6f4d3
parente3c0ea1cb4ca80c57184a8894586e8fc3c646da1 (diff)
downloadredis-e57a4db5d753e427317075071b0992fd965168b3.tar.gz
Fix CONFIG SET test failures in MacOS/FreeBSD (#9881)
After the introduction of `Multiparam config set` in #9748, there are two tests cases failed. ``` [exception]: Executing test client: ERR Config set failed - Failed to set current oom_score_adj. Check server logs.. ERR Config set failed - Failed to set current oom_score_adj. Check server logs. ``` `CONFIG sanity` test failed on the `config set oom-score-adj-values` which is a "special" config that does not catch no-op changes. And then it will update `oom-score-adj` which not supported in MacOs. We solve it by adding `oom-score*` to the `skip_configs` list. ``` *** [err]: CONFIG SET rollback on apply error in tests/unit/introspection.tcl Expected an error but nothing was caught ``` `CONFIG SET rollback on apply error` test failed on the `config set port $used_port`. In theory, it should throw the error `Unable to listen on this port*`. But it failed on MacOs. We solve it by adding `-myaddr 127.0.0.1` to the socket call.
-rw-r--r--tests/unit/introspection.tcl19
1 files changed, 11 insertions, 8 deletions
diff --git a/tests/unit/introspection.tcl b/tests/unit/introspection.tcl
index fc729e98b..714c1b04d 100644
--- a/tests/unit/introspection.tcl
+++ b/tests/unit/introspection.tcl
@@ -199,6 +199,8 @@ start_server {tags {"introspection"}} {
set-proc-title
cluster-config-file
cluster-port
+ oom-score-adj
+ oom-score-adj-values
}
if {!$::tls} {
@@ -337,9 +339,9 @@ start_server {tags {"introspection"}} {
# actual "apply" of the setting. This will validate that after an "apply"
# failure we rollback to the previous values.
proc dummy_accept {chan addr port} {}
-
+
set some_configs {maxmemory 10000001 port 0 client-query-buffer-limit 10m}
-
+
# On Linux we also set the oom score adj which has an apply function. This is
# used to verify that even successful applies are rolled back if some other
# config's apply fails.
@@ -361,30 +363,31 @@ start_server {tags {"introspection"}} {
foreach c [dict keys $some_configs] {
lappend backups $c [lindex [r config get $c] 1]
}
-
- set used_port [expr ([dict get $backups port]+1)%65536]
+ set used_port [find_available_port $::baseport $::portcount]
dict set some_configs port $used_port
-
# Run a dummy server on used_port so we know we can't configure redis to
# use it. It's ok for this to fail because that means used_port is invalid
# anyway
- catch {socket -server dummy_accept $used_port}
+ catch {socket -server dummy_accept -myaddr 127.0.0.1 $used_port} e
+ if {$::verbose} { puts "dummy_accept: $e" }
+
# Try to listen on the used port, pass some more configs to make sure the
# returned failure message is for the first bad config and everything is rolled back.
assert_error "ERR Config set failed - Unable to listen on this port*" {
eval "r config set $some_configs"
}
+
# Make sure we reverted back to previous configs
dict for {conf val} $backups {
assert_equal [lindex [r config get $conf] 1] $val
}
-
+
if {$oom_adj_avail} {
assert_equal [get_oom_score_adj] $read_oom_adj
}
-
+
# Make sure we can still communicate with the server (on the original port)
set r1 [redis_client]
assert_equal [$r1 ping] "PONG"