|
|
|
@ -29,13 +29,23 @@ class ValgrindConfig(object): |
|
|
|
|
return ['valgrind', binary] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# SanConfig: compile with CONFIG=config, filter out incompatible binaries |
|
|
|
|
class SanConfig(object): |
|
|
|
|
def __init__(self, config): |
|
|
|
|
self.build_config = config |
|
|
|
|
|
|
|
|
|
def run_command(self, binary): |
|
|
|
|
if '_ssl_' in binary: |
|
|
|
|
return None |
|
|
|
|
return [binary] |
|
|
|
|
|
|
|
|
|
# different configurations we can run under |
|
|
|
|
_CONFIGS = { |
|
|
|
|
'dbg': SimpleConfig('dbg'), |
|
|
|
|
'opt': SimpleConfig('opt'), |
|
|
|
|
'tsan': SimpleConfig('tsan'), |
|
|
|
|
'msan': SimpleConfig('msan'), |
|
|
|
|
'asan': SimpleConfig('asan'), |
|
|
|
|
'tsan': SanConfig('tsan'), |
|
|
|
|
'msan': SanConfig('msan'), |
|
|
|
|
'asan': SanConfig('asan'), |
|
|
|
|
'gcov': SimpleConfig('gcov'), |
|
|
|
|
'valgrind': ValgrindConfig('dbg'), |
|
|
|
|
} |
|
|
|
@ -81,14 +91,15 @@ def _build_and_run(check_cancelled): |
|
|
|
|
return 1 |
|
|
|
|
|
|
|
|
|
# run all the tests |
|
|
|
|
if not jobset.run(( |
|
|
|
|
config.run_command(x) |
|
|
|
|
for config in run_configs |
|
|
|
|
for filt in filters |
|
|
|
|
for x in itertools.chain.from_iterable(itertools.repeat( |
|
|
|
|
glob.glob('bins/%s/%s_test' % ( |
|
|
|
|
config.build_config, filt)), |
|
|
|
|
runs_per_test))), check_cancelled): |
|
|
|
|
if not jobset.run(itertools.ifilter( |
|
|
|
|
lambda x: x is not None, ( |
|
|
|
|
config.run_command(x) |
|
|
|
|
for config in run_configs |
|
|
|
|
for filt in filters |
|
|
|
|
for x in itertools.chain.from_iterable(itertools.repeat( |
|
|
|
|
glob.glob('bins/%s/%s_test' % ( |
|
|
|
|
config.build_config, filt)), |
|
|
|
|
runs_per_test)))), check_cancelled): |
|
|
|
|
return 2 |
|
|
|
|
|
|
|
|
|
return 0 |
|
|
|
|