summaryrefslogtreecommitdiff
path: root/tests/support/server.tcl
diff options
context:
space:
mode:
authorOran Agra <oran@redislabs.com>2020-08-31 11:05:30 +0300
committerOran Agra <oran@redislabs.com>2020-09-06 09:59:19 +0300
commit677d14c2137ab50fa25c8163d20b14bc563261c7 (patch)
tree155f2e367d3a4fec475565e75ef13d6e59907f2a /tests/support/server.tcl
parente3e69c25fd05b608f5ea8d612bc0e377922a6115 (diff)
downloadredis-677d14c2137ab50fa25c8163d20b14bc563261c7.tar.gz
test infra - improve test skipping ability
- skip full units - skip a single test (not just a list of tests) - when skipping tag, skip spinning up servers, not just the tests - skip tags when running against an external server too - allow using multiple tags (split them)
Diffstat (limited to 'tests/support/server.tcl')
-rw-r--r--tests/support/server.tcl69
1 files changed, 49 insertions, 20 deletions
diff --git a/tests/support/server.tcl b/tests/support/server.tcl
index 6775b125a..8ab8cf66a 100644
--- a/tests/support/server.tcl
+++ b/tests/support/server.tcl
@@ -160,7 +160,19 @@ proc server_is_up {host port retrynum} {
# doesn't really belong here, but highly coupled to code in start_server
proc tags {tags code} {
+ # If we 'tags' contain multiple tags, quoted and seperated by spaces,
+ # we want to get rid of the quotes in order to have a proper list
+ set tags [string map { \" "" } $tags]
set ::tags [concat $::tags $tags]
+ # We skip unwanted tags
+ foreach tag $::denytags {
+ if {[lsearch $::tags $tag] >= 0} {
+ incr ::num_aborted
+ send_data_packet $::test_server_fd ignore "Tag: $tag"
+ set ::tags [lrange $::tags 0 end-[llength $tags]]
+ return
+ }
+ }
uplevel 1 $code
set ::tags [lrange $::tags 0 end-[llength $tags]]
}
@@ -226,24 +238,6 @@ proc wait_server_started {config_file stdout pid} {
}
proc start_server {options {code undefined}} {
- # If we are running against an external server, we just push the
- # host/port pair in the stack the first time
- if {$::external} {
- if {[llength $::servers] == 0} {
- set srv {}
- dict set srv "host" $::host
- dict set srv "port" $::port
- set client [redis $::host $::port 0 $::tls]
- dict set srv "client" $client
- $client select 9
-
- # append the server to the stack
- lappend ::servers $srv
- }
- uplevel 1 $code
- return
- }
-
# setup defaults
set baseconfig "default.conf"
set overrides {}
@@ -260,8 +254,10 @@ proc start_server {options {code undefined}} {
set overrides $value
}
"tags" {
- set tags $value
- set ::tags [concat $::tags $value]
+ # If we 'tags' contain multiple tags, quoted and seperated by spaces,
+ # we want to get rid of the quotes in order to have a proper list
+ set tags [string map { \" "" } $value]
+ set ::tags [concat $::tags $tags]
}
"keep_persistence" {
set keep_persistence $value
@@ -272,6 +268,39 @@ proc start_server {options {code undefined}} {
}
}
+ # We skip unwanted tags
+ foreach tag $::denytags {
+ if {[lsearch $::tags $tag] >= 0} {
+ incr ::num_aborted
+ send_data_packet $::test_server_fd ignore "Tag: $tag"
+ set ::tags [lrange $::tags 0 end-[llength $tags]]
+ return
+ }
+ }
+
+ # If we are running against an external server, we just push the
+ # host/port pair in the stack the first time
+ if {$::external} {
+ if {[llength $::servers] == 0} {
+ set srv {}
+ dict set srv "host" $::host
+ dict set srv "port" $::port
+ set client [redis $::host $::port 0 $::tls]
+ dict set srv "client" $client
+ $client select 9
+
+ set config {}
+ dict set config "port" $::port
+ dict set srv "config" $config
+
+ # append the server to the stack
+ lappend ::servers $srv
+ }
+ uplevel 1 $code
+ set ::tags [lrange $::tags 0 end-[llength $tags]]
+ return
+ }
+
set data [split [exec cat "tests/assets/$baseconfig"] "\n"]
set config {}
if {$::tls} {