set ::all_tests {
unit/printver
+ unit/dump
unit/auth
unit/protocol
unit/basic
unit/sort
unit/expire
unit/other
- unit/cas
+ unit/multi
unit/quit
unit/aofrw
integration/replication
integration/replication-2
integration/replication-3
+ integration/replication-4
integration/aof
integration/rdb
+ integration/convert-zipmap-hash-on-load
unit/pubsub
unit/slowlog
unit/scripting
unit/maxmemory
unit/introspection
+ unit/limits
unit/obuf-limits
+ unit/bitops
}
# Index to the next test to run in the ::all_tests list.
set ::next_test 0
"--quiet Don't show individual tests."
"--single <unit> Just execute the specified unit (see next option)."
"--list-tests List all the available test units."
+ "--clients <num> Number of test clients (16)."
"--force-failure Force the execution of a test that always fails."
"--help Print this help screen."
} "\n"]
set ::client 1
set ::test_server_port $arg
incr j
+ } elseif {$opt eq {--clients}} {
+ set ::numclients $arg
+ incr j
} elseif {$opt eq {--help}} {
print_help_screen
exit 0
}
}
+# With the parallel test running multiple Redis instances at the same time
+# we need a fast enough computer, otherwise a lot of tests may generate
+# false positives.
+# If the computer is too slow we revert the sequetial test without any
+# parallelism, that is, clients == 1.
+proc is_a_slow_computer {} {
+ set start [clock milliseconds]
+ for {set j 0} {$j < 1000000} {incr j} {}
+ set elapsed [expr [clock milliseconds]-$start]
+ expr {$elapsed > 200}
+}
+
if {$::client} {
if {[catch { test_client_main $::test_server_port } err]} {
set estr "Executing test client: $err.\n$::errorInfo"
exit 1
}
} else {
+ if {[is_a_slow_computer]} {
+ puts "** SLOW COMPUTER ** Using a single client to avoid false positives."
+ set ::numclients 1
+ }
+
if {[catch { test_server_main } err]} {
if {[string length $err] > 0} {
# only display error when not generated by the test suite