Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(764)

Side by Side Diff: frog/scripts/buildbot_annotated_steps.py

Issue 9369010: repurpose dart_client bots for browser testing (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fixed comment Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « client/tools/buildbot_annotated_steps.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Dart frog buildbot steps 7 """Dart frog buildbot steps
8 8
9 Runs tests for the frog compiler (running on the vm or the self-hosting version) 9 Runs tests for the frog compiler (running on the vm or the self-hosting version)
10 """ 10 """
11 11
12 import os 12 import os
13 import re 13 import re
14 import subprocess 14 import subprocess
15 import sys 15 import sys
16 16
17 BUILDER_NAME = 'BUILDBOT_BUILDERNAME' 17 BUILDER_NAME = 'BUILDBOT_BUILDERNAME'
18 18
19 FROG_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 19 FROG_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
20 20
21 BUILDER_PATTERN = r'(frog|frogsh|frogium)-(linux|mac|windows)-(debug|release)' 21 BUILDER_PATTERN = r'(frog|frogsh|frogium)-(linux|mac|windows)-(debug|release)'
22 22
23 NO_COLOR_ENV = dict(os.environ) 23 NO_COLOR_ENV = dict(os.environ)
24 NO_COLOR_ENV['TERM'] = 'nocolor' 24 NO_COLOR_ENV['TERM'] = 'nocolor'
25 25
26 # Patterns are of the form "dart_client-linux-chromium-debug"
27 OLD_BUILDER = r'dart_client-(\w+)-chromium-(\w+)'
28
26 def GetBuildInfo(): 29 def GetBuildInfo():
27 """Returns a tuple (name, mode, system) where: 30 """Returns a tuple (name, mode, system) where:
28 - name: 'frog', 'frogsh', or None when the builder has an incorrect name 31 - name: 'frog', 'frogsh', 'frogium' or None when the builder has an
32 incorrect name
29 - mode: 'debug' or 'release' 33 - mode: 'debug' or 'release'
30 - system: 'linux', 'mac', or 'windows' 34 - system: 'linux', 'mac', or 'windows'
35 - browser: 'ie', 'ff', 'safari', 'chrome', 'chrome_drt'
31 """ 36 """
32 name = None 37 name = None
33 mode = None 38 mode = None
34 system = None 39 system = None
40 browser = None
35 builder_name = os.environ.get(BUILDER_NAME) 41 builder_name = os.environ.get(BUILDER_NAME)
36 if builder_name: 42 if builder_name:
37 pattern = re.match(BUILDER_PATTERN, builder_name) 43 pattern = re.match(BUILDER_PATTERN, builder_name)
38 if pattern: 44 if pattern:
39 name = pattern.group(1) 45 name = pattern.group(1)
40 system = pattern.group(2) 46 system = pattern.group(2)
41 mode = pattern.group(3) 47 mode = pattern.group(3)
42 return (name, mode, system) 48
49 # TODO(jmesserly): move this logic into the builder names
50 if name == 'frogium':
51 # Note: even though the browsers can run on more than one OS, we
52 # found identical browser behavior across OS, so we're not running
53 # everywhere for faster turnaround time. We're going to split different
54 # browser+OS combinations into different bots.
55 browsers = { 'win': 'ie', 'mac': 'safari', 'linux': 'ff' }
56 browser = browsers[system]
57 else:
58 # TODO(jmesserly): remove this once builder is renamed
59 pattern = re.match(OLD_BUILDER, builder_name)
60 if pattern:
61 name = 'frogium'
62 system = pattern.group(1)
63 mode = pattern.group(2)
64 browser = 'chrome_drt'
65
66 # TODO(jmesserly): rename the frogium bots so we don't need this
67 if name == 'frogium':
68 mode = 'release'
69
70 return (name, mode, system, browser)
43 71
44 72
45 def TestStep(name, mode, system, component, targets, flags): 73 def TestStep(name, mode, system, component, targets, flags):
46 print '@@@BUILD_STEP %s tests: %s %s@@@' % (name, component, flags) 74 print '@@@BUILD_STEP %s tests: %s %s@@@' % (name, component, flags)
47 sys.stdout.flush() 75 sys.stdout.flush()
48 if (component == 'frogium' or component == 'webdriver') and system == 'linux': 76 if (component == 'frogium' or component == 'webdriver') and system == 'linux':
49 cmd = ['xvfb-run', '-a'] 77 cmd = ['xvfb-run', '-a']
50 else: 78 else:
51 cmd = [] 79 cmd = []
52 80
(...skipping 26 matching lines...) Expand all
79 107
80 # Make sure we are in the frog directory 108 # Make sure we are in the frog directory
81 os.chdir(FROG_PATH) 109 os.chdir(FROG_PATH)
82 110
83 print '@@@BUILD_STEP build frog@@@' 111 print '@@@BUILD_STEP build frog@@@'
84 return subprocess.call( 112 return subprocess.call(
85 [sys.executable, '../tools/build.py', '--mode=' + mode], 113 [sys.executable, '../tools/build.py', '--mode=' + mode],
86 env=NO_COLOR_ENV) 114 env=NO_COLOR_ENV)
87 115
88 116
89 def TestFrog(arch, mode, system, flags): 117 def TestFrog(arch, mode, system, browser, flags):
90 """ test frog. 118 """ test frog.
91 Args: 119 Args:
92 - arch: either 'leg', 'frog', 'frogsh' (frog self-hosted), or 'frogium' 120 - arch: either 'leg', 'frog', 'frogsh' (frog self-hosted), or 'frogium'
93 - mode: either 'debug' or 'release' 121 - mode: either 'debug' or 'release'
94 - system: either 'linux', 'mac', or 'windows' 122 - system: either 'linux', 'mac', or 'windows'
123 - browser: one of the browsers, see GetBuildInfo
95 - flags: extra flags to pass to test.dart 124 - flags: extra flags to pass to test.dart
96 """ 125 """
97 126
98 # Make sure we are in the frog directory 127 # Make sure we are in the frog directory
99 os.chdir(FROG_PATH) 128 os.chdir(FROG_PATH)
100 129
101 if arch != 'frogium': # frog and frogsh 130 if arch != 'frogium': # frog and frogsh
102 TestStep("frog", mode, system, arch, [], flags) 131 TestStep("frog", mode, system, arch, [], flags)
103 TestStep("frog_extra", mode, system, 132 TestStep("frog_extra", mode, system,
104 arch, ['frog', 'peg', 'css'], flags) 133 arch, ['frog', 'peg', 'css'], flags)
105 134
106 if arch == 'frogsh': 135 if arch == 'frogsh':
107 # There is no need to run these tests both for frog and frogsh. 136 # There is no need to run these tests both for frog and frogsh.
108 137
109 TestStep("leg", mode, system, 'leg', [], flags) 138 TestStep("leg", mode, system, 'leg', [], flags)
110 TestStep("leg_extra", mode, system, 'leg', ['leg_only'], flags) 139 TestStep("leg_extra", mode, system, 'leg', ['leg_only'], flags)
111 # Leg isn't self-hosted (yet) so we run the leg unit tests on the VM. 140 # Leg isn't self-hosted (yet) so we run the leg unit tests on the VM.
112 TestStep("leg_extra", mode, system, 'vm', ['leg'], flags) 141 TestStep("leg_extra", mode, system, 'vm', ['leg'], flags)
113 142
114 else: 143 else:
115 tests = ['client', 'language', 'corelib', 'isolate', 'frog', 'peg', 'css'] 144 tests = ['client', 'language', 'corelib', 'isolate', 'frog', 'peg', 'css']
116 # TODO(efortuna): Eventually we want DumpRenderTree to run on all systems,
117 # but for test turnaround time, currently it is only running on linux.
118 if system == 'linux':
119 # DumpRenderTree tests (DRT is currently not available on Windows):
120 TestStep("browser", mode, system, 'frogium', tests, flags)
121 145
122 # Webdriver tests. Even though the browsers can run on more than one OS, we 146 if browser == 'chrome_drt':
123 # found identical browser behavior across OS, so we're not running 147 # TODO(jmesserly): make DumpRenderTree more like other browser tests, so
124 # everywhere for faster turnaround time. 148 # we don't have this translation step. See dartbug.com/1158
125 if system == 'linux': 149 TestStep('browser', mode, system, 'frogium', tests, flags)
126 browsers = ['ff']
127 elif system == 'mac':
128 browsers = ['safari']
129 else: 150 else:
130 # TODO(efortuna): Use both ff and ie once we have additional buildbots.
131 # We're using just IE for speed on our testing right now.
132 browsers = ['ie'] #['ff', 'ie']
133
134
135 for browser in browsers:
136 TestStep(browser, mode, system, 'webdriver', tests, 151 TestStep(browser, mode, system, 'webdriver', tests,
137 flags + ['--browser=' + browser]) 152 flags + ['--browser=' + browser])
138 153
139 return 0 154 return 0
140 155
141 156
142 def main(): 157 def main():
143 print 'main' 158 print 'main'
144 if len(sys.argv) == 0: 159 if len(sys.argv) == 0:
145 print 'Script pathname not known, giving up.' 160 print 'Script pathname not known, giving up.'
146 return 1 161 return 1
147 162
148 arch, mode, system = GetBuildInfo() 163 arch, mode, system, browser = GetBuildInfo()
149 print "arch: %s, mode: %s, system: %s" % (arch, mode, system) 164 print "arch: %s, mode: %s, system: %s, browser %s" % (arch, mode, system,
165 browser)
150 if arch is None: 166 if arch is None:
151 return 1 167 return 1
152 168
153 if arch == 'frogium':
154 mode = 'release'
155 status = BuildFrog(arch, mode, system) 169 status = BuildFrog(arch, mode, system)
156 if status != 0: 170 if status != 0:
157 print '@@@STEP_FAILURE@@@' 171 print '@@@STEP_FAILURE@@@'
158 return status 172 return status
159 173
160 if arch != 'frogium': 174 if arch != 'frogium':
161 status = TestFrog(arch, mode, system, []) 175 status = TestFrog(arch, mode, system, browser, [])
162 if status != 0: 176 if status != 0:
163 print '@@@STEP_FAILURE@@@' 177 print '@@@STEP_FAILURE@@@'
164 return status 178 return status
165 179
166 status = TestFrog(arch, mode, system, ['--checked']) 180 status = TestFrog(arch, mode, system, browser, ['--checked'])
167 if status != 0: 181 if status != 0:
168 print '@@@STEP_FAILURE@@@' 182 print '@@@STEP_FAILURE@@@'
169 183
170 return status 184 return status
171 185
172 186
173 if __name__ == '__main__': 187 if __name__ == '__main__':
174 sys.exit(main()) 188 sys.exit(main())
OLDNEW
« no previous file with comments | « client/tools/buildbot_annotated_steps.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698