diff --git a/etc/ci/buildbot_steps.yml b/etc/ci/buildbot_steps.yml index 4a944e5808d..8d0a1117696 100644 --- a/etc/ci/buildbot_steps.yml +++ b/etc/ci/buildbot_steps.yml @@ -2,7 +2,7 @@ mac-rel-wpt1: - ./mach build --release - ./mach test-wpt-failure - ./mach test-wpt --release --processes 8 --total-chunks 2 --this-chunk 1 --log-raw test-wpt.log --log-errorsummary wpt-errorsummary.log --always-succeed - - ./mach filter-intermittents wpt-errorsummary.log --output filtered-wpt-errorsummary.log + - ./mach filter-intermittents wpt-errorsummary.log --output filtered-wpt-errorsummary.log --use-tracker - ./mach test-wpt --release --binary-arg=--multiprocess --processes 8 --log-raw test-wpt-mp.log --log-errorsummary wpt-mp-errorsummary.log eventsource - ./mach build-cef --release - bash ./etc/ci/lockfile_changed.sh @@ -10,7 +10,8 @@ mac-rel-wpt1: mac-rel-wpt2: - ./mach build --release - - ./mach test-wpt --release --processes 8 --total-chunks 2 --this-chunk 2 --log-raw test-wpt.log --log-errorsummary wpt-errorsummary.log + - ./mach test-wpt --release --processes 8 --total-chunks 2 --this-chunk 2 --log-raw test-wpt.log --log-errorsummary wpt-errorsummary.log --always-succeed + - ./mach filter-intermittents wpt-errorsummary.log --output filtered-wpt-errorsummary.log --use-tracker mac-dev-unit: - ./mach build --dev @@ -23,7 +24,7 @@ mac-dev-unit: mac-rel-css: - ./mach build --release - ./mach test-css --release --processes 4 --log-raw test-css.log --log-errorsummary css-errorsummary.log --always-succeed - - ./mach filter-intermittents css-errorsummary.log --output filtered-css-errorsummary.log + - ./mach filter-intermittents css-errorsummary.log --output filtered-css-errorsummary.log --use-tracker - ./mach build-geckolib --release - bash ./etc/ci/lockfile_changed.sh - bash ./etc/ci/manifest_changed.sh @@ -60,13 +61,13 @@ linux-rel-wpt: - ./mach build --release --with-debug-assertions - ./mach test-wpt-failure - ./mach test-wpt --release --processes 24 --log-raw test-wpt.log --log-errorsummary wpt-errorsummary.log --always-succeed - - ./mach filter-intermittents wpt-errorsummary.log --output filtered-wpt-errorsummary.log + - ./mach filter-intermittents wpt-errorsummary.log --output filtered-wpt-errorsummary.log --use-tracker - ./mach test-wpt --release --binary-arg=--multiprocess --processes 24 --log-raw test-wpt-mp.log --log-errorsummary wpt-mp-errorsummary.log eventsource linux-rel-css: - ./mach build --release --with-debug-assertions - ./mach test-css --release --processes 16 --log-raw test-css.log --log-errorsummary css-errorsummary.log --always-succeed - - ./mach filter-intermittents css-errorsummary.log --output filtered-css-errorsummary.log + - ./mach filter-intermittents css-errorsummary.log --output filtered-css-errorsummary.log --use-tracker - ./mach build-cef --release --with-debug-assertions - ./mach build-geckolib --release - ./mach test-stylo --release diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 1db3b4fb1bf..6b48158137c 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -488,7 +488,9 @@ class MachCommands(CommandBase): help='Print filtered log to file') @CommandArgument('--auth', default=None, help='File containing basic authorization credentials for Github API (format `username:password`)') - def filter_intermittents(self, summary, output, auth): + @CommandArgument('--use-tracker', default=False, action='store_true', + help='Use https://www.joshmatthews.net/intermittent-tracker') + def filter_intermittents(self, summary, output, auth, use_tracker): encoded_auth = None if auth: with open(auth, "r") as file: @@ -501,16 +503,24 @@ class MachCommands(CommandBase): failures += [line_json] actual_failures = [] for failure in failures: - qstr = "repo:servo/servo+label:I-intermittent+type:issue+state:open+%s" % failure['test'] - # we want `/` to get quoted, but not `+` (github's API doesn't like that), so we set `safe` to `+` - query = urllib2.quote(qstr, safe='+') - request = urllib2.Request("https://api.github.com/search/issues?q=%s" % query) - if encoded_auth: - request.add_header("Authorization", "Basic %s" % encoded_auth) - search = urllib2.urlopen(request) - data = json.load(search) - if data['total_count'] == 0: - actual_failures += [failure] + if use_tracker: + query = urllib2.quote(failure['test'], safe='') + request = urllib2.Request("https://www.joshmatthews.net/intermittent-tracker/query.py?name=%s" % query) + search = urllib2.urlopen(request) + data = json.load(search) + if len(data) == 0: + actual_failures += [failure] + else: + qstr = "repo:servo/servo+label:I-intermittent+type:issue+state:open+%s" % failure['test'] + # we want `/` to get quoted, but not `+` (github's API doesn't like that), so we set `safe` to `+` + query = urllib2.quote(qstr, safe='+') + request = urllib2.Request("https://api.github.com/search/issues?q=%s" % query) + if encoded_auth: + request.add_header("Authorization", "Basic %s" % encoded_auth) + search = urllib2.urlopen(request) + data = json.load(search) + if data['total_count'] == 0: + actual_failures += [failure] if len(actual_failures) == 0: return 0