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

Side by Side Diff: testing/chromoting/browser_tests_launcher.py

Issue 1718733002: Add a retry to Chromoting tests on Linux builders. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months 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 # Copyright (c) 2014 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 5
6 """Utility script to launch browser-tests on the Chromoting bot.""" 6 """Utility script to launch browser-tests on the Chromoting bot."""
7 import argparse 7 import argparse
8 import time 8 import time
9 9
10 from chromoting_test_utilities import CleanupUserProfileDir 10 from chromoting_test_utilities import CleanupUserProfileDir
11 from chromoting_test_utilities import GetJidFromHostLog 11 from chromoting_test_utilities import GetJidFromHostLog
12 from chromoting_test_utilities import GetJidListFromTestResults 12 from chromoting_test_utilities import GetJidListFromTestResults
13 from chromoting_test_utilities import InitialiseTestMachineForLinux 13 from chromoting_test_utilities import InitialiseTestMachineForLinux
14 from chromoting_test_utilities import MAX_RETRIES
14 from chromoting_test_utilities import PrintHostLogContents 15 from chromoting_test_utilities import PrintHostLogContents
15 from chromoting_test_utilities import PROD_DIR_ID 16 from chromoting_test_utilities import PROD_DIR_ID
16 from chromoting_test_utilities import RunCommandInSubProcess 17 from chromoting_test_utilities import RunCommandInSubProcess
17 from chromoting_test_utilities import TestCaseSetup 18 from chromoting_test_utilities import TestCaseSetup
18 from chromoting_test_utilities import TestMachineCleanup 19 from chromoting_test_utilities import TestMachineCleanup
19 20
20 SUCCESS_INDICATOR = 'SUCCESS: all tests passed.' 21 SUCCESS_INDICATOR = 'SUCCESS: all tests passed.'
21 TEST_FAILURE = False 22 TEST_FAILURE = False
22 FAILING_TESTS = '' 23 FAILING_TESTS = ''
23 BROWSER_NOT_STARTED_ERROR = ( 24 BROWSER_NOT_STARTED_ERROR = (
24 'Still waiting for the following processes to finish') 25 'Still waiting for the following processes to finish')
25 TIME_OUT_INDICATOR = '(TIMED OUT)' 26 TIME_OUT_INDICATOR = '(TIMED OUT)'
26 MAX_RETRIES = 1
27 27
28 28
29 def LaunchBTCommand(args, command): 29 def LaunchBTCommand(args, command):
30 """Launches the specified browser-test command. 30 """Launches the specified browser-test command.
31 31
32 Retry if the execution failed because a browser-instance was not launched or 32 Retry if the execution failed because a browser-instance was not launched or
33 because the JID used did not match the host-JID. 33 because the JID used did not match the host-JID.
34 Args: 34 Args:
35 args: Command line args, used for test-case startup tasks. 35 args: Command line args, used for test-case startup tasks.
36 command: Browser-test command line. 36 command: Browser-test command line.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 print 'JID used by test matched me2me host JID: %s' % host_jid 86 print 'JID used by test matched me2me host JID: %s' % host_jid
87 else: 87 else:
88 # There wasn't a mismatch and no JIDs were returned. If no JIDs were 88 # There wasn't a mismatch and no JIDs were returned. If no JIDs were
89 # returned, that means the test didn't use any JIDs, so there is nothing 89 # returned, that means the test didn't use any JIDs, so there is nothing
90 # further for us to do. 90 # further for us to do.
91 pass 91 pass
92 92
93 if SUCCESS_INDICATOR in results: 93 if SUCCESS_INDICATOR in results:
94 break 94 break
95 95
96 # Sometimes, during execution of browser-tests, a browser instance is 96 # Test failed, retry.
joedow 2016/02/20 17:08:38 I think this logic is important to keep. In the l
anandc1 2016/02/22 20:58:08 Done. Logging a line indicating what type of failu
97 # not started and the test times out. See http://crbug/480025.
98 # To work around it, check if this execution failed owing to that
99 # problem and retry.
100 # There are 2 things to look for in the results:
101 # A line saying "Still waiting for the following processes to finish",
102 # and, because sometimes that line gets logged even if the test
103 # eventually passes, we'll also look for "(TIMED OUT)", before retrying.
104 if not (
105 BROWSER_NOT_STARTED_ERROR in results and TIME_OUT_INDICATOR in results):
106 # Test failed for some other reason. Let's not retry.
107 break
108 retries += 1 97 retries += 1
109 98
110 # Check that the test passed. 99 # Check that the test passed.
111 if SUCCESS_INDICATOR not in results: 100 if SUCCESS_INDICATOR not in results:
112 TEST_FAILURE = True 101 TEST_FAILURE = True
113 # Add this command-line to list of tests that failed. 102 # Add this command-line to list of tests that failed.
114 FAILING_TESTS += command 103 FAILING_TESTS += command
115 104
116 return host_log_file_names 105 return host_log_file_names
117 106
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 try: 144 try:
156 host_logs = main(command_line_args) 145 host_logs = main(command_line_args)
157 if TEST_FAILURE: 146 if TEST_FAILURE:
158 print '++++++++++AT LEAST 1 TEST FAILED++++++++++' 147 print '++++++++++AT LEAST 1 TEST FAILED++++++++++'
159 print FAILING_TESTS.rstrip('\n') 148 print FAILING_TESTS.rstrip('\n')
160 print '++++++++++++++++++++++++++++++++++++++++++' 149 print '++++++++++++++++++++++++++++++++++++++++++'
161 raise Exception('At least one test failed.') 150 raise Exception('At least one test failed.')
162 finally: 151 finally:
163 # Stop host and cleanup user-profile-dir. 152 # Stop host and cleanup user-profile-dir.
164 TestMachineCleanup(command_line_args.user_profile_dir, host_logs) 153 TestMachineCleanup(command_line_args.user_profile_dir, host_logs)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698