Fixed run-time conflicts between gyp tests and other tests
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 4f8aad4..c57fad9 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -125,12 +125,11 @@
platforms_str = 'ci_platforms' if travis else 'platforms'
with open('tools/run_tests/tests.json') as f:
js = json.load(f)
- binaries = [tgt
- for tgt in js
- if tgt['language'] == test_lang and
- platform_string() in tgt[platforms_str] and
- not (travis and tgt['flaky'])]
- return binaries
+ return [tgt
+ for tgt in js
+ if tgt['language'] == test_lang and
+ platform_string() in tgt[platforms_str] and
+ not (travis and tgt['flaky'])]
class CLanguage(object):
@@ -144,7 +143,7 @@
out = []
binaries = get_c_tests(travis, self.test_lang)
for target in binaries:
- if config.build_config in tgt['exclude_configs']:
+ if config.build_config in target['exclude_configs']:
continue
if self.platform == 'windows':
binary = 'vsprojects/%s/%s.exe' % (
@@ -169,6 +168,9 @@
def build_steps(self):
return []
+ def makefile_name(self):
+ return 'Makefile'
+
def supports_multi_config(self):
return True
@@ -194,7 +196,7 @@
for binary in gyp_test_paths(travis, config)]
def pre_build_steps(self):
- return [['gyp', '--depth=.', 'grpc.gyp']]
+ return [['gyp', '--depth=.', '--suffix=-gyp', 'grpc.gyp']]
def make_targets(self):
return gyp_test_paths(False)
@@ -202,6 +204,9 @@
def build_steps(self):
return []
+ def makefile_name(self):
+ return 'Makefile-gyp'
+
def supports_multi_config(self):
return False
@@ -224,6 +229,9 @@
def build_steps(self):
return [['tools/run_tests/build_node.sh']]
+ def makefile_name(self):
+ return 'Makefile'
+
def supports_multi_config(self):
return False
@@ -246,6 +254,9 @@
def build_steps(self):
return [['tools/run_tests/build_php.sh']]
+ def makefile_name(self):
+ return 'Makefile'
+
def supports_multi_config(self):
return False
@@ -289,6 +300,9 @@
do_newline=True)
return commands
+ def makefile_name(self):
+ return 'Makefile'
+
def supports_multi_config(self):
return False
@@ -311,6 +325,9 @@
def build_steps(self):
return [['tools/run_tests/build_ruby.sh']]
+ def makefile_name(self):
+ return 'Makefile'
+
def supports_multi_config(self):
return False
@@ -353,6 +370,9 @@
else:
return [['tools/run_tests/build_csharp.sh']]
+ def makefile_name(self):
+ return 'Makefile'
+
def supports_multi_config(self):
return False
@@ -375,6 +395,9 @@
def build_steps(self):
return [['src/objective-c/tests/build_tests.sh']]
+ def makefile_name(self):
+ return 'Makefile'
+
def supports_multi_config(self):
return False
@@ -397,6 +420,9 @@
def build_steps(self):
return []
+ def makefile_name(self):
+ return 'Makefile'
+
def supports_multi_config(self):
return False
@@ -418,6 +444,9 @@
def build_steps(self):
return []
+ def makefile_name(self):
+ return 'Makefile'
+
def supports_multi_config(self):
return True
@@ -543,7 +572,7 @@
sys.exit(1)
if platform.system() == 'Windows':
- def make_jobspec(cfg, targets):
+ def make_jobspec(cfg, targets, makefile='Makefile'):
extra_args = []
# better do parallel compilation
extra_args.extend(["/m"])
@@ -557,23 +586,27 @@
shell=True, timeout_seconds=90*60)
for target in targets]
else:
- def make_jobspec(cfg, targets):
+ def make_jobspec(cfg, targets, makefile='Makefile'):
return [jobset.JobSpec([os.getenv('MAKE', 'make'),
+ '-f', makefile,
'-j', '%d' % (multiprocessing.cpu_count() + 1),
'EXTRA_DEFINES=GRPC_TEST_SLOWDOWN_MACHINE_FACTOR=%f' %
args.slowdown,
'CONFIG=%s' % cfg] + targets,
timeout_seconds=30*60)]
+make_targets = {}
+for l in languages:
+ makefile = l.makefile_name()
+ make_targets[makefile] = make_targets.get(makefile, set()).union(
+ set(l.make_targets()))
-make_targets = list(set(itertools.chain.from_iterable(
- l.make_targets() for l in languages)))
build_steps = list(set(
jobset.JobSpec(cmdline, environ={'CONFIG': cfg})
for cfg in build_configs
for l in languages
for cmdline in l.pre_build_steps()))
if make_targets:
- make_commands = itertools.chain.from_iterable(make_jobspec(cfg, make_targets) for cfg in build_configs)
+ make_commands = itertools.chain.from_iterable(make_jobspec(cfg, list(targets), makefile) for cfg in build_configs for (makefile, targets) in make_targets.iteritems())
build_steps.extend(set(make_commands))
build_steps.extend(set(
jobset.JobSpec(cmdline, environ={'CONFIG': cfg})