Skip to content
Snippets Groups Projects
Commit 2aa4d649 authored by Craig Tiller's avatar Craig Tiller
Browse files

Helgrind support for run_tests.py

Also allow maxjobs to be tweaked based upon which configs are being run,
to prevent memory starvation.
parent e55e1155
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,7 @@ import watch_dirs
class SimpleConfig(object):
def __init__(self, config):
self.build_config = config
self.maxjobs = 32 * multiprocessing.cpu_count()
def run_command(self, binary):
return [binary]
......@@ -22,11 +23,13 @@ class SimpleConfig(object):
# ValgrindConfig: compile with some CONFIG=config, but use valgrind to run
class ValgrindConfig(object):
def __init__(self, config):
def __init__(self, config, tool):
self.build_config = config
self.tool = tool
self.maxjobs = 4 * multiprocessing.cpu_count()
def run_command(self, binary):
return ['valgrind', binary]
return ['valgrind', binary, '--tool=%s' % self.tool]
# different configurations we can run under
......@@ -37,7 +40,8 @@ _CONFIGS = {
'msan': SimpleConfig('msan'),
'asan': SimpleConfig('asan'),
'gcov': SimpleConfig('gcov'),
'valgrind': ValgrindConfig('dbg'),
'memcheck': ValgrindConfig('dbg', 'memcheck'),
'helgrind': ValgrindConfig('dbg', 'helgrind')
}
......@@ -81,14 +85,18 @@ 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,
maxjobs=min(c.maxjobs for c in run_configs)):
return 2
return 0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment