OLD | NEW |
| (Empty) |
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 | |
6 from buildbot.process.properties import WithProperties | |
7 | |
8 import builder_name_schema | |
9 import factory | |
10 import os | |
11 | |
12 | |
13 class DRTCanaryFactory(factory.SkiaFactory): | |
14 """ Subclass of Factory which builds Chrome with LKGR Skia, runs layout tests, | |
15 then updates Skia to the most recent revision and runs the layout tests again, | |
16 looking for diffs. | |
17 """ | |
18 def __init__(self, path_to_skia, **kwargs): | |
19 """ Instantiates a DRTCanaryFactory. | |
20 | |
21 path_to_skia: list of strings; indicates the path from the root of the | |
22 project to the project's copy of Skia. | |
23 """ | |
24 factory.SkiaFactory.__init__(self, | |
25 flavor='chrome_canary', | |
26 build_targets=['content_shell', | |
27 'dump_syms', | |
28 'minidump_stackwalk'], | |
29 **kwargs) | |
30 self._path_to_skia = self.TargetPath.join(*path_to_skia) | |
31 | |
32 # pylint: disable=W0221 | |
33 def Update(self, use_lkgr_skia=False): | |
34 """ Override of Update() which may sync Skia to LKGR instead of | |
35 self._revision, without setting got_revision. """ | |
36 args = ['--gyp_defines', | |
37 ' '.join('%s=%s' % (k, v) for k, v in self._gyp_defines.items())] | |
38 if use_lkgr_skia: | |
39 args.extend(['--use_lkgr_skia', 'True']) | |
40 else: | |
41 args.extend(['--chrome_rev', WithProperties('%(chrome_revision)s')]) | |
42 | |
43 self.AddFlavoredSlaveScript( | |
44 script=self.TargetPath.join(os.pardir, os.pardir, os.pardir, os.pardir, | |
45 os.pardir, 'slave', 'skia_slave_scripts', | |
46 '%s_update.py' % self._flavor), | |
47 description='Update', | |
48 timeout=None, | |
49 halt_on_failure=True, | |
50 is_rebaseline_step=True, | |
51 get_props_from_stdout=( | |
52 {'chrome_revision': 'Chrome updated to (\w+)', | |
53 'skia_base_rev': 'Skia updated to (\w+)'} if use_lkgr_skia | |
54 else {'chrome_revision2': 'Chrome updated to (\w+)', | |
55 'got_revision': 'Skia updated to (\w+)'}), | |
56 workdir='build', | |
57 args=args) | |
58 | |
59 def PreTest(self): | |
60 """ Step to run before running tests. """ | |
61 self.AddFlavoredSlaveScript(script='chrome_drt_canary_pretest.py', | |
62 description='PreTest') | |
63 | |
64 def RunWebkitTests(self, new_baseline=False): | |
65 self.AddFlavoredSlaveScript(script='chrome_drt_canary_run_webkit_tests.py', | |
66 description='RunWebkitTests', | |
67 args=(['--new_baseline', 'True'] | |
68 if new_baseline | |
69 else ['--write_results', 'True'])) | |
70 | |
71 def UploadTestResults(self): | |
72 self.AddFlavoredSlaveScript(script='chrome_drt_canary_upload_results.py', | |
73 description='UploadTestResults', | |
74 is_upload_render_step=True) | |
75 | |
76 def Build(self, role=builder_name_schema.BUILDER_ROLE_CANARY, clobber=None): | |
77 """Build and return the complete BuildFactory. | |
78 | |
79 role: string; type of builder. | |
80 """ | |
81 if role != builder_name_schema.BUILDER_ROLE_CANARY: | |
82 raise Exception('Canary builders must have role "%s"' % | |
83 builder_name_schema.BUILDER_ROLE_CANARY) | |
84 | |
85 self.UpdateScripts() | |
86 self.Update(use_lkgr_skia=True) | |
87 self.Compile(retry_without_werr_on_failure=True) | |
88 self.PreTest() | |
89 self.RunWebkitTests(new_baseline=True) | |
90 self.Update(use_lkgr_skia=False) | |
91 if self._do_patch_step: | |
92 self.ApplyPatch() | |
93 self.Compile(retry_without_werr_on_failure=True) | |
94 self.RunWebkitTests(new_baseline=False) | |
95 self.UploadTestResults() | |
96 self.Validate() | |
97 return self | |
OLD | NEW |