Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(949)

Unified Diff: tools/mb/mb.py

Issue 1206033005: Rework how isolates are generated in MB. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clean up osmesa, add comments about ui_test_pak Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/cacheinvalidation/BUILD.gn ('k') | ui/base/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/mb/mb.py
diff --git a/tools/mb/mb.py b/tools/mb/mb.py
index 026a1945c1ab98eacb2b221c1c4f1ba51c9d6861..509902f0842e9bb84263a413719d845e59689610 100755
--- a/tools/mb/mb.py
+++ b/tools/mb/mb.py
@@ -336,14 +336,14 @@ class MetaBuildWrapper(object):
# the compile targets to the matching GN labels.
contents = self.ReadFile(self.args.swarming_targets_file)
swarming_targets = contents.splitlines()
- ninja_targets_to_labels = ast.literal_eval(self.ReadFile(os.path.join(
- self.chromium_src_dir, 'testing', 'buildbot', 'ninja_to_gn.pyl')))
+ gn_isolate_map = ast.literal_eval(self.ReadFile(os.path.join(
+ self.chromium_src_dir, 'testing', 'buildbot', 'gn_isolate_map.pyl')))
gn_labels = []
for target in swarming_targets:
- if not target in ninja_targets_to_labels:
+ if not target in gn_isolate_map:
raise MBErr('test target "%s" not found in %s' %
- (target, '//testing/buildbot/ninja_to_gn.pyl'))
- gn_labels.append(ninja_targets_to_labels[target])
+ (target, '//testing/buildbot/gn_isolate_map.pyl'))
+ gn_labels.append(gn_isolate_map[target]['label'])
gn_runtime_deps_path = self.ToAbsPath(path, 'runtime_deps')
@@ -363,7 +363,8 @@ class MetaBuildWrapper(object):
if not self.Exists(deps_path):
raise MBErr('did not generate %s' % deps_path)
- command, extra_files = self.GetIsolateCommand(target, vals)
+ command, extra_files = self.GetIsolateCommand(target, vals,
+ gn_isolate_map)
runtime_deps = self.ReadFile(deps_path).splitlines()
@@ -448,15 +449,55 @@ class MetaBuildWrapper(object):
return ret
- def GetIsolateCommand(self, target, vals):
- extra_files = []
+ def RunGNIsolate(self, vals):
+ build_path = self.args.path[0]
+ inp = self.ReadInputJSON(['targets'])
+ if self.args.verbose:
+ self.Print()
+ self.Print('isolate input:')
+ self.PrintJSON(inp)
+ self.Print()
+ output_path = self.args.output_path[0]
- # TODO(dpranke): We should probably pull this from
- # the test list info in //testing/buildbot/*.json,
- # and assert that the test has can_use_on_swarming_builders: True,
- # but we hardcode it here for now.
- test_type = {}.get(target, 'gtest_test')
+ for target in inp['targets']:
+ runtime_deps_path = self.ToAbsPath(build_path, target + '.runtime_deps')
+ if not self.Exists(runtime_deps_path):
+ self.WriteFailureAndRaise('"%s" does not exist' % runtime_deps_path,
+ output_path)
+
+ command, extra_files = self.GetIsolateCommand(target, vals, None)
+
+ runtime_deps = self.ReadFile(runtime_deps_path).splitlines()
+
+
+ isolate_path = self.ToAbsPath(build_path, target + '.isolate')
+ self.WriteFile(isolate_path,
+ pprint.pformat({
+ 'variables': {
+ 'command': command,
+ 'files': sorted(runtime_deps + extra_files),
+ 'read_only': 1,
+ }
+ }) + '\n')
+
+ self.WriteJSON(
+ {
+ 'args': [
+ '--isolated',
+ self.ToSrcRelPath('%s/%s.isolated' % (build_path, target)),
+ '--isolate',
+ self.ToSrcRelPath('%s/%s.isolate' % (build_path, target)),
+ ],
+ 'dir': self.chromium_src_dir,
+ 'version': 1,
+ },
+ isolate_path + 'd.gen.json',
+ )
+
+ return 0
+
+ def GetIsolateCommand(self, target, vals, gn_isolate_map):
# This needs to mirror the settings in //build/config/ui.gni:
# use_x11 = is_linux && !use_ozone.
# TODO(dpranke): Figure out how to keep this in sync better.
@@ -470,41 +511,48 @@ class MetaBuildWrapper(object):
executable_suffix = '.exe' if sys.platform == 'win32' else ''
- if test_type == 'gtest_test':
- extra_files.append('../../testing/test_env.py')
-
- if use_x11:
- # TODO(dpranke): Figure out some way to figure out which
- # test steps really need xvfb.
- extra_files.append('xdisplaycheck')
- extra_files.append('../../testing/xvfb.py')
+ test_type = gn_isolate_map[target]['type']
+ cmdline = []
+ extra_files = []
- cmdline = [
+ if use_x11 and test_type == 'windowed_test_launcher':
+ extra_files = [
+ 'xdisplaycheck',
+ '../../testing/test_env.py',
'../../testing/xvfb.py',
- '.',
- './' + str(target),
- '--brave-new-test-launcher',
- '--test-launcher-bot-mode',
- '--asan=%d' % asan,
- '--msan=%d' % msan,
- '--tsan=%d' % tsan,
- ]
- else:
- cmdline = [
+ ]
+ cmdline = [
+ '../../testing/xvfb.py',
+ '.',
+ './' + str(target),
+ '--brave-new-test-launcher',
+ '--test-launcher-bot-mode',
+ '--asan=%d' % asan,
+ '--msan=%d' % msan,
+ '--tsan=%d' % tsan,
+ ]
+ elif test_type in ('windowed_test_launcher', 'console_test_launcher'):
+ extra_files = [
+ '../../testing/test_env.py'
+ ]
+ cmdline = [
'../../testing/test_env.py',
- '.',
'./' + str(target) + executable_suffix,
'--brave-new-test-launcher',
'--test-launcher-bot-mode',
'--asan=%d' % asan,
'--msan=%d' % msan,
'--tsan=%d' % tsan,
- ]
- else:
- # TODO(dpranke): Handle script_tests and other types of swarmed tests.
- self.WriteFailureAndRaise('unknown test type "%s" for %s' %
- (test_type, target), output_path=None)
+ ]
+ elif test_type in ('raw'):
+ extra_files = []
+ cmdline = [
+ './' + str(target) + executable_suffix,
+ ] + gn_isolate_map[target].get('args')
+ else:
+ self.WriteFailureAndRaise('No command line for %s found (test type %s).'
+ % (target, test_type), output_path=None)
return cmdline, extra_files
« no previous file with comments | « third_party/cacheinvalidation/BUILD.gn ('k') | ui/base/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698