| Index: infra/bots/common.py
|
| diff --git a/infra/bots/common.py b/infra/bots/common.py
|
| index b38777767c68250a063798e1b2ba07c0813440ef..b532d5db55eb1f81b82eb47b0e6cce13d0c455ef 100644
|
| --- a/infra/bots/common.py
|
| +++ b/infra/bots/common.py
|
| @@ -276,7 +276,8 @@ class BotInfo(object):
|
| flat.append(self.bot_cfg[k])
|
| return flat
|
|
|
| - def test_steps(self, got_revision, master_name, slave_name, build_number):
|
| + def test_steps(self, got_revision, master_name, slave_name, build_number,
|
| + issue=None, patchset=None):
|
| """Run the DM test."""
|
| self.build_number = build_number
|
| self.got_revision = got_revision
|
| @@ -319,9 +320,13 @@ class BotInfo(object):
|
| 'build_number', self.build_number,
|
| ]
|
| if self.is_trybot:
|
| + if not issue:
|
| + raise Exception('issue is required for trybots.')
|
| + if not patchset:
|
| + raise Exception('patchset is required for trybots.')
|
| properties.extend([
|
| - 'issue', self.m.properties['issue'],
|
| - 'patchset', self.m.properties['patchset'],
|
| + 'issue', issue,
|
| + 'patchset', patchset,
|
| ])
|
|
|
| args = [
|
| @@ -361,10 +366,91 @@ class BotInfo(object):
|
|
|
| # See skia:2789.
|
| if ('Valgrind' in self.name and
|
| - self.builder_cfg.get('cpu_or_gpu') == 'GPU'):
|
| + self.bot_cfg.get('cpu_or_gpu') == 'GPU'):
|
| abandonGpuContext = list(args)
|
| abandonGpuContext.append('--abandonGpuContext')
|
| self.flavor.run(abandonGpuContext)
|
| preAbandonGpuContext = list(args)
|
| preAbandonGpuContext.append('--preAbandonGpuContext')
|
| self.flavor.run(preAbandonGpuContext)
|
| +
|
| + self.flavor.cleanup_steps()
|
| +
|
| + def perf_steps(self, got_revision, master_name, slave_name, build_number,
|
| + issue=None, patchset=None):
|
| + """Run Skia benchmarks."""
|
| + self.build_number = build_number
|
| + self.got_revision = got_revision
|
| + self.master_name = master_name
|
| + self.slave_name = slave_name
|
| + self._run_once(self.install)
|
| + if self.upload_perf_results:
|
| + self.flavor.create_clean_device_dir(self.device_dirs.perf_data_dir)
|
| +
|
| + # Run nanobench.
|
| + properties = [
|
| + '--properties',
|
| + 'gitHash', self.got_revision,
|
| + 'build_number', self.build_number,
|
| + ]
|
| + if self.is_trybot:
|
| + if not issue:
|
| + raise Exception('issue is required for trybots.')
|
| + if not patchset:
|
| + raise Exception('patchset is required for trybots.')
|
| + properties.extend([
|
| + 'issue', issue,
|
| + 'patchset', patchset,
|
| + ])
|
| +
|
| + target = 'nanobench'
|
| + if 'VisualBench' in self.name:
|
| + target = 'visualbench'
|
| + args = [
|
| + target,
|
| + '--undefok', # This helps branches that may not know new flags.
|
| + '-i', self.device_dirs.resource_dir,
|
| + '--skps', self.device_dirs.skp_dir,
|
| + '--images', self.flavor.device_path_join(
|
| + self.device_dirs.images_dir, 'dm'), # Using DM images for now.
|
| + ]
|
| +
|
| + skip_flag = None
|
| + if self.bot_cfg.get('cpu_or_gpu') == 'CPU':
|
| + skip_flag = '--nogpu'
|
| + elif self.bot_cfg.get('cpu_or_gpu') == 'GPU':
|
| + skip_flag = '--nocpu'
|
| + if skip_flag:
|
| + args.append(skip_flag)
|
| + args.extend(self.nanobench_flags)
|
| +
|
| + if self.upload_perf_results:
|
| + json_path = self.flavor.device_path_join(
|
| + self.device_dirs.perf_data_dir,
|
| + 'nanobench_%s.json' % self.got_revision)
|
| + args.extend(['--outResultsFile', json_path])
|
| + args.extend(properties)
|
| +
|
| + keys_blacklist = ['configuration', 'role', 'is_trybot']
|
| + args.append('--key')
|
| + for k in sorted(self.bot_cfg.keys()):
|
| + if not k in keys_blacklist:
|
| + args.extend([k, self.bot_cfg[k]])
|
| +
|
| + self.flavor.run(args, env=self.default_env)
|
| +
|
| + # See skia:2789.
|
| + if ('Valgrind' in self.name and
|
| + self.bot_cfg.get('cpu_or_gpu') == 'GPU'):
|
| + abandonGpuContext = list(args)
|
| + abandonGpuContext.extend(['--abandonGpuContext', '--nocpu'])
|
| + self.flavor.run(abandonGpuContext, env=self.default_env)
|
| +
|
| + # Copy results to host.
|
| + if self.upload_perf_results:
|
| + if not os.path.exists(self.perf_data_dir):
|
| + os.makedirs(self.perf_data_dir)
|
| + self.flavor.copy_directory_contents_to_host(
|
| + self.device_dirs.perf_data_dir, self.perf_data_dir)
|
| +
|
| + self.flavor.cleanup_steps()
|
|
|