WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-46698-20100927225904.patch (text/plain), 8.23 KB, created by
Adam Barth
on 2010-09-27 22:59:05 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Adam Barth
Created:
2010-09-27 22:59:05 PDT
Size:
8.23 KB
patch
obsolete
>diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog >index 5511a5ce44aac39ec070b99629a244207aa69233..193df1d22ecbe8928e8b6e5af9840e5a8b2229fa 100644 >--- a/WebKitTools/ChangeLog >+++ b/WebKitTools/ChangeLog >@@ -2,6 +2,20 @@ > > Reviewed by NOBODY (OOPS!). > >+ Move RegressionWindow further up the dependency chain >+ https://bugs.webkit.org/show_bug.cgi?id=46698 >+ >+ Baby steps towards pushing this information into bug posts. >+ >+ * Scripts/webkitpy/common/net/buildbot.py: >+ * Scripts/webkitpy/common/net/buildbot_unittest.py: >+ * Scripts/webkitpy/common/net/regressionwindow.py: >+ * Scripts/webkitpy/tool/commands/queries.py: >+ >+2010-09-27 Adam Barth <abarth@webkit.org> >+ >+ Reviewed by NOBODY (OOPS!). >+ > Expose more more failure information from Buildbot to SheriffBot > https://bugs.webkit.org/show_bug.cgi?id=46697 > >diff --git a/WebKitTools/Scripts/webkitpy/common/net/buildbot.py b/WebKitTools/Scripts/webkitpy/common/net/buildbot.py >index 91f6383f2a39860e35c0e060a2bb77ffda92d3b6..90e5e97c277d07c4c77cc55ecac8cad675ed5ad2 100644 >--- a/WebKitTools/Scripts/webkitpy/common/net/buildbot.py >+++ b/WebKitTools/Scripts/webkitpy/common/net/buildbot.py >@@ -182,16 +182,16 @@ class Builder(object): > # with red build, so we've found our failure transition. > return RegressionWindow(current_build, build_after_current_build, common_failures=common_failures) > >- def blameworthy_revisions(self, red_build_number, look_back_limit=30, avoid_flakey_tests=True): >+ def find_blameworthy_regression_window(self, red_build_number, look_back_limit=30, avoid_flakey_tests=True): > red_build = self.build(red_build_number) > regression_window = self.find_regression_window(red_build, look_back_limit) > if not regression_window.build_before_failure(): >- return [] # We ran off the limit of our search >+ return None # We ran off the limit of our search > # If avoid_flakey_tests, require at least 2 bad builds before we > # suspect a real failure transition. > if avoid_flakey_tests and regression_window.failing_build() == red_build: >- return [] >- return regression_window.suspect_revisions() >+ return None >+ return regression_window > > > # FIXME: This should be unified with all the layout test results code in the layout_tests package >@@ -458,7 +458,8 @@ class BuildBot(object): > if builder_status["is_green"]: > continue > builder = self.builder_with_name(builder_status["name"]) >- revisions = builder.blameworthy_revisions(builder_status["build_number"]) >+ regression_window = builder.find_blameworthy_regression_window(builder_status["build_number"]) >+ revisions = regression_window.revisions() if regression_window else [] > for revision in revisions: > failing_bots = revision_to_failing_bots.get(revision, []) > failing_bots.append(builder) >diff --git a/WebKitTools/Scripts/webkitpy/common/net/buildbot_unittest.py b/WebKitTools/Scripts/webkitpy/common/net/buildbot_unittest.py >index fcc1426e64bee67d391a57e43ad5d634a6f364d0..c99ab325cdfff28828d7dcf878d14c23454f8768 100644 >--- a/WebKitTools/Scripts/webkitpy/common/net/buildbot_unittest.py >+++ b/WebKitTools/Scripts/webkitpy/common/net/buildbot_unittest.py >@@ -93,14 +93,14 @@ class BuilderTest(unittest.TestCase): > self.assertEqual(regression_window.build_before_failure().revision(), 1006) > self.assertEqual(regression_window.failing_build().revision(), 1007) > >- def test_blameworthy_revisions(self): >- self.assertEqual(self.builder.blameworthy_revisions(10), [1004]) >- self.assertEqual(self.builder.blameworthy_revisions(10, look_back_limit=2), []) >+ def test_find_blameworthy_regression_window(self): >+ self.assertEqual(self.builder.find_blameworthy_regression_window(10).revisions(), [1004]) >+ self.assertEqual(self.builder.find_blameworthy_regression_window(10, look_back_limit=2), None) > # Flakey test avoidance requires at least 2 red builds: >- self.assertEqual(self.builder.blameworthy_revisions(4), []) >- self.assertEqual(self.builder.blameworthy_revisions(4, avoid_flakey_tests=False), [1004]) >+ self.assertEqual(self.builder.find_blameworthy_regression_window(4), None) >+ self.assertEqual(self.builder.find_blameworthy_regression_window(4, avoid_flakey_tests=False).revisions(), [1004]) > # Green builder: >- self.assertEqual(self.builder.blameworthy_revisions(3), []) >+ self.assertEqual(self.builder.find_blameworthy_regression_window(3), None) > > def test_build_caching(self): > self.assertEqual(self.builder.build(10), self.builder.build(10)) >diff --git a/WebKitTools/Scripts/webkitpy/common/net/regressionwindow.py b/WebKitTools/Scripts/webkitpy/common/net/regressionwindow.py >index 7020f6211fb4cca3726767d70c1da078e3ec6365..231459f9fc6754660dd9576338dfb29c1fd41e5e 100644 >--- a/WebKitTools/Scripts/webkitpy/common/net/regressionwindow.py >+++ b/WebKitTools/Scripts/webkitpy/common/net/regressionwindow.py >@@ -42,7 +42,7 @@ class RegressionWindow(object): > def common_failures(self): > return self._common_failures > >- def suspect_revisions(self): >+ def revisions(self): > revisions = range(self._failing_build.revision(), self._build_before_failure.revision(), -1) > revisions.reverse() > return revisions >diff --git a/WebKitTools/Scripts/webkitpy/tool/commands/queries.py b/WebKitTools/Scripts/webkitpy/tool/commands/queries.py >index 73b889a0354e04166fd8afd9c7e10ef9f2929a22..51c60b654e75f5634ec8a4997eb7c17039d2ee62 100644 >--- a/WebKitTools/Scripts/webkitpy/tool/commands/queries.py >+++ b/WebKitTools/Scripts/webkitpy/tool/commands/queries.py >@@ -123,8 +123,6 @@ class WhatBroke(AbstractDeclarativeCommand): > def _print_builder_line(self, builder_name, max_name_width, status_message): > print "%s : %s" % (builder_name.ljust(max_name_width), status_message) > >- # FIXME: This is slightly different from Builder.suspect_revisions_for_green_to_red_transition >- # due to needing to detect the "hit the limit" case an print a special message. > def _print_blame_information_for_builder(self, builder_status, name_width, avoid_flakey_tests=True): > builder = self._tool.buildbot.builder_with_name(builder_status["name"]) > red_build = builder.build(builder_status["build_number"]) >@@ -136,12 +134,12 @@ class WhatBroke(AbstractDeclarativeCommand): > self._print_builder_line(builder.name(), name_width, "FAIL (blame-list: sometime before %s?)" % regression_window.failing_build().revision()) > return > >- suspect_revisions = regression_window.suspect_revisions() >+ revisions = regression_window.revisions() > first_failure_message = "" > if (regression_window.failing_build() == builder.build(builder_status["build_number"])): > first_failure_message = " FIRST FAILURE, possibly a flaky test" >- self._print_builder_line(builder.name(), name_width, "FAIL (blame-list: %s%s)" % (suspect_revisions, first_failure_message)) >- for revision in suspect_revisions: >+ self._print_builder_line(builder.name(), name_width, "FAIL (blame-list: %s%s)" % (revisions, first_failure_message)) >+ for revision in revisions: > commit_info = self._tool.checkout().commit_info_for_revision(revision) > if commit_info: > print commit_info.blame_string(self._tool.bugs) >@@ -201,10 +199,10 @@ class FailureReason(AbstractDeclarativeCommand): > > def _print_blame_information_for_transition(self, green_build, red_build, failing_tests): > regression_window = RegressionWindow(green_build, red_build) >- suspect_revisions = regression_window.suspect_revisions() >+ revisions = regression_window.revisions() > print "SUCCESS: Build %s (r%s) was the first to show failures: %s" % (red_build._number, red_build.revision(), failing_tests) > print "Suspect revisions:" >- for revision in suspect_revisions: >+ for revision in revisions: > commit_info = self._tool.checkout().commit_info_for_revision(revision) > if commit_info: > print commit_info.blame_string(self._tool.bugs)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 46698
: 69023