Skip to content

Commit

Permalink
Run WebGL 2.0 conformance tests in more cases.
Browse files Browse the repository at this point in the history
Use CQ_INCLUDE_TRYBOTS directive to run optional GPU tests, which
include the WebGL 2.0 conformance tests, on the commit queue during
ANGLE rolls. Add a script for rolling the WebGL conformance suite and do
the same then.

Add presubmit checks for the gpu/ directory and the Blink WebGL sources
which run the WebGL 2.0 conformance suite, since these are the places
most likely to break these tests.

(These tests will be run by default on the commit queue as soon as there
is machine capacity to do so.)

BUG=295792
CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel
TBR=thakis@chromium.org

Review URL: https://codereview.chromium.org/1682593002

Cr-Commit-Position: refs/heads/master@{#374307}
  • Loading branch information
kenrussell authored and Commit bot committed Feb 9, 2016
1 parent 55cb6ac commit e85ee56
Show file tree
Hide file tree
Showing 5 changed files with 488 additions and 9 deletions.
38 changes: 38 additions & 0 deletions gpu/PRESUBMIT.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Copyright (c) 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Top-level presubmit script for gpu.
See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
for more details about the presubmit API built into depot_tools.
"""

import re

def PostUploadHook(cl, change, output_api):
"""git cl upload will call this hook after the issue is created/modified.
This hook adds extra try bots list to the CL description in order to run
Blink tests in addition to CQ try bots.
"""
rietveld_obj = cl.RpcServer()
issue = cl.issue
description = rietveld_obj.get_description(issue)
if re.search(r'^CQ_INCLUDE_TRYBOTS=.*', description, re.M | re.I):
return []

bots = [
'tryserver.chromium.win:win_optional_gpu_tests_rel',
]

results = []
new_description = description
new_description += '\nCQ_INCLUDE_TRYBOTS=%s' % ';'.join(bots)
results.append(output_api.PresubmitNotifyResult(
'Automatically added optional GPU tests to run on CQ.'))

if new_description != description:
rietveld_obj.update_description(issue, new_description)

return results
40 changes: 40 additions & 0 deletions third_party/WebKit/Source/modules/webgl/PRESUBMIT.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright (c) 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Top-level presubmit script for gpu.
See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
for more details about the presubmit API built into depot_tools.
"""


import re


def PostUploadHook(cl, change, output_api):
"""git cl upload will call this hook after the issue is created/modified.
This hook adds extra try bots list to the CL description in order to run
extra GPU tests in addition to CQ try bots.
"""
rietveld_obj = cl.RpcServer()
issue = cl.issue
description = rietveld_obj.get_description(issue)
if re.search(r'^CQ_INCLUDE_TRYBOTS=.*', description, re.M | re.I):
return []

bots = [
'tryserver.chromium.win:win_optional_gpu_tests_rel',
]

results = []
new_description = description
new_description += '\nCQ_INCLUDE_TRYBOTS=%s' % ';'.join(bots)
results.append(output_api.PresubmitNotifyResult(
'Automatically added optional GPU tests to run on CQ.'))

if new_description != description:
rietveld_obj.update_description(issue, new_description)

return results
5 changes: 5 additions & 0 deletions tools/OWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ per-file remove_stale_pyc_files.py=dtu@chromium.org
per-file roll_angle.py=kbr@chromium.org
per-file roll_angle.py=kjellander@chromium.org
per-file roll_angle.py=geofflang@chromium.org
per-file roll_webgl_conformance.py=bajones@chromium.org
per-file roll_webgl_conformance.py=kbr@chromium.org
per-file roll_webgl_conformance.py=kjellander@chromium.org
per-file roll_webgl_conformance.py=geofflang@chromium.org
per-file roll_webgl_conformance.py=zmo@chromium.org
per-file roll_webrtc.py=kjellander@chromium.org

per-file safely-roll-deps.py=borenet@chromium.org
Expand Down
34 changes: 25 additions & 9 deletions tools/roll_angle.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
extra_trybots = [
{
"mastername": "tryserver.chromium.win",
"buildername": "win_clang_dbg",
"buildernames": ["win_clang_dbg", "win_optional_gpu_tests_rel"]
}
]

Expand Down Expand Up @@ -97,12 +97,25 @@ def GetBugString(bugs):
changelog_url = GetChangeLogURL(angle_current.git_repo_url,
change_str)

def GetExtraTrybotString():
s = ''
for t in extra_trybots:
if s:
s += ';'
s += t['mastername'] + ':' + ','.join(t['buildernames'])
return s

extra_trybot_args = []
if extra_trybots:
extra_trybot_string = GetExtraTrybotString()
extra_trybot_args = ['-m', 'CQ_INCLUDE_TRYBOTS=' + extra_trybot_string]

return [
'-m', 'Roll ANGLE ' + change_str,
'-m', '%s' % changelog_url,
'-m', GetBugString(bugs),
'-m', 'TEST=bots',
]
] + extra_trybot_args


class AutoRoller(object):
Expand Down Expand Up @@ -261,17 +274,20 @@ def PrepareRoll(self, ignore_checks):
self._RunCommand(['git', 'cl', 'upload'],
extra_env={'EDITOR': 'true'})

# Run the default trybots
# Kick off tryjobs.
base_try_cmd = ['git', 'cl', 'try']
self._RunCommand(base_try_cmd)

if extra_trybots:
# Run additional tryjobs
extra_try_args = []
for extra_trybot in extra_trybots:
extra_try_args += ['-m', extra_trybot["mastername"],
'-b', extra_trybot["buildername"]]
self._RunCommand(base_try_cmd + extra_try_args)
# Run additional tryjobs.
# TODO(kbr): this should not be necessary -- the
# CQ_INCLUDE_TRYBOTS directive above should handle it.
# http://crbug.com/585237
for trybot in extra_trybots:
for builder in trybot['buildernames']:
self._RunCommand(base_try_cmd + [
'-m', trybot['mastername'],
'-b', builder])

cl_info = self._GetCLInfo()
print 'Issue: %d URL: %s' % (cl_info.issue, cl_info.url)
Expand Down
Loading

0 comments on commit e85ee56

Please sign in to comment.