Merge pull request #2840 from ctiller/reduce-mac-load

Reduce mac CI load
pull/2829/head^2
Nicolas Noble 9 years ago
commit 4720f323f5
  1. 2
      templates/tools/run_tests/tests.json.template
  2. 28
      test/core/end2end/gen_build_json.py
  3. 2
      tools/buildgen/plugins/expand_bin_attrs.py
  4. 6
      tools/run_tests/run_tests.py
  5. 3991
      tools/run_tests/tests.json

@ -5,8 +5,8 @@ import json
${json.dumps([{"name": tgt.name, ${json.dumps([{"name": tgt.name,
"language": tgt.language, "language": tgt.language,
"platforms": tgt.platforms, "platforms": tgt.platforms,
"ci_platforms": tgt.ci_platforms,
"flaky": tgt.flaky} "flaky": tgt.flaky}
for tgt in targets for tgt in targets
if tgt.get('run', True) and tgt.build == 'test'], if tgt.get('run', True) and tgt.build == 'test'],
sort_keys=True, indent=2)} sort_keys=True, indent=2)}

@ -36,27 +36,27 @@ import simplejson
import collections import collections
FixtureOptions = collections.namedtuple('FixtureOptions', 'fullstack includes_proxy dns_resolver secure platforms') FixtureOptions = collections.namedtuple('FixtureOptions', 'fullstack includes_proxy dns_resolver secure platforms ci_mac')
default_unsecure_fixture_options = FixtureOptions(True, False, True, False, ['windows', 'linux', 'mac', 'posix']) default_unsecure_fixture_options = FixtureOptions(True, False, True, False, ['windows', 'linux', 'mac', 'posix'], True)
socketpair_unsecure_fixture_options = default_unsecure_fixture_options._replace(fullstack=False, dns_resolver=False) socketpair_unsecure_fixture_options = default_unsecure_fixture_options._replace(fullstack=False, dns_resolver=False)
default_secure_fixture_options = default_unsecure_fixture_options._replace(secure=True) default_secure_fixture_options = default_unsecure_fixture_options._replace(secure=True)
uds_fixture_options = default_unsecure_fixture_options._replace(dns_resolver=False, platforms=['linux', 'mac', 'posix']) uds_fixture_options = default_unsecure_fixture_options._replace(dns_resolver=False, platforms=['linux', 'mac', 'posix'])
# maps fixture name to whether it requires the security library # maps fixture name to whether it requires the security library
END2END_FIXTURES = { END2END_FIXTURES = {
'chttp2_fake_security': default_secure_fixture_options, 'chttp2_fake_security': default_secure_fixture_options._replace(ci_mac=False),
'chttp2_fullstack': default_unsecure_fixture_options, 'chttp2_fullstack': default_unsecure_fixture_options,
'chttp2_fullstack_compression': default_unsecure_fixture_options, 'chttp2_fullstack_compression': default_unsecure_fixture_options,
'chttp2_fullstack_uds_posix': uds_fixture_options, 'chttp2_fullstack_uds_posix': uds_fixture_options,
'chttp2_fullstack_uds_posix_with_poll': uds_fixture_options._replace(platforms=['linux']), 'chttp2_fullstack_uds_posix_with_poll': uds_fixture_options._replace(platforms=['linux']),
'chttp2_fullstack_with_poll': default_unsecure_fixture_options._replace(platforms=['linux']), 'chttp2_fullstack_with_poll': default_unsecure_fixture_options._replace(platforms=['linux']),
'chttp2_fullstack_with_proxy': default_unsecure_fixture_options._replace(includes_proxy=True), 'chttp2_fullstack_with_proxy': default_unsecure_fixture_options._replace(includes_proxy=True, ci_mac=False),
'chttp2_simple_ssl_fullstack': default_secure_fixture_options, 'chttp2_simple_ssl_fullstack': default_secure_fixture_options,
'chttp2_simple_ssl_fullstack_with_poll': default_secure_fixture_options._replace(platforms=['linux']), 'chttp2_simple_ssl_fullstack_with_poll': default_secure_fixture_options._replace(platforms=['linux']),
'chttp2_simple_ssl_fullstack_with_proxy': default_secure_fixture_options._replace(includes_proxy=True), 'chttp2_simple_ssl_fullstack_with_proxy': default_secure_fixture_options._replace(includes_proxy=True, ci_mac=False),
'chttp2_simple_ssl_with_oauth2_fullstack': default_secure_fixture_options, 'chttp2_simple_ssl_with_oauth2_fullstack': default_secure_fixture_options._replace(ci_mac=False),
'chttp2_socket_pair': socketpair_unsecure_fixture_options, 'chttp2_socket_pair': socketpair_unsecure_fixture_options._replace(ci_mac=False),
'chttp2_socket_pair_one_byte_at_a_time': socketpair_unsecure_fixture_options, 'chttp2_socket_pair_one_byte_at_a_time': socketpair_unsecure_fixture_options._replace(ci_mac=False),
'chttp2_socket_pair_with_grpc_trace': socketpair_unsecure_fixture_options, 'chttp2_socket_pair_with_grpc_trace': socketpair_unsecure_fixture_options,
} }
@ -115,6 +115,12 @@ def compatible(f, t):
return True return True
def without(l, e):
l = l[:]
l.remove(e)
return l
def main(): def main():
sec_deps = [ sec_deps = [
'end2end_certs', 'end2end_certs',
@ -173,6 +179,9 @@ def main():
'src': [], 'src': [],
'flaky': END2END_TESTS[t].flaky, 'flaky': END2END_TESTS[t].flaky,
'platforms': END2END_FIXTURES[f].platforms, 'platforms': END2END_FIXTURES[f].platforms,
'ci_platforms': (END2END_FIXTURES[f].platforms
if END2END_FIXTURES[f].ci_mac
else without(END2END_FIXTURES[f].platforms, 'mac')),
'deps': [ 'deps': [
'end2end_fixture_%s' % f, 'end2end_fixture_%s' % f,
'end2end_test_%s' % t] + sec_deps 'end2end_test_%s' % t] + sec_deps
@ -188,6 +197,9 @@ def main():
'src': [], 'src': [],
'flaky': END2END_TESTS[t].flaky, 'flaky': END2END_TESTS[t].flaky,
'platforms': END2END_FIXTURES[f].platforms, 'platforms': END2END_FIXTURES[f].platforms,
'ci_platforms': (END2END_FIXTURES[f].platforms
if END2END_FIXTURES[f].ci_mac
else without(END2END_FIXTURES[f].platforms, 'mac')),
'deps': [ 'deps': [
'end2end_fixture_%s' % f, 'end2end_fixture_%s' % f,
'end2end_test_%s' % t] + unsec_deps 'end2end_test_%s' % t] + unsec_deps

@ -49,4 +49,4 @@ def mako_plugin(dictionary):
for tgt in targets: for tgt in targets:
tgt['flaky'] = tgt.get('flaky', False) tgt['flaky'] = tgt.get('flaky', False)
tgt['platforms'] = sorted(tgt.get('platforms', default_platforms)) tgt['platforms'] = sorted(tgt.get('platforms', default_platforms))
tgt['ci_platforms'] = sorted(tgt.get('ci_platforms', tgt['platforms']))

@ -127,10 +127,14 @@ class CLanguage(object):
for tgt in js for tgt in js
if tgt['language'] == test_lang and if tgt['language'] == test_lang and
platform_string() in tgt['platforms']] platform_string() in tgt['platforms']]
self.ci_binaries = [tgt
for tgt in js
if tgt['language'] == test_lang and
platform_string() in tgt['ci_platforms']]
def test_specs(self, config, travis): def test_specs(self, config, travis):
out = [] out = []
for target in self.binaries: for target in (self.ci_binaries if travis else self.binaries):
if travis and target['flaky']: if travis and target['flaky']:
continue continue
if self.platform == 'windows': if self.platform == 'windows':

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save