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

Unified Diff: scripts/slave/recipes/chromium_mojo.py

Issue 1681033003: Remove Mandoline FYI upload step and perf testing (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Add mojo:tests compile target. Created 4 years, 10 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
Index: scripts/slave/recipes/chromium_mojo.py
diff --git a/scripts/slave/recipes/chromium_mojo.py b/scripts/slave/recipes/chromium_mojo.py
index ee7eedc66039bba06e50dde54afd8f3211e77dd3..ebdebc3005c9bf697b4755e7f3bca9308ae82bb8 100644
--- a/scripts/slave/recipes/chromium_mojo.py
+++ b/scripts/slave/recipes/chromium_mojo.py
@@ -11,17 +11,12 @@ DEPS = [
'depot_tools/bot_update',
'chromium',
'chromium_android',
- 'file',
- 'gsutil',
- 'recipe_engine/raw_io',
'recipe_engine/path',
- 'recipe_engine/platform',
'recipe_engine/properties',
'recipe_engine/python',
'recipe_engine/step',
]
-
BUILDERS = freeze({
'chromium.mojo': {
'builders': {
@@ -41,125 +36,17 @@ BUILDERS = freeze({
},
'gclient_apply_config': ['android'],
},
- 'Chromium Mojo Linux Perf': {
- 'chromium_config_kwargs': {
- 'BUILD_CONFIG': 'Release',
- 'TARGET_PLATFORM': 'linux',
- },
- 'run_perf_tests': True,
- 'perf_test_info': {
- 'browser_type': 'mandoline-release',
- 'perf_id': 'mandoline-linux-release',
- 'supported_testnames': [
- 'blink_perf.dom',
- 'blink_perf.events',
- 'blink_perf.mutation',
- 'blink_perf.shadow_dom',
- 'page_cycler.typical_25',
- 'startup.cold.blank_page',
- 'startup.warm.blank_page',
- ],
- },
- },
- 'Chromium Mojo Android Nexus5 Perf': {
- 'chromium_config': 'android',
- 'chromium_config_kwargs': {
- 'BUILD_CONFIG': 'Release',
- 'TARGET_PLATFORM': 'android',
- 'TARGET_ARCH': 'arm',
- 'TARGET_BITS': 32,
- },
- 'gclient_apply_config': ['android'],
- # TODO(yzshen): Actually run perf tests.
- },
'Chromium Mojo Windows': {
'chromium_config_kwargs': {
'BUILD_CONFIG': 'Release',
'TARGET_PLATFORM': 'win',
},
},
- 'Chromium Mojo Windows 7 Perf': {
- 'chromium_config_kwargs': {
- 'BUILD_CONFIG': 'Release',
- 'TARGET_PLATFORM': 'win',
- },
- 'run_perf_tests': True,
- 'perf_test_info': {
- 'browser_type': 'mandoline-release',
- 'perf_id': 'mandoline-win7-release',
- 'supported_testnames': [
- 'blink_perf.dom',
- 'blink_perf.events',
- 'blink_perf.mutation',
- 'blink_perf.shadow_dom',
- 'page_cycler.typical_25',
- 'startup.cold.blank_page',
- 'startup.warm.blank_page',
- ],
- },
- },
},
},
})
-def _GetBotConfig(api):
- mastername = api.properties.get('mastername')
- buildername = api.properties.get('buildername')
- master_dict = BUILDERS.get(mastername, {})
- bot_config = master_dict.get('builders', {}).get(buildername, {})
- return bot_config
-
-
-@recipe_api.composite_step
-def _UploadMandolineToGoogleStorage(api):
- # Get the release version, which is updated daily for Chrome canary.
- v = api.chromium.get_version()
- version = '%s.%s.%s.%s' % (v['MAJOR'], v['MINOR'], v['BUILD'], v['PATCH'])
- assert re.match('^\d+\.\d+\.\d+\.\d+$', version), 'Error: Bad version %r' % v
- api.step.active_result.presentation.step_text = 'Found version %s' % version
-
- # Check if the current version is already uploaded for the given platform.
- bucket = 'mandoline'
- url = 'gs://%s/%s' % (bucket, version)
- result = api.gsutil.ls(bucket, '', stdout=api.raw_io.output())
- result.presentation.logs['ls result stdout'] = [result.stdout or '']
- if result.stdout and url in result.stdout:
- result = api.gsutil.ls(bucket, version, stdout=api.raw_io.output())
- result.presentation.logs['ls result stdout'] = [result.stdout or '']
- url = '%s/%s' % (url, api.chromium.c.TARGET_PLATFORM)
-
- if result.stdout and url in result.stdout:
- api.step('skipping mandoline upload: release already exits', None)
- return
-
- # Read a limited FILES.cfg file-list format, uploading each applicable entry.
- # Also clobber and upload a copy of the files to the 'latest' build directory.
- files = api.path['checkout'].join('mandoline', 'tools', 'data', 'FILES.cfg')
- test_data = 'FILES=[{\'filepath\': \'foo\', \'platforms\': [\'linux\'],},]'
- files_data = api.file.read('read FILES.cfg', files, test_data=test_data)
- execution_globals = {}
- exec(files_data, execution_globals)
- gs_path = '%s/%s' % (version, api.chromium.c.TARGET_PLATFORM)
- gs_latest_path = 'latest/%s' % api.chromium.c.TARGET_PLATFORM
- api.gsutil.remove_url('gs://%s/%s' % (bucket, gs_latest_path), args=['-r'])
- for file_dictionary in execution_globals['FILES']:
- if api.chromium.c.TARGET_PLATFORM in file_dictionary['platforms']:
- file_path = file_dictionary['filepath']
- local_path = api.chromium.output_dir.join(file_path)
- remote_path = '%s/%s' % (gs_path, file_path)
- args = ['-r'] if file_dictionary.get('directory', False) else []
- api.gsutil.upload(local_path, bucket, remote_path, args=args)
- remote_path = '%s/%s' % (gs_latest_path, file_path)
- api.gsutil.upload(local_path, bucket, remote_path, args=args)
-
- # Upload a stamp file to inform any observers that the upload is complete.
- stamp_path = api.path.mkdtemp('upload_stamp').join('stamp')
- api.file.write('Create upload stamp', stamp_path, 'Upload complete')
- api.gsutil.upload(stamp_path, bucket, '%s/stamp' % gs_path)
- api.gsutil.upload(stamp_path, bucket, '%s/stamp' % gs_latest_path)
-
-
@recipe_api.composite_step
def _RunApptests(api):
# TODO(msw): Run and get compile targets via testing/scripts/mojo_apptests.py.
@@ -169,7 +56,6 @@ def _RunApptests(api):
def _RunUnitAndAppTests(api):
with api.step.defer_results():
- api.chromium.runtest('html_viewer_unittests')
api.chromium.runtest('ipc_mojo_unittests')
api.chromium.runtest('mojo_common_unittests')
@@ -193,40 +79,7 @@ def _RunUnitAndAppTests(api):
_RunApptests(api)
-def _RunPerfTests(api, perf_test_info):
- tests = api.chromium.list_perf_tests(perf_test_info['browser_type'], 1)
-
- # TODO(yzshen): Remove this filter once we annotate tests disabled for
- # Mandoline in Telemetry. Consider reusing
- # chromium_tests.steps.DynamicPerfTests.
- tests = dict((k, v) for k, v in tests.json.output['steps'].iteritems()
- if str(k) in perf_test_info['supported_testnames'])
-
- with api.step.defer_results():
- for test_name, test in sorted(tests.iteritems()):
- test_name = str(test_name)
- annotate = api.chromium.get_annotate_by_test_name(test_name)
- cmd = test['cmd'].split()
- cmd.extend(
- ['--extra-browser-args=--override-use-gl-with-osmesa-for-tests'])
-
- api.chromium.runtest(
- cmd[1] if len(cmd) > 1 else cmd[0],
- args=cmd[2:],
- name=test_name,
- annotate=annotate,
- python_mode=True,
- results_url='https://chromeperf.appspot.com',
- perf_dashboard_id=test.get('perf_dashboard_id', test_name),
- perf_id=perf_test_info['perf_id'],
- test_type=test.get('perf_dashboard_id', test_name),
- xvfb=True,
- chartjson_file=True)
-
-
def RunSteps(api):
- # TODO(yzshen): Perf bots should retrieve build results from builders of the
- # same architecture.
api.chromium.configure_bot(BUILDERS, ['gn'])
api.bot_update.ensure_checkout(force=True)
@@ -237,33 +90,14 @@ def RunSteps(api):
api.properties.get('buildername'),
use_goma=True)
- compile_targets = ['mandoline:all']
- if api.chromium.c.TARGET_PLATFORM != 'android':
- compile_targets.append('mash/wm:tests')
- api.chromium.compile(targets=compile_targets)
+ api.chromium.compile(targets=['mojo:tests', 'mojo_apptests'])
if api.chromium.c.TARGET_PLATFORM == 'android':
api.chromium_android.detect_and_setup_devices()
- bot_config = _GetBotConfig(api)
- if bot_config.get('run_perf_tests', False):
- _RunPerfTests(api, bot_config['perf_test_info'])
- else:
- _RunUnitAndAppTests(api)
- _UploadMandolineToGoogleStorage(api)
+ _RunUnitAndAppTests(api)
def GenTests(api):
for test in api.chromium.gen_tests_for_builders(BUILDERS):
yield test
-
- # Ensure upload is skipped if version/platform binaries are already uploaded.
- test = api.test('test_upload_skipped_for_existing_binaries')
- test += api.platform.name('linux')
- test += api.properties.generic(buildername='Chromium Mojo Android',
- mastername='chromium.mojo')
- # This relies on api.chromium.get_version's hard-coded step_test_data version.
- test_ls = api.raw_io.output('gs://mandoline/37.0.2021.0/android/')
- test += api.step_data('gsutil ls gs://mandoline/', stdout=test_ls)
- test += api.step_data('gsutil ls gs://mandoline/37.0.2021.0', stdout=test_ls)
- yield test

Powered by Google App Engine
This is Rietveld 408576698