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

Side by Side Diff: third_party/WebKit/LayoutTests/imported/wpt/check_stability.py

Issue 2502433002: Import wpt@8dc7bfef80f5df47e14509d1496bdbc5ec24c91c (Closed)
Patch Set: Modify TestExpectations or download new baselines for tests. Created 4 years, 1 month 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
OLDNEW
1 from __future__ import print_function
2
1 import argparse 3 import argparse
2 import json 4 import json
3 import logging 5 import logging
4 import os 6 import os
5 import re 7 import re
6 import stat 8 import stat
7 import subprocess 9 import subprocess
8 import sys 10 import sys
9 import tarfile 11 import tarfile
10 import traceback 12 import traceback
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 def __init__(self, inner, actions): 70 def __init__(self, inner, actions):
69 BaseHandler.__init__(self, inner) 71 BaseHandler.__init__(self, inner)
70 self.inner = inner 72 self.inner = inner
71 self.actions = actions 73 self.actions = actions
72 74
73 def __call__(self, item): 75 def __call__(self, item):
74 if item["action"] in self.actions: 76 if item["action"] in self.actions:
75 return self.inner(item) 77 return self.inner(item)
76 78
77 79
80 class TravisFold(object):
81 def __init__(self, name):
82 self.name = name
83
84 def __enter__(self):
85 print("travis_fold:start:%s" % self.name, file=sys.stderr)
86
87 def __exit__(self, type, value, traceback):
88 print("travis_fold:end:%s" % self.name, file=sys.stderr)
89
90
78 class GitHub(object): 91 class GitHub(object):
79 def __init__(self, org, repo, token): 92 def __init__(self, org, repo, token):
80 self.token = token 93 self.token = token
81 self.headers = {"Accept": "application/vnd.github.v3+json"} 94 self.headers = {"Accept": "application/vnd.github.v3+json"}
82 self.auth = (self.token, "x-oauth-basic") 95 self.auth = (self.token, "x-oauth-basic")
83 self.org = org 96 self.org = org
84 self.repo = repo 97 self.repo = repo
85 self.base_url = "https://api.github.com/repos/%s/%s/" % (org, repo) 98 self.base_url = "https://api.github.com/repos/%s/%s/" % (org, repo)
86 99
87 def _headers(self, headers): 100 def _headers(self, headers):
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 return 1 504 return 1
492 505
493 os.chdir(args.root) 506 os.chdir(args.root)
494 507
495 if args.gh_token: 508 if args.gh_token:
496 gh_handler = setup_github_logging(args) 509 gh_handler = setup_github_logging(args)
497 else: 510 else:
498 logger.warning("Can't log to GitHub") 511 logger.warning("Can't log to GitHub")
499 gh_handler = None 512 gh_handler = None
500 513
501 print >> sys.stderr, "travis_fold:start:browser_setup" 514 with TravisFold("browser_setup"):
502 logger.info("# %s #" % args.browser.title()) 515 logger.info("# %s #" % args.browser.title())
503 516
504 browser_cls = {"firefox": Firefox, 517 browser_cls = {"firefox": Firefox,
505 "chrome": Chrome}.get(args.browser) 518 "chrome": Chrome}.get(args.browser)
506 if browser_cls is None: 519 if browser_cls is None:
507 logger.critical("Unrecognised browser %s" % args.browser) 520 logger.critical("Unrecognised browser %s" % args.browser)
508 return 1 521 return 1
509 522
510 fetch_wpt_master() 523 fetch_wpt_master()
511 524
512 head_sha1 = get_sha1() 525 head_sha1 = get_sha1()
513 logger.info("Testing revision %s" % head_sha1) 526 logger.info("Testing revision %s" % head_sha1)
514 527
515 # For now just pass the whole list of changed files to wptrunner and 528 # For now just pass the whole list of changed files to wptrunner and
516 # assume that it will run everything that's actually a test 529 # assume that it will run everything that's actually a test
517 files_changed = get_files_changed() 530 files_changed = get_files_changed()
518 531
519 if not files_changed: 532 if not files_changed:
520 logger.info("No files changed") 533 logger.info("No files changed")
521 return 0 534 return 0
522 535
523 build_manifest() 536 build_manifest()
524 install_wptrunner() 537 install_wptrunner()
525 do_delayed_imports() 538 do_delayed_imports()
526 539
527 logger.debug("Files changed:\n%s" % "".join(" * %s\n" % item for item in fil es_changed)) 540 logger.debug("Files changed:\n%s" % "".join(" * %s\n" % item for item in files_changed))
528 541
529 browser = browser_cls(args.gh_token) 542 browser = browser_cls(args.gh_token)
530 543
531 browser.install() 544 browser.install()
532 browser.install_webdriver() 545 browser.install_webdriver()
533 546
534 kwargs = wptrunner_args(args.root, 547 kwargs = wptrunner_args(args.root,
535 files_changed, 548 files_changed,
536 args.iterations, 549 args.iterations,
537 browser) 550 browser)
538 551
539 print >> sys.stderr, "travis_fold:end:browser_setup" 552 with TravisFold("running_tests"):
540 print >> sys.stderr, "travis_fold:start:running_tests" 553 logger.info("Starting %i test iterations" % args.iterations)
541 logger.info("Starting %i test iterations" % args.iterations) 554 with open("raw.log", "wb") as log:
542 with open("raw.log", "wb") as log: 555 wptrunner.setup_logging(kwargs,
543 wptrunner.setup_logging(kwargs, 556 {"raw": log})
544 {"raw": log}) 557 # Setup logging for wptrunner that keeps process output and
545 # Setup logging for wptrunner that keeps process output and 558 # warning+ level logs only
546 # warning+ level logs only 559 wptrunner.logger.add_handler(
547 wptrunner.logger.add_handler( 560 LogActionFilter(
548 LogActionFilter( 561 LogLevelFilter(
549 LogLevelFilter( 562 StreamHandler(
550 StreamHandler( 563 sys.stdout,
551 sys.stdout, 564 TbplFormatter()
552 TbplFormatter() 565 ),
553 ), 566 "WARNING"),
554 "WARNING"), 567 ["log", "process_output"]))
555 ["log", "process_output"]))
556 568
557 wptrunner.run_tests(**kwargs) 569 wptrunner.run_tests(**kwargs)
558 570
559 with open("raw.log", "rb") as log: 571 with open("raw.log", "rb") as log:
560 results, inconsistent = process_results(log, args.iterations) 572 results, inconsistent = process_results(log, args.iterations)
561
562 print >> sys.stderr, "travis_fold:end:running_tests"
563 573
564 if results: 574 if results:
565 if inconsistent: 575 if inconsistent:
566 write_inconsistent(inconsistent, args.iterations) 576 write_inconsistent(inconsistent, args.iterations)
567 retcode = 2 577 retcode = 2
568 else: 578 else:
569 logger.info("All results were stable\n") 579 logger.info("All results were stable\n")
570 print >> sys.stderr, "travis_fold:start:full_results" 580 with TravisFold("full_results"):
571 write_results(results, args.iterations, args.comment_pr) 581 write_results(results, args.iterations, args.comment_pr)
572 print >> sys.stderr, "travis_fold:end:full_results"
573 else: 582 else:
574 logger.info("No tests run.") 583 logger.info("No tests run.")
575 584
576 try: 585 try:
577 if gh_handler: 586 if gh_handler:
578 gh_handler.send() 587 gh_handler.send()
579 except Exception: 588 except Exception:
580 logger.error(traceback.format_exc()) 589 logger.error(traceback.format_exc())
581 return retcode 590 return retcode
582 591
583 592
584 if __name__ == "__main__": 593 if __name__ == "__main__":
585 try: 594 try:
586 retcode = main() 595 retcode = main()
587 except: 596 except:
588 raise 597 raise
589 else: 598 else:
590 sys.exit(retcode) 599 sys.exit(retcode)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698