Skip to content

Commit

Permalink
testsuite run the defrag latency test solo
Browse files Browse the repository at this point in the history
this test is time sensitive and it sometimes fail to pass below the
latency threshold, even on strong machines.

this test was the reson we're running just 2 parallel tests in the
github actions CI, revering this.
  • Loading branch information
oranagra committed Apr 16, 2020
1 parent 3519a5a commit b9fa42a
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 2 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
38 changes: 38 additions & 0 deletions tests/test_helper.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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 {
Expand All @@ -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"
Expand Down Expand Up @@ -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"
}
Expand Down
2 changes: 2 additions & 0 deletions tests/unit/memefficiency.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -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" {
Expand Down Expand Up @@ -328,3 +329,4 @@ start_server {tags {"defrag"}} {
} {1}
}
}
} ;# run_solo

0 comments on commit b9fa42a

Please sign in to comment.