OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 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 from infra.libs.infra_types import freeze | 5 from infra.libs.infra_types import freeze |
6 from slave import recipe_api | 6 from slave import recipe_api |
7 | 7 |
8 import common | 8 import common |
9 | 9 |
10 SIMPLE_TESTS_TO_RUN = freeze([ | 10 SIMPLE_TESTS_TO_RUN = freeze([ |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 enable_swarming, swarming_dimensions)) | 435 enable_swarming, swarming_dimensions)) |
436 tests.append(self._create_gtest( | 436 tests.append(self._create_gtest( |
437 'media_unittests', chrome_revision, webkit_revision, enable_swarming, | 437 'media_unittests', chrome_revision, webkit_revision, enable_swarming, |
438 swarming_dimensions)) | 438 swarming_dimensions)) |
439 | 439 |
440 # Remove empty entries as some tests may be skipped. | 440 # Remove empty entries as some tests may be skipped. |
441 tests = [test for test in tests if test] | 441 tests = [test for test in tests if test] |
442 | 442 |
443 return tests | 443 return tests |
444 | 444 |
445 def _should_run_test(self, isolate_name): | |
446 # Check to see if analyze.py excluded this isolate from the | |
447 # compile targets. If so, skip running it. (It isn't possible to | |
448 # run analyze.py on the testers because they don't check out the | |
449 # Chromium workspace.) We prefer to not run this logic on the main | |
450 # waterfall bots so that forgetting an isolate's hash there will | |
451 # cause a hard failure. | |
452 if self.m.properties['mastername'] == 'tryserver.chromium.gpu': | |
453 return isolate_name in self.m.isolate.isolated_tests | |
454 else: | |
455 return True | |
456 | |
457 def _get_gpu_suffix(self, dimensions): | 445 def _get_gpu_suffix(self, dimensions): |
458 if dimensions is None: | 446 if dimensions is None: |
459 return None | 447 return None |
460 | 448 |
461 gpu_vendor_id = dimensions.get('gpu', '').split(':')[0].lower() | 449 gpu_vendor_id = dimensions.get('gpu', '').split(':')[0].lower() |
462 if gpu_vendor_id == '8086': | 450 if gpu_vendor_id == '8086': |
463 gpu_vendor = 'Intel' | 451 gpu_vendor = 'Intel' |
464 # TODO(sergiyb): Mocking various vendors IDs is currently difficult as they | 452 # TODO(sergiyb): Mocking various vendors IDs is currently difficult as they |
465 # are hard coded in the recipe. When we'll move the configs to an external | 453 # are hard coded in the recipe. When we'll move the configs to an external |
466 # json file read in a dedicated step whose data can be overriden, we should | 454 # json file read in a dedicated step whose data can be overriden, we should |
(...skipping 22 matching lines...) Expand all Loading... |
489 enable_swarming, swarming_dimensions, | 477 enable_swarming, swarming_dimensions, |
490 args=[], target_name=None): | 478 args=[], target_name=None): |
491 # The step test must end in 'test' or 'tests' in order for the results to | 479 # The step test must end in 'test' or 'tests' in order for the results to |
492 # automatically show up on the flakiness dashboard. | 480 # automatically show up on the flakiness dashboard. |
493 # | 481 # |
494 # Currently all tests on the GPU bots follow this rule, so we can't add | 482 # Currently all tests on the GPU bots follow this rule, so we can't add |
495 # code like in chromium/api.py, run_telemetry_test. | 483 # code like in chromium/api.py, run_telemetry_test. |
496 | 484 |
497 target_name = target_name or name | 485 target_name = target_name or name |
498 assert target_name.endswith('test') or target_name.endswith('tests') | 486 assert target_name.endswith('test') or target_name.endswith('tests') |
499 if not self._should_run_test(name): | |
500 return | |
501 | 487 |
502 results_directory = self.m.path['slave_build'].join('gtest-results', name) | 488 results_directory = self.m.path['slave_build'].join('gtest-results', name) |
503 return self.m.chromium.steps.GPUGTestTest( | 489 return self.m.chromium.steps.GPUGTestTest( |
504 name, | 490 name, |
505 xvfb=False, | 491 xvfb=False, |
506 args=args, | 492 args=args, |
507 target_name=target_name, | 493 target_name=target_name, |
508 use_isolate=True, | 494 use_isolate=True, |
509 generate_json_file=True, | 495 generate_json_file=True, |
510 results_directory=results_directory, | 496 results_directory=results_directory, |
511 revision=chrome_revision, | 497 revision=chrome_revision, |
512 webkit_revision=webkit_revision, | 498 webkit_revision=webkit_revision, |
513 master_class_name=self._master_class_name_for_testing, | 499 master_class_name=self._master_class_name_for_testing, |
514 enable_swarming=enable_swarming, | 500 enable_swarming=enable_swarming, |
515 swarming_dimensions=swarming_dimensions, | 501 swarming_dimensions=swarming_dimensions, |
516 swarming_extra_suffix=self._get_gpu_suffix(swarming_dimensions)) | 502 swarming_extra_suffix=self._get_gpu_suffix(swarming_dimensions)) |
517 | 503 |
518 def _create_telemetry_test(self, name, chrome_revision, webkit_revision, | 504 def _create_telemetry_test(self, name, chrome_revision, webkit_revision, |
519 enable_swarming, swarming_dimensions, | 505 enable_swarming, swarming_dimensions, |
520 args=None, target_name=None, | 506 args=None, target_name=None, |
521 extra_browser_args=None): | 507 extra_browser_args=None): |
522 if not self._should_run_test('telemetry_gpu_test'): | |
523 return | |
524 | |
525 test_args = ['-v', '--use-devtools-active-port'] | 508 test_args = ['-v', '--use-devtools-active-port'] |
526 if args: | 509 if args: |
527 test_args.extend(args) | 510 test_args.extend(args) |
528 # --expose-gc allows the WebGL conformance tests to more reliably | 511 # --expose-gc allows the WebGL conformance tests to more reliably |
529 # reproduce GC-related bugs in the V8 bindings. | 512 # reproduce GC-related bugs in the V8 bindings. |
530 extra_browser_args_string = ( | 513 extra_browser_args_string = ( |
531 '--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc') | 514 '--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc') |
532 if self.m.platform.is_mac and not self.m.tryserver.is_tryserver: | 515 if self.m.platform.is_mac and not self.m.tryserver.is_tryserver: |
533 #TODO(zmo): remove the vmodule flag after crbug.com/424024 is fixed. | 516 #TODO(zmo): remove the vmodule flag after crbug.com/424024 is fixed. |
534 vmodules = [ | 517 vmodules = [ |
535 'startup_browser_creator=2' | 518 'startup_browser_creator=2' |
536 ] | 519 ] |
537 extra_browser_args_string += ' --vmodule=' + ','.join(vmodules) | 520 extra_browser_args_string += ' --vmodule=' + ','.join(vmodules) |
538 if extra_browser_args: | 521 if extra_browser_args: |
539 extra_browser_args_string += ' ' + ' '.join(extra_browser_args) | 522 extra_browser_args_string += ' ' + ' '.join(extra_browser_args) |
540 test_args.append(extra_browser_args_string) | 523 test_args.append(extra_browser_args_string) |
541 | 524 |
542 return self.m.chromium.steps.TelemetryGPUTest( | 525 return self.m.chromium.steps.TelemetryGPUTest( |
543 name, chrome_revision, webkit_revision, args=test_args, | 526 name, chrome_revision, webkit_revision, args=test_args, |
544 target_name=target_name, enable_swarming=enable_swarming, | 527 target_name=target_name, enable_swarming=enable_swarming, |
545 swarming_dimensions=swarming_dimensions, | 528 swarming_dimensions=swarming_dimensions, |
546 master_class_name=self._master_class_name_for_testing, | 529 master_class_name=self._master_class_name_for_testing, |
547 swarming_extra_suffix=self._get_gpu_suffix(swarming_dimensions)) | 530 swarming_extra_suffix=self._get_gpu_suffix(swarming_dimensions)) |
OLD | NEW |