aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/run_tests/run_tests.py
diff options
context:
space:
mode:
authorGravatar Craig Tiller <craig.tiller@gmail.com>2015-03-05 11:29:50 -0800
committerGravatar Craig Tiller <craig.tiller@gmail.com>2015-03-05 11:29:50 -0800
commit1e90c8cffce4f5985ba7ae76131e16069ffa0d14 (patch)
tree4b43c49bce3859771ad0db82dcede169e93c7c7c /tools/run_tests/run_tests.py
parent639ca900ee6f44ea0f8d3bae38c0c735a212e0b6 (diff)
parent2decfa2f7caf67e6129c2e02a62b8feb2d20e3bd (diff)
Merge pull request #954 from murgatroid99/node_binding_cleanup
Cleaned up some unnecessary verbosity in Node's binding.gyp
Diffstat (limited to 'tools/run_tests/run_tests.py')
-rwxr-xr-xtools/run_tests/run_tests.py55
1 files changed, 52 insertions, 3 deletions
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 9d45693cd4..0f4544a5c6 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -51,11 +51,14 @@ os.chdir(ROOT)
# SimpleConfig: just compile with CONFIG=config, and run the binary to test
class SimpleConfig(object):
- def __init__(self, config, environ={}):
+ def __init__(self, config, environ=None):
+ if environ is None:
+ environ = {}
self.build_config = config
self.maxjobs = 2 * multiprocessing.cpu_count()
self.allow_hashing = (config != 'gcov')
self.environ = environ
+ self.environ['CONFIG'] = config
def job_spec(self, cmdline, hash_targets):
"""Construct a jobset.JobSpec for a test under this config
@@ -78,7 +81,9 @@ class SimpleConfig(object):
# ValgrindConfig: compile with some CONFIG=config, but use valgrind to run
class ValgrindConfig(object):
- def __init__(self, config, tool, args=[]):
+ def __init__(self, config, tool, args=None):
+ if args is None:
+ args = []
self.build_config = config
self.tool = tool
self.args = args
@@ -115,6 +120,12 @@ class CLanguage(object):
def build_steps(self):
return []
+ def supports_multi_config(self):
+ return True
+
+ def __str__(self):
+ return self.make_target
+
class NodeLanguage(object):
@@ -127,6 +138,12 @@ class NodeLanguage(object):
def build_steps(self):
return [['tools/run_tests/build_node.sh']]
+ def supports_multi_config(self):
+ return False
+
+ def __str__(self):
+ return 'node'
+
class PhpLanguage(object):
@@ -139,6 +156,12 @@ class PhpLanguage(object):
def build_steps(self):
return [['tools/run_tests/build_php.sh']]
+ def supports_multi_config(self):
+ return False
+
+ def __str__(self):
+ return 'php'
+
class PythonLanguage(object):
@@ -156,6 +179,12 @@ class PythonLanguage(object):
def build_steps(self):
return [['tools/run_tests/build_python.sh']]
+ def supports_multi_config(self):
+ return False
+
+ def __str__(self):
+ return 'python'
+
class RubyLanguage(object):
def test_specs(self, config, travis):
@@ -167,6 +196,12 @@ class RubyLanguage(object):
def build_steps(self):
return [['tools/run_tests/build_ruby.sh']]
+ def supports_multi_config(self):
+ return False
+
+ def __str__(self):
+ return 'ruby'
+
class CSharpLanguage(object):
def test_specs(self, config, travis):
@@ -178,6 +213,12 @@ class CSharpLanguage(object):
def build_steps(self):
return [['tools/run_tests/build_csharp.sh']]
+ def supports_multi_config(self):
+ return False
+
+ def __str__(self):
+ return 'csharp'
+
# different configurations we can run under
_CONFIGS = {
'dbg': SimpleConfig('dbg'),
@@ -242,6 +283,13 @@ build_configs = set(cfg.build_config for cfg in run_configs)
make_targets = []
languages = set(_LANGUAGES[l] for l in args.language)
+
+if len(build_configs) > 1:
+ for language in languages:
+ if not language.supports_multi_config():
+ print language, 'does not support multiple build configurations'
+ sys.exit(1)
+
build_steps = [jobset.JobSpec(['make',
'-j', '%d' % (multiprocessing.cpu_count() + 1),
'EXTRA_DEFINES=GRPC_TEST_SLOWDOWN_MACHINE_FACTOR=%f' % args.slowdown,
@@ -249,7 +297,8 @@ build_steps = [jobset.JobSpec(['make',
itertools.chain.from_iterable(
l.make_targets() for l in languages))))
for cfg in build_configs] + list(set(
- jobset.JobSpec(cmdline)
+ jobset.JobSpec(cmdline, environ={'CONFIG': cfg})
+ for cfg in build_configs
for l in languages
for cmdline in l.build_steps()))
one_run = set(