Fixed flunk settings: the builds show now halt only when compile and sync-kind operations fail.
Fixed most flunk settings. BUG= TEST= Review URL: https://webrtc-codereview.appspot.com/401003 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1731 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@@ -99,7 +99,7 @@ class WebRTCFactory(factory.BuildFactory):
|
|||||||
self.EnableTest(test)
|
self.EnableTest(test)
|
||||||
|
|
||||||
def AddCommonStep(self, cmd, descriptor='', workdir='build',
|
def AddCommonStep(self, cmd, descriptor='', workdir='build',
|
||||||
warn_on_failure=False,):
|
halt_build_on_failure=True, warn_on_failure=False):
|
||||||
"""Adds a common step which will run as a shell command on the slave.
|
"""Adds a common step which will run as a shell command on the slave.
|
||||||
|
|
||||||
A common step can be anything except a test execution step.
|
A common step can be anything except a test execution step.
|
||||||
@@ -110,8 +110,11 @@ class WebRTCFactory(factory.BuildFactory):
|
|||||||
descriptor: A string, or a list of strings, describing what the step
|
descriptor: A string, or a list of strings, describing what the step
|
||||||
does. The descriptor gets printed in the waterfall display.
|
does. The descriptor gets printed in the waterfall display.
|
||||||
workdir: The working directory to run the command in.
|
workdir: The working directory to run the command in.
|
||||||
warnOnFailure: Enable if you want a warning on failure instead of
|
halt_build_on_failure: Stops the build dead in its tracks if this step
|
||||||
an error. Enable for less critical commands.
|
fails. Use for critical steps. This option does not make sense with
|
||||||
|
warn_on_failure.
|
||||||
|
warn_on_failure: If true, this step isn't that important and will not
|
||||||
|
cause a failed build on failure.
|
||||||
"""
|
"""
|
||||||
if type(descriptor) is str:
|
if type(descriptor) is str:
|
||||||
descriptor = [descriptor]
|
descriptor = [descriptor]
|
||||||
@@ -122,12 +125,16 @@ class WebRTCFactory(factory.BuildFactory):
|
|||||||
descriptionDone=descriptor + ['done...'],
|
descriptionDone=descriptor + ['done...'],
|
||||||
warnOnFailure=warn_on_failure,
|
warnOnFailure=warn_on_failure,
|
||||||
flunkOnFailure=flunk_on_failure,
|
flunkOnFailure=flunk_on_failure,
|
||||||
|
haltOnFailure=halt_build_on_failure,
|
||||||
name=''.join(descriptor)))
|
name=''.join(descriptor)))
|
||||||
|
|
||||||
def AddCommonTestRunStep(self, test, descriptor='', cmd=None,
|
def AddCommonTestRunStep(self, test, descriptor='', cmd=None,
|
||||||
workdir='build/trunk'):
|
workdir='build/trunk'):
|
||||||
"""Adds a step for running a single test [must be overridden].
|
"""Adds a step for running a single test [must be overridden].
|
||||||
|
|
||||||
|
In general, failing tests should not halt the build and allow other tests
|
||||||
|
to execute. A failing test should fail, or 'flunk', the build though.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
test: The test binary name. The step will attempt to execute this
|
test: The test binary name. The step will attempt to execute this
|
||||||
binary in the binary output folder, except if the cmd argument is
|
binary in the binary output folder, except if the cmd argument is
|
||||||
@@ -161,7 +168,7 @@ class WebRTCFactory(factory.BuildFactory):
|
|||||||
"""Helper method for invoking GYP on WebRTC.
|
"""Helper method for invoking GYP on WebRTC.
|
||||||
|
|
||||||
GYP will generate makefiles or its equivalent in a platform-specific
|
GYP will generate makefiles or its equivalent in a platform-specific
|
||||||
manner.
|
manner. A failed GYP step will halt the build.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
gyp_file: The root GYP file to use.
|
gyp_file: The root GYP file to use.
|
||||||
@@ -174,6 +181,7 @@ class WebRTCFactory(factory.BuildFactory):
|
|||||||
self.addStep(shell.ShellCommand(command=cmd, workdir='build/trunk',
|
self.addStep(shell.ShellCommand(command=cmd, workdir='build/trunk',
|
||||||
description=[descriptor, 'running...'],
|
description=[descriptor, 'running...'],
|
||||||
descriptionDone=[descriptor, 'done...'],
|
descriptionDone=[descriptor, 'done...'],
|
||||||
|
haltOnFailure=True,
|
||||||
name='gyp_%s' % descriptor))
|
name='gyp_%s' % descriptor))
|
||||||
|
|
||||||
class GenerateCodeCoverage(ShellCommand):
|
class GenerateCodeCoverage(ShellCommand):
|
||||||
@@ -197,7 +205,6 @@ class GenerateCodeCoverage(ShellCommand):
|
|||||||
coverage_dir: Where to write coverage HTML.
|
coverage_dir: Where to write coverage HTML.
|
||||||
coverage_file: The LCOV file to generate the coverage from.
|
coverage_file: The LCOV file to generate the coverage from.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
ShellCommand.__init__(self, **kwargs)
|
ShellCommand.__init__(self, **kwargs)
|
||||||
self.addFactoryArguments(coverage_url=coverage_url,
|
self.addFactoryArguments(coverage_url=coverage_url,
|
||||||
coverage_dir=coverage_dir,
|
coverage_dir=coverage_dir,
|
||||||
@@ -207,6 +214,8 @@ class GenerateCodeCoverage(ShellCommand):
|
|||||||
self.coverage_dir = coverage_dir
|
self.coverage_dir = coverage_dir
|
||||||
self.coverage_file = coverage_file
|
self.coverage_file = coverage_file
|
||||||
self.description = ["Coverage Report"]
|
self.description = ["Coverage Report"]
|
||||||
|
self.warnOnFailure = True
|
||||||
|
self.flunkOnFailure = False
|
||||||
output_dir = os.path.join(coverage_dir,
|
output_dir = os.path.join(coverage_dir,
|
||||||
'%(buildername)s_%(buildnumber)s')
|
'%(buildername)s_%(buildnumber)s')
|
||||||
self.setCommand(['./tools/continuous_build/generate_coverage_html.sh',
|
self.setCommand(['./tools/continuous_build/generate_coverage_html.sh',
|
||||||
@@ -238,18 +247,16 @@ class WebRTCAndroidFactory(WebRTCFactory):
|
|||||||
]
|
]
|
||||||
cmd = ' ; '.join(cleanup_list)
|
cmd = ' ; '.join(cleanup_list)
|
||||||
self.addStep(shell.Compile(command=(cmd), workdir='build/trunk',
|
self.addStep(shell.Compile(command=(cmd), workdir='build/trunk',
|
||||||
description=['cleanup', 'running...'], haltOnFailure=False,
|
description=['cleanup', 'running...'],
|
||||||
warnOnFailure=True, flunkOnFailure=False,
|
|
||||||
descriptionDone=['cleanup', 'done...'], name='cleanup'))
|
descriptionDone=['cleanup', 'done...'], name='cleanup'))
|
||||||
cmd = 'svn checkout %s external/webrtc' % SVN_LOCATION
|
cmd = 'svn checkout %s external/webrtc' % SVN_LOCATION
|
||||||
self.addStep(shell.Compile(command=(cmd),
|
self.addStep(shell.Compile(command=(cmd),
|
||||||
workdir='build/trunk', description=['svn', 'running...'],
|
workdir='build/trunk', description=['svn', 'running...'],
|
||||||
haltOnFailure=False, descriptionDone=['svn', 'done...'], name='svn'))
|
descriptionDone=['svn', 'done...'], name='svn'))
|
||||||
cmd = ('source build/envsetup.sh && lunch full_%s-eng '
|
cmd = ('source build/envsetup.sh && lunch full_%s-eng '
|
||||||
'&& mmm external/webrtc showcommands' % product)
|
'&& mmm external/webrtc showcommands' % product)
|
||||||
self.addStep(shell.Compile(command=(cmd),
|
self.addStep(shell.Compile(command=(cmd),
|
||||||
workdir='build/trunk', description=['build', 'running...'],
|
workdir='build/trunk', description=['build', 'running...'],
|
||||||
haltOnFailure=False,
|
|
||||||
descriptionDone=['build', 'done...'], name='build'))
|
descriptionDone=['build', 'done...'], name='build'))
|
||||||
|
|
||||||
|
|
||||||
@@ -273,6 +280,7 @@ class WebRTCChromeFactory(WebRTCFactory):
|
|||||||
self.addStep(shell.ShellCommand(command=cmd,
|
self.addStep(shell.ShellCommand(command=cmd,
|
||||||
workdir='build/src', description=['Making'] + make_descriptor,
|
workdir='build/src', description=['Making'] + make_descriptor,
|
||||||
descriptionDone=make_descriptor + ['built'],
|
descriptionDone=make_descriptor + ['built'],
|
||||||
|
haltOnFailure=True,
|
||||||
name='_'.join(make_descriptor)))
|
name='_'.join(make_descriptor)))
|
||||||
|
|
||||||
|
|
||||||
@@ -299,7 +307,6 @@ class WebRTCLinuxFactory(WebRTCFactory):
|
|||||||
coverage_dir: See the GenerateCodeCoverage command's contract for
|
coverage_dir: See the GenerateCodeCoverage command's contract for
|
||||||
this argument.
|
this argument.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert self.build_enabled is False
|
assert self.build_enabled is False
|
||||||
|
|
||||||
self.coverage_enabled = True
|
self.coverage_enabled = True
|
||||||
@@ -315,7 +322,8 @@ class WebRTCLinuxFactory(WebRTCFactory):
|
|||||||
self.force_sync = force_sync
|
self.force_sync = force_sync
|
||||||
self.release = release
|
self.release = release
|
||||||
|
|
||||||
self.AddCommonStep(['rm', '-rf', 'trunk'], descriptor='Cleanup')
|
self.AddCommonStep(['rm', '-rf', 'trunk'], descriptor='Cleanup',
|
||||||
|
warn_on_failure=True, halt_build_on_failure=False)
|
||||||
|
|
||||||
# Valgrind bots need special GYP defines to enable memory profiling
|
# Valgrind bots need special GYP defines to enable memory profiling
|
||||||
# friendly compilation. They already has a custom .gclient configuration
|
# friendly compilation. They already has a custom .gclient configuration
|
||||||
@@ -377,6 +385,7 @@ class WebRTCLinuxFactory(WebRTCFactory):
|
|||||||
cmd.append(make_extra)
|
cmd.append(make_extra)
|
||||||
self.addStep(shell.ShellCommand(command=cmd,
|
self.addStep(shell.ShellCommand(command=cmd,
|
||||||
workdir='build/trunk', description=['Making'] + make_descriptor,
|
workdir='build/trunk', description=['Making'] + make_descriptor,
|
||||||
|
haltOnFailure=True,
|
||||||
descriptionDone=make_descriptor + ['built'],
|
descriptionDone=make_descriptor + ['built'],
|
||||||
name='_'.join(make_descriptor)))
|
name='_'.join(make_descriptor)))
|
||||||
|
|
||||||
@@ -386,11 +395,13 @@ class WebRTCLinuxFactory(WebRTCFactory):
|
|||||||
'--output-file', 'webrtc_base.info'],
|
'--output-file', 'webrtc_base.info'],
|
||||||
workdir='build/trunk',
|
workdir='build/trunk',
|
||||||
warn_on_failure=True,
|
warn_on_failure=True,
|
||||||
|
halt_build_on_failure=False,
|
||||||
descriptor=['LCOV', 'Baseline', 'Capture'])
|
descriptor=['LCOV', 'Baseline', 'Capture'])
|
||||||
self.AddCommonStep(['lcov', '--extract', 'webrtc_base.info', '*/src/*',
|
self.AddCommonStep(['lcov', '--extract', 'webrtc_base.info', '*/src/*',
|
||||||
'--output', 'filtered.info'],
|
'--output', 'filtered.info'],
|
||||||
workdir='build/trunk',
|
workdir='build/trunk',
|
||||||
warn_on_failure=True,
|
warn_on_failure=True,
|
||||||
|
halt_build_on_failure=False,
|
||||||
descriptor=['LCOV', 'Baseline', 'Extract'])
|
descriptor=['LCOV', 'Baseline', 'Extract'])
|
||||||
self.AddCommonStep(['lcov', '--remove', 'filtered.info', '*/usr/include/*',
|
self.AddCommonStep(['lcov', '--remove', 'filtered.info', '*/usr/include/*',
|
||||||
'/third*', '/testing/*', '*/test/*', '*_unittest.*',
|
'/third*', '/testing/*', '*/test/*', '*_unittest.*',
|
||||||
@@ -398,6 +409,7 @@ class WebRTCLinuxFactory(WebRTCFactory):
|
|||||||
'webrtc_base_filtered_final.info'],
|
'webrtc_base_filtered_final.info'],
|
||||||
workdir='build/trunk',
|
workdir='build/trunk',
|
||||||
warn_on_failure=True,
|
warn_on_failure=True,
|
||||||
|
halt_build_on_failure=False,
|
||||||
descriptor=['LCOV', 'Baseline', 'Filter'])
|
descriptor=['LCOV', 'Baseline', 'Filter'])
|
||||||
|
|
||||||
def AddStepsToComputeCoverage(self):
|
def AddStepsToComputeCoverage(self):
|
||||||
@@ -407,23 +419,31 @@ class WebRTCLinuxFactory(WebRTCFactory):
|
|||||||
# in lcov which tends to hang when capturing on libjpgturbo.
|
# in lcov which tends to hang when capturing on libjpgturbo.
|
||||||
self.AddCommonStep(['./tools/continuous_build/clean_third_party_gcda.sh'],
|
self.AddCommonStep(['./tools/continuous_build/clean_third_party_gcda.sh'],
|
||||||
warn_on_failure=True,
|
warn_on_failure=True,
|
||||||
|
halt_build_on_failure=False,
|
||||||
workdir='build/trunk', descriptor=['LCOV',
|
workdir='build/trunk', descriptor=['LCOV',
|
||||||
'Delete 3rd party'])
|
'Delete 3rd party'])
|
||||||
|
|
||||||
self.AddCommonStep(['lcov', '--directory', '.', '--capture', '-b',
|
self.AddCommonStep(['lcov', '--directory', '.', '--capture', '-b',
|
||||||
'.', '--output-file', 'webrtc.info'],
|
'.', '--output-file', 'webrtc.info'],
|
||||||
warn_on_failure=True,
|
warn_on_failure=True,
|
||||||
|
halt_build_on_failure=False,
|
||||||
workdir='build/trunk', descriptor=['LCOV', 'Capture'])
|
workdir='build/trunk', descriptor=['LCOV', 'Capture'])
|
||||||
self.AddCommonStep(['lcov', '--extract', 'webrtc.info', '*/src/*',
|
self.AddCommonStep(['lcov', '--extract', 'webrtc.info', '*/src/*',
|
||||||
'--output', 'test.info'], warn_on_failure=True,
|
'--output', 'test.info'],
|
||||||
|
warn_on_failure=True,
|
||||||
|
halt_build_on_failure=False,
|
||||||
workdir='build/trunk', descriptor=['LCOV', 'Extract'])
|
workdir='build/trunk', descriptor=['LCOV', 'Extract'])
|
||||||
self.AddCommonStep(['lcov', '--remove', 'test.info', '*/usr/include/*',
|
self.AddCommonStep(['lcov', '--remove', 'test.info', '*/usr/include/*',
|
||||||
'/third*', '/testing/*', '*/test/*', '*_unittest.*',
|
'/third*', '/testing/*', '*/test/*', '*_unittest.*',
|
||||||
'*/mock/*', '--output',
|
'*/mock/*', '--output',
|
||||||
'final.info'], warn_on_failure=True,
|
'final.info'],
|
||||||
|
warn_on_failure=True,
|
||||||
|
halt_build_on_failure=False,
|
||||||
workdir='build/trunk', descriptor=['LCOV', 'Filter'])
|
workdir='build/trunk', descriptor=['LCOV', 'Filter'])
|
||||||
self.AddCommonStep(['lcov', '-a', 'webrtc_base_filtered_final.info', '-a',
|
self.AddCommonStep(['lcov', '-a', 'webrtc_base_filtered_final.info', '-a',
|
||||||
'final.info', '-o', 'final.info'], warn_on_failure=True,
|
'final.info', '-o', 'final.info'],
|
||||||
|
warn_on_failure=True,
|
||||||
|
halt_build_on_failure=False,
|
||||||
workdir='build/trunk', descriptor=['LCOV', 'Merge'])
|
workdir='build/trunk', descriptor=['LCOV', 'Merge'])
|
||||||
self.addStep(GenerateCodeCoverage(coverage_url=self.coverage_url,
|
self.addStep(GenerateCodeCoverage(coverage_url=self.coverage_url,
|
||||||
coverage_dir=self.coverage_dir,
|
coverage_dir=self.coverage_dir,
|
||||||
@@ -471,7 +491,7 @@ class WebRTCLinuxFactory(WebRTCFactory):
|
|||||||
elif test == "voe_auto_test":
|
elif test == "voe_auto_test":
|
||||||
# TODO(phoglund): Remove this notice and take appropriate action when
|
# TODO(phoglund): Remove this notice and take appropriate action when
|
||||||
# http://code.google.com/p/webrtc/issues/detail?id=266 is concluded.
|
# http://code.google.com/p/webrtc/issues/detail?id=266 is concluded.
|
||||||
self.addStep(shell.Compile(
|
self.addStep(shell.ShellCommand(
|
||||||
command=('out/Debug/voe_auto_test --automated '
|
command=('out/Debug/voe_auto_test --automated '
|
||||||
'--gtest_filter="-VolumeTest.*"'),
|
'--gtest_filter="-VolumeTest.*"'),
|
||||||
workdir='build/trunk', description=[test, 'running...'],
|
workdir='build/trunk', description=[test, 'running...'],
|
||||||
@@ -492,7 +512,7 @@ class WebRTCMacFactory(WebRTCFactory):
|
|||||||
self.build_enabled = True
|
self.build_enabled = True
|
||||||
self.force_sync = force_sync
|
self.force_sync = force_sync
|
||||||
self.release = release
|
self.release = release
|
||||||
"""Mac specific Build"""
|
|
||||||
if build_type not in self.allowed_build_types:
|
if build_type not in self.allowed_build_types:
|
||||||
print '*** INCORRECT BUILD TYPE (%s)!!! ***' % build_type
|
print '*** INCORRECT BUILD TYPE (%s)!!! ***' % build_type
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
@@ -599,10 +619,12 @@ class WebRTCWinFactory(WebRTCFactory):
|
|||||||
if self.configuration == 'Debug' or self.configuration == 'both':
|
if self.configuration == 'Debug' or self.configuration == 'both':
|
||||||
cmd = ['build\Debug\%s.exe' % test]
|
cmd = ['build\Debug\%s.exe' % test]
|
||||||
self.AddCommonStep(cmd, descriptor=test_descriptor + ['Debug'],
|
self.AddCommonStep(cmd, descriptor=test_descriptor + ['Debug'],
|
||||||
|
halt_build_on_failure=False,
|
||||||
workdir=workdir)
|
workdir=workdir)
|
||||||
if self.configuration == 'Release' or self.configuration == 'both':
|
if self.configuration == 'Release' or self.configuration == 'both':
|
||||||
cmd = ['build\Release\%s.exe' % test]
|
cmd = ['build\Release\%s.exe' % test]
|
||||||
self.AddCommonStep(cmd, descriptor=test_descriptor + ['Release'],
|
self.AddCommonStep(cmd, descriptor=test_descriptor + ['Release'],
|
||||||
|
halt_build_on_failure=False,
|
||||||
workdir=workdir)
|
workdir=workdir)
|
||||||
|
|
||||||
# Utility functions
|
# Utility functions
|
||||||
|
|||||||
Reference in New Issue
Block a user