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

Side by Side Diff: testing/chromoting/chromoting_test_driver_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 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 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 """Utility script to run chromoting test driver tests on the Chromoting bot.""" 5 """Utility script to run chromoting test driver tests on the Chromoting bot."""
6 6
7 import argparse 7 import argparse
8 8
9 from chromoting_test_utilities import GetJidFromHostLog 9 from chromoting_test_utilities import GetJidFromHostLog
10 from chromoting_test_utilities import InitialiseTestMachineForLinux 10 from chromoting_test_utilities import InitialiseTestMachineForLinux
11 from chromoting_test_utilities import MAX_RETRIES
11 from chromoting_test_utilities import PrintHostLogContents 12 from chromoting_test_utilities import PrintHostLogContents
12 from chromoting_test_utilities import PROD_DIR_ID 13 from chromoting_test_utilities import PROD_DIR_ID
13 from chromoting_test_utilities import RunCommandInSubProcess 14 from chromoting_test_utilities import RunCommandInSubProcess
14 from chromoting_test_utilities import TestCaseSetup 15 from chromoting_test_utilities import TestCaseSetup
15 from chromoting_test_utilities import TestMachineCleanup 16 from chromoting_test_utilities import TestMachineCleanup
16 17
17 TEST_ENVIRONMENT_TEAR_DOWN_INDICATOR = 'Global test environment tear-down' 18 TEST_ENVIRONMENT_TEAR_DOWN_INDICATOR = 'Global test environment tear-down'
18 FAILED_INDICATOR = '[ FAILED ]' 19 FAILED_INDICATOR = '[ FAILED ]'
19 20
20 21
(...skipping 12 matching lines...) Expand all
33 34
34 host_log_file_names.append(TestCaseSetup(args)) 35 host_log_file_names.append(TestCaseSetup(args))
35 # Parse the me2me host log to obtain the JID that the host registered. 36 # Parse the me2me host log to obtain the JID that the host registered.
36 host_jid = GetJidFromHostLog(host_log_file_names[-1]) 37 host_jid = GetJidFromHostLog(host_log_file_names[-1])
37 38
38 if not host_jid: 39 if not host_jid:
39 # Host-JID not found in log. Let's not attempt to run this test. 40 # Host-JID not found in log. Let's not attempt to run this test.
40 print 'Host-JID not found in log %s.' % host_log_file_names[-1] 41 print 'Host-JID not found in log %s.' % host_log_file_names[-1]
41 return '[Command failed]: %s, %s' % (command, host_log_file_names) 42 return '[Command failed]: %s, %s' % (command, host_log_file_names)
42 43
43 # In order to ensure the host is online with the expected JID, pass in the 44 retries = 0
44 # jid obtained from the host-log as a command-line parameter. 45 failed_tests_list = []
45 command = command.replace('\n', '') + ' --hostjid=%s' % host_jid 46 while retries <= MAX_RETRIES:
joedow 2016/02/20 17:08:38 Can you add a TODO/bug to track the removal of the
anandc1 2016/02/22 20:58:08 Done.
47 # In order to ensure the host is online with the expected JID, pass in the
48 # jid obtained from the host-log as a command-line parameter.
49 command = command.replace('\n', '') + ' --hostjid=%s' % host_jid
46 50
47 results = RunCommandInSubProcess(command) 51 results = RunCommandInSubProcess(command)
48 52
49 tear_down_index = results.find(TEST_ENVIRONMENT_TEAR_DOWN_INDICATOR) 53 tear_down_index = results.find(TEST_ENVIRONMENT_TEAR_DOWN_INDICATOR)
50 if tear_down_index == -1: 54 if tear_down_index == -1:
51 # The test environment did not tear down. Something went horribly wrong. 55 # The test environment did not tear down. Something went horribly wrong.
52 return '[Command failed]: ' + command, host_log_file_names 56 return '[Command failed]: ' + command, host_log_file_names
53 57
54 end_results_list = results[tear_down_index:].split('\n') 58 end_results_list = results[tear_down_index:].split('\n')
55 failed_tests_list = [] 59 test_failed = False
56 for result in end_results_list: 60 for result in end_results_list:
57 if result.startswith(FAILED_INDICATOR): 61 if result.startswith(FAILED_INDICATOR):
58 failed_tests_list.append(result) 62 test_failed = True
63 if retries == MAX_RETRIES:
64 # Test failed and we have no more retries left.
65 failed_tests_list.append(result)
66
67 if test_failed:
68 retries += 1
69 else:
70 break
59 71
60 if failed_tests_list: 72 if failed_tests_list:
61 test_result = '[Command]: ' + command 73 test_result = '[Command]: ' + command
62 # Note: Skipping the first one is intentional. 74 # Note: Skipping the first one is intentional.
63 for i in range(1, len(failed_tests_list)): 75 for i in range(1, len(failed_tests_list)):
64 test_result += ' ' + failed_tests_list[i] 76 test_result += ' ' + failed_tests_list[i]
65 return test_result, host_log_file_names 77 return test_result, host_log_file_names
66 78
67 # All tests passed! 79 # All tests passed!
68 return '', host_log_file_names 80 return '', host_log_file_names
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 try: 122 try:
111 failing_tests, host_logs = main(command_line_args) 123 failing_tests, host_logs = main(command_line_args)
112 if failing_tests: 124 if failing_tests:
113 print '++++++++++FAILED TESTS++++++++++' 125 print '++++++++++FAILED TESTS++++++++++'
114 print failing_tests.rstrip('\n') 126 print failing_tests.rstrip('\n')
115 print '++++++++++++++++++++++++++++++++' 127 print '++++++++++++++++++++++++++++++++'
116 raise Exception('At least one test failed.') 128 raise Exception('At least one test failed.')
117 finally: 129 finally:
118 # Stop host and cleanup user-profile-dir. 130 # Stop host and cleanup user-profile-dir.
119 TestMachineCleanup(command_line_args.user_profile_dir, host_logs) 131 TestMachineCleanup(command_line_args.user_profile_dir, host_logs)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698