run_layout_tests.py revision bdebd0621b2a4422a30bea21ea549afd20a9e918
15fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski#!/usr/bin/python 25fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 35fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski"""Run layout tests on the device. 45fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 55fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski It runs the specified tests on the device, downloads the summaries to the temporary directory 65fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski and opens html details in the default browser. 75fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 85fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski Usage: 95fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski run_layout_tests.py PATH 105fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski""" 115fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 125fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport sys 135fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport os 145fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport subprocess 155fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport logging 165fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport webbrowser 175fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiimport tempfile 185fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 195fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski#TODO: These should not be hardcoded 20bdebd0621b2a4422a30bea21ea549afd20a9e918Steve BlockRESULTS_ABSOLUTE_PATH = "/sdcard/layout-test-results/" 215fb9ff420d378c5c83e116efadefb669791098d5Maksymilian OsowskiDETAILS_HTML = "details.html" 225fb9ff420d378c5c83e116efadefb669791098d5Maksymilian OsowskiSUMMARY_TXT = "summary.txt" 235fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 245fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskidef main(): 255fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski if len(sys.argv) > 1: 265fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski path = sys.argv[1] 275fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski else: 285fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski path = "" 295fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 305fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski logging.basicConfig(level=logging.INFO, format='%(message)s') 315fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 325fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski tmpdir = tempfile.gettempdir() 335fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 345fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski # Run the tests in path 355fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski cmd = "adb shell am instrument " 365fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski cmd += "-e class com.android.dumprendertree2.scriptsupport.Starter#startLayoutTests " 375fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski cmd += "-e path \"" + path + "\" " 385fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski cmd +="-w com.android.dumprendertree2/com.android.dumprendertree2.scriptsupport.ScriptTestRunner" 395fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 405fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski logging.info("Running the tests...") 415fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() 425fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 435fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski logging.info("Downloading the summaries...") 445fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 455fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski # Download the txt summary to tmp folder 465fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski summary_txt_tmp_path = os.path.join(tmpdir, SUMMARY_TXT) 475fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski cmd = "adb pull " + RESULTS_ABSOLUTE_PATH + SUMMARY_TXT + " " + summary_txt_tmp_path 485fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() 495fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 505fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski # Download the html summary to tmp folder 515fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski details_html_tmp_path = os.path.join(tmpdir, DETAILS_HTML) 525fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski cmd = "adb pull " + RESULTS_ABSOLUTE_PATH + DETAILS_HTML + " " + details_html_tmp_path 535fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() 545fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 555fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski # Print summary to console 565fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski logging.info("All done.\n") 575fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski cmd = "cat " + summary_txt_tmp_path 585fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski os.system(cmd) 595fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski logging.info("") 605fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 615fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski # Open the browser with summary 625fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski webbrowser.open(details_html_tmp_path) 635fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski 645fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowskiif __name__ == "__main__": 655fb9ff420d378c5c83e116efadefb669791098d5Maksymilian Osowski main(); 66