 Chromium Code Reviews
 Chromium Code Reviews Issue 316333002:
  display "latest GM failures" link in its own line under build step 
  Base URL: https://skia.googlesource.com/buildbot.git@master
    
  
    Issue 316333002:
  display "latest GM failures" link in its own line under build step 
  Base URL: https://skia.googlesource.com/buildbot.git@master| OLD | NEW | 
|---|---|
| 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be | 
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. | 
| 4 | 4 | 
| 5 | 5 | 
| 6 """Utility class to build the Skia master BuildFactory's. | 6 """Utility class to build the Skia master BuildFactory's. | 
| 7 | 7 | 
| 8 Based on gclient_factory.py and adds Skia-specific steps.""" | 8 Based on gclient_factory.py and adds Skia-specific steps.""" | 
| 9 | 9 | 
| 10 | 10 | 
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 241 # b. All of the printing can noticeably slow down the master startup | 241 # b. All of the printing can noticeably slow down the master startup | 
| 242 # c. The master prints so much output that it would be easy to miss the | 242 # c. The master prints so much output that it would be easy to miss the | 
| 243 # diff if we did print it. | 243 # diff if we did print it. | 
| 244 print 'Warning: Factory configuration for %s does not match ' \ | 244 print 'Warning: Factory configuration for %s does not match ' \ | 
| 245 'expectation!' % self._builder_name | 245 'expectation!' % self._builder_name | 
| 246 | 246 | 
| 247 # TODO(borenet): Can kwargs be used to simplify this function declaration? | 247 # TODO(borenet): Can kwargs be used to simplify this function declaration? | 
| 248 def AddSlaveScript(self, script, description, args=None, timeout=None, | 248 def AddSlaveScript(self, script, description, args=None, timeout=None, | 
| 249 halt_on_failure=False, | 249 halt_on_failure=False, | 
| 250 is_upload_render_step=False, is_upload_bench_step=False, | 250 is_upload_render_step=False, is_upload_bench_step=False, | 
| 251 is_rebaseline_step=False, get_props_from_stdout=None, | 251 is_rebaseline_step=False, | 
| 252 get_links_from_stdout=None, get_props_from_stdout=None, | |
| 252 workdir=None, do_step_if=None, always_run=False, | 253 workdir=None, do_step_if=None, always_run=False, | 
| 253 flunk_on_failure=True, exception_on_failure=False): | 254 flunk_on_failure=True, exception_on_failure=False): | 
| 254 """ Add a BuildStep consisting of a python script. | 255 """ Add a BuildStep consisting of a python script. | 
| 255 | 256 | 
| 256 script: which slave-side python script to run. | 257 script: which slave-side python script to run. | 
| 257 description: string briefly describing the BuildStep; if this description | 258 description: string briefly describing the BuildStep; if this description | 
| 258 is in the self.skipsteps list, this BuildStep will be skipped--unless | 259 is in the self.skipsteps list, this BuildStep will be skipped--unless | 
| 259 it's in the self.dontskipsteps list, in which case we run it! | 260 it's in the self.dontskipsteps list, in which case we run it! | 
| 260 args: optional list of strings; arguments to pass to the script. | 261 args: optional list of strings; arguments to pass to the script. | 
| 261 timeout: optional integer; maximum time for the BuildStep to complete. | 262 timeout: optional integer; maximum time for the BuildStep to complete. | 
| 262 halt_on_failure: boolean indicating whether to continue the build if this | 263 halt_on_failure: boolean indicating whether to continue the build if this | 
| 263 step fails. | 264 step fails. | 
| 264 is_upload_render_step: boolean; if true, only run if | 265 is_upload_render_step: boolean; if true, only run if | 
| 265 self._do_upload_render_results is True | 266 self._do_upload_render_results is True | 
| 266 is_upload_bench_step: boolean; if true, only run if | 267 is_upload_bench_step: boolean; if true, only run if | 
| 267 self._do_upload_bench_results is True | 268 self._do_upload_bench_results is True | 
| 268 is_rebaseline_step: boolean indicating whether this step is required for | 269 is_rebaseline_step: boolean indicating whether this step is required for | 
| 269 rebaseline-only builds. | 270 rebaseline-only builds. | 
| 271 get_links_from_stdout: optional dictionary. Keys are strings indicating | |
| 272 link text to set based on the output of this step. Values are | |
| 273 strings containing regular expressions for parsing the linked URL from | |
| 274 the output of the step. | |
| 270 get_props_from_stdout: optional dictionary. Keys are strings indicating | 275 get_props_from_stdout: optional dictionary. Keys are strings indicating | 
| 271 build properties to set based on the output of this step. Values are | 276 build properties to set based on the output of this step. Values are | 
| 272 strings containing regular expressions for parsing the property from | 277 strings containing regular expressions for parsing the property from | 
| 273 the output of the step. | 278 the output of the step. | 
| 274 workdir: optional string indicating the working directory in which to run | 279 workdir: optional string indicating the working directory in which to run | 
| 275 the script. If this is provided, then the script must be given relative | 280 the script. If this is provided, then the script must be given relative | 
| 276 to this directory. | 281 to this directory. | 
| 277 do_step_if: optional, function which determines whether or not to run the | 282 do_step_if: optional, function which determines whether or not to run the | 
| 278 step. The function is not evaluated until runtime. | 283 step. The function is not evaluated until runtime. | 
| 279 always_run: boolean indicating whether this step should run even if a | 284 always_run: boolean indicating whether this step should run even if a | 
| (...skipping 18 matching lines...) Expand all Loading... | |
| 298 if args: | 303 if args: | 
| 299 arguments += args | 304 arguments += args | 
| 300 self._skia_cmd_obj.AddSlaveScript( | 305 self._skia_cmd_obj.AddSlaveScript( | 
| 301 script=script, | 306 script=script, | 
| 302 args=arguments, | 307 args=arguments, | 
| 303 description=description, | 308 description=description, | 
| 304 timeout=timeout, | 309 timeout=timeout, | 
| 305 halt_on_failure=halt_on_failure, | 310 halt_on_failure=halt_on_failure, | 
| 306 is_upload_step=is_upload_render_step or is_upload_bench_step, | 311 is_upload_step=is_upload_render_step or is_upload_bench_step, | 
| 307 is_rebaseline_step=is_rebaseline_step, | 312 is_rebaseline_step=is_rebaseline_step, | 
| 313 get_links_from_stdout=get_links_from_stdout, | |
| 308 get_props_from_stdout=get_props_from_stdout, | 314 get_props_from_stdout=get_props_from_stdout, | 
| 309 workdir=workdir, | 315 workdir=workdir, | 
| 310 do_step_if=do_step_if, | 316 do_step_if=do_step_if, | 
| 311 always_run=always_run, | 317 always_run=always_run, | 
| 312 flunk_on_failure=flunk_on_failure, | 318 flunk_on_failure=flunk_on_failure, | 
| 313 exception_on_failure=exception_on_failure) | 319 exception_on_failure=exception_on_failure) | 
| 314 | 320 | 
| 315 def AddFlavoredSlaveScript(self, script, args=None, **kwargs): | 321 def AddFlavoredSlaveScript(self, script, args=None, **kwargs): | 
| 316 """ Add a flavor-specific BuildStep. | 322 """ Add a flavor-specific BuildStep. | 
| 317 | 323 | 
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 525 def PostBench(self): | 531 def PostBench(self): | 
| 526 """ Step to run after the benchmarking steps. """ | 532 """ Step to run after the benchmarking steps. """ | 
| 527 self.AddFlavoredSlaveScript(script='postbench.py', | 533 self.AddFlavoredSlaveScript(script='postbench.py', | 
| 528 description='PostBench', | 534 description='PostBench', | 
| 529 exception_on_failure=True) | 535 exception_on_failure=True) | 
| 530 | 536 | 
| 531 def CompareGMs(self): | 537 def CompareGMs(self): | 
| 532 """Compare the actually-generated GM images to the checked-in baselines.""" | 538 """Compare the actually-generated GM images to the checked-in baselines.""" | 
| 533 self.AddSlaveScript(script='compare_gms.py', | 539 self.AddSlaveScript(script='compare_gms.py', | 
| 534 description='CompareGMs', | 540 description='CompareGMs', | 
| 535 get_props_from_stdout={ | 541 get_links_from_stdout={ | 
| 536 'latest_gm_failures_url': | 542 'Latest GM failures on this builder': | 
| 
epoger
2014/06/05 22:15:36
For more flexibility, we could even allow the clie
 
borenet
2014/06/06 12:10:34
This makes me wish we had better performance measu
 
epoger
2014/06/09 13:33:28
I think those functions sound like a good idea.  A
 | |
| 537 '%s([^\n]*)\n' % skia_vars.GetGlobalVariable( | 543 '%s([^\n]*)\n' % skia_vars.GetGlobalVariable( | 
| 538 'latest_gm_failures_preamble')}, | 544 'latest_gm_failures_preamble')}, | 
| 539 is_rebaseline_step=True) | 545 is_rebaseline_step=True) | 
| 540 | 546 | 
| 541 def CompareRenderedSKPs(self): | 547 def CompareRenderedSKPs(self): | 
| 542 """Compare the actual image results of SKP rendering to expectations.""" | 548 """Compare the actual image results of SKP rendering to expectations.""" | 
| 543 self.AddSlaveScript(script='compare_rendered_skps.py', | 549 self.AddSlaveScript(script='compare_rendered_skps.py', | 
| 544 description='CompareRenderedSKPs', | 550 description='CompareRenderedSKPs', | 
| 545 is_rebaseline_step=True) | 551 is_rebaseline_step=True) | 
| 546 | 552 | 
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 812 # Perf-only builder. | 818 # Perf-only builder. | 
| 813 if not self._perf_output_basedir: | 819 if not self._perf_output_basedir: | 
| 814 raise ValueError( | 820 raise ValueError( | 
| 815 'BuildPerfOnly requires perf_output_basedir to be defined.') | 821 'BuildPerfOnly requires perf_output_basedir to be defined.') | 
| 816 if self._configuration != CONFIG_RELEASE: | 822 if self._configuration != CONFIG_RELEASE: | 
| 817 raise ValueError('BuildPerfOnly should run in %s configuration.' % | 823 raise ValueError('BuildPerfOnly should run in %s configuration.' % | 
| 818 CONFIG_RELEASE) | 824 CONFIG_RELEASE) | 
| 819 self.PerfSteps() | 825 self.PerfSteps() | 
| 820 self.Validate() | 826 self.Validate() | 
| 821 return self | 827 return self | 
| OLD | NEW |