Progress on poll() based poller
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 30a398e..106f6be 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -149,58 +149,60 @@
def test_specs(self):
out = []
binaries = get_c_tests(self.args.travis, self.test_lang)
- for target in binaries:
- if self.config.build_config in target['exclude_configs']:
- continue
- if self.platform == 'windows':
- binary = 'vsprojects/%s%s/%s.exe' % (
- 'x64/' if self.args.arch == 'x64' else '',
- _MSBUILD_CONFIG[self.config.build_config],
- target['name'])
- else:
- binary = 'bins/%s/%s' % (self.config.build_config, target['name'])
- env = {}
- shortname_ext = ''
- if 'env' in target:
- tenv = target['env']
- env.update(tenv)
- shortname_ext += ' '
- shortname_ext += ' '.join('%s=%s' % (key, tenv[key]) for key in sorted(tenv.keys()))
- env['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH'] = (
- _ROOT + '/src/core/tsi/test_creds/ca.pem')
- if os.path.isfile(binary):
- if 'gtest' in target and target['gtest']:
- # here we parse the output of --gtest_list_tests to build up a
- # complete list of the tests contained in a binary
- # for each test, we then add a job to run, filtering for just that
- # test
- with open(os.devnull, 'w') as fnull:
- tests = subprocess.check_output([binary, '--gtest_list_tests'],
- stderr=fnull)
- base = None
- for line in tests.split('\n'):
- i = line.find('#')
- if i >= 0: line = line[:i]
- if not line: continue
- if line[0] != ' ':
- base = line.strip()
- else:
- assert base is not None
- assert line[1] == ' '
- test = base + line.strip()
- cmdline = [binary] + ['--gtest_filter=%s' % test]
- out.append(self.config.job_spec(cmdline, [binary],
- shortname='%s:%s %s' % (binary, test, shortname_ext),
- cpu_cost=target['cpu_cost'],
- environ=env))
+ POLLING_STRATEGIES = {
+ 'windows': ['all'],
+ 'mac': ['all'],
+ 'posix': ['all'],
+ 'linux': ['poll', 'legacy']
+ }
+ for polling_strategy in POLLING_STRATEGIES[self.platform]:
+ env={'GRPC_DEFAULT_SSL_ROOTS_FILE_PATH':
+ _ROOT + '/src/core/tsi/test_creds/ca.pem',
+ 'GRPC_POLLING_STRATEGY': polling_strategy}
+ shortname_ext = '' if polling_strategy=='all' else ' polling=%s' % polling_strategy
+ for target in binaries:
+ if self.config.build_config in target['exclude_configs']:
+ continue
+ if self.platform == 'windows':
+ binary = 'vsprojects/%s%s/%s.exe' % (
+ 'x64/' if self.args.arch == 'x64' else '',
+ _MSBUILD_CONFIG[self.config.build_config],
+ target['name'])
else:
- cmdline = [binary] + target['args']
- out.append(self.config.job_spec(cmdline, [binary],
- shortname=' '.join(cmdline) + shortname_ext,
- cpu_cost=target['cpu_cost'],
- environ=env))
- elif self.args.regex == '.*' or self.platform == 'windows':
- print '\nWARNING: binary not found, skipping', binary
+ binary = 'bins/%s/%s' % (self.config.build_config, target['name'])
+ if os.path.isfile(binary):
+ if 'gtest' in target and target['gtest']:
+ # here we parse the output of --gtest_list_tests to build up a
+ # complete list of the tests contained in a binary
+ # for each test, we then add a job to run, filtering for just that
+ # test
+ with open(os.devnull, 'w') as fnull:
+ tests = subprocess.check_output([binary, '--gtest_list_tests'],
+ stderr=fnull)
+ base = None
+ for line in tests.split('\n'):
+ i = line.find('#')
+ if i >= 0: line = line[:i]
+ if not line: continue
+ if line[0] != ' ':
+ base = line.strip()
+ else:
+ assert base is not None
+ assert line[1] == ' '
+ test = base + line.strip()
+ cmdline = [binary] + ['--gtest_filter=%s' % test]
+ out.append(self.config.job_spec(cmdline, [binary],
+ shortname='%s:%s' % (binary, test, shortname_ext),
+ cpu_cost=target['cpu_cost'],
+ environ=env))
+ else:
+ cmdline = [binary] + target['args']
+ out.append(self.config.job_spec(cmdline, [binary],
+ shortname=' '.join(cmdline) + shortname_ext,
+ cpu_cost=target['cpu_cost'],
+ environ=env))
+ elif self.args.regex == '.*' or self.platform == 'windows':
+ print '\nWARNING: binary not found, skipping', binary
return sorted(out)
def make_targets(self):