summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalvatore Sanfilippo <antirez@gmail.com>2020-04-17 10:43:21 +0200
committerGitHub <noreply@github.com>2020-04-17 10:43:21 +0200
commita71a6b5acfeb9243af2f3ee6e05866ebdf682cc0 (patch)
treee01f39d700b772bcd2d6187519b8849909fbbc36
parentac441c741379dd4002f664c81047e8412cb793d0 (diff)
parentb9fa42a197702c0da0baa2edb184d984dffa2933 (diff)
downloadredis-a71a6b5acfeb9243af2f3ee6e05866ebdf682cc0.tar.gz
Merge pull request #7103 from oranagra/run_solo_test
testsuite run the defrag latency test solo
-rw-r--r--.github/workflows/ci.yml4
-rw-r--r--tests/test_helper.tcl38
-rw-r--r--tests/unit/memefficiency.tcl2
3 files changed, 42 insertions, 2 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3a81d1a08..551fb2d91 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -12,9 +12,9 @@ jobs:
- name: test
run: |
sudo apt-get install tcl8.5
- ./runtest --clients 2 --verbose
+ ./runtest --verbose
- name: module api test
- run: ./runtest-moduleapi --clients 2 --verbose
+ run: ./runtest-moduleapi --verbose
build-ubuntu-old:
runs-on: ubuntu-16.04
diff --git a/tests/test_helper.tcl b/tests/test_helper.tcl
index d80cb6907..11a804bdc 100644
--- a/tests/test_helper.tcl
+++ b/tests/test_helper.tcl
@@ -82,6 +82,7 @@ set ::skiptests {}
set ::allowtags {}
set ::only_tests {}
set ::single_tests {}
+set ::run_solo_tests {}
set ::skip_till ""
set ::external 0; # If "1" this means, we are running against external instance
set ::file ""; # If set, runs only the tests in this comma separated list
@@ -112,6 +113,11 @@ proc execute_tests name {
send_data_packet $::test_server_fd done "$name"
}
+proc execute_code {name code} {
+ eval $code
+ send_data_packet $::test_server_fd done "$name"
+}
+
# Setup a list to hold a stack of server configs. When calls to start_server
# are nested, use "srv 0 pid" to get the pid of the inner server. To access
# outer servers, use "srv -1 pid" etcetera.
@@ -188,6 +194,18 @@ proc s {args} {
status [srv $level "client"] [lindex $args 0]
}
+# Test wrapped into run_solo are sent back from the client to the
+# test server, so that the test server will send them again to
+# clients once the clients are idle.
+proc run_solo {name code} {
+ if {$::numclients == 1 || $::loop || $::external} {
+ # run_solo is not supported in these scenarios, just run the code.
+ eval $code
+ return
+ }
+ send_data_packet $::test_server_fd run_solo [list $name $code]
+}
+
proc cleanup {} {
if {$::dont_clean} {
return
@@ -337,6 +355,8 @@ proc read_from_test_client fd {
} elseif {$status eq {server-killed}} {
set ::active_servers [lsearch -all -inline -not -exact $::active_servers $data]
set ::active_clients_task($fd) "(KILLED SERVER) pid:$data"
+ } elseif {$status eq {run_solo}} {
+ lappend ::run_solo_tests $data
} else {
if {!$::quiet} {
puts "\[$status\]: $data"
@@ -369,6 +389,13 @@ proc force_kill_all_servers {} {
}
}
+proc lpop {listVar {count 1}} {
+ upvar 1 $listVar l
+ set ele [lindex $l 0]
+ set l [lrange $l 1 end]
+ set ele
+}
+
# A new client is idle. Remove it from the list of active clients and
# if there are still test units to run, launch them.
proc signal_idle_client fd {
@@ -389,6 +416,14 @@ proc signal_idle_client fd {
if {$::loop && $::next_test == [llength $::all_tests]} {
set ::next_test 0
}
+ } elseif {[llength $::run_solo_tests] != 0 && [llength $::active_clients] == 0} {
+ if {!$::quiet} {
+ puts [colorstr bold-white "Testing solo test"]
+ set ::active_clients_task($fd) "ASSIGNED: $fd solo test"
+ }
+ set ::clients_start_time($fd) [clock seconds]
+ send_data_packet $fd run_code [lpop ::run_solo_tests]
+ lappend ::active_clients $fd
} else {
lappend ::idle_clients $fd
set ::active_clients_task($fd) "SLEEPING, no more units to assign"
@@ -433,6 +468,9 @@ proc test_client_main server_port {
foreach {cmd data} $payload break
if {$cmd eq {run}} {
execute_tests $data
+ } elseif {$cmd eq {run_code}} {
+ foreach {name code} $data break
+ execute_code $name $code
} else {
error "Unknown test client command: $cmd"
}
diff --git a/tests/unit/memefficiency.tcl b/tests/unit/memefficiency.tcl
index 06b0e07d7..777693fdf 100644
--- a/tests/unit/memefficiency.tcl
+++ b/tests/unit/memefficiency.tcl
@@ -36,6 +36,7 @@ start_server {tags {"memefficiency"}} {
}
}
+run_solo {defrag} {
start_server {tags {"defrag"}} {
if {[string match {*jemalloc*} [s mem_allocator]]} {
test "Active defrag" {
@@ -328,3 +329,4 @@ start_server {tags {"defrag"}} {
} {1}
}
}
+} ;# run_solo