aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/run_tests/run_build_statistics.py
diff options
context:
space:
mode:
authorGravatar Adele Zhou <adelez@google.com>2017-08-10 15:51:47 -0700
committerGravatar Adele Zhou <adelez@google.com>2017-08-10 18:24:38 -0700
commit566c4c022c108892d6623188caebaf5288bde640 (patch)
treea55de544d4972c849c6a14c4e44cf8f318813e99 /tools/run_tests/run_build_statistics.py
parentf2bd22131a8c517c4ca399cbb39cb788fcdc52b9 (diff)
merge changes
Diffstat (limited to 'tools/run_tests/run_build_statistics.py')
-rwxr-xr-xtools/run_tests/run_build_statistics.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/tools/run_tests/run_build_statistics.py b/tools/run_tests/run_build_statistics.py
index f874f7e209..1e957b6677 100755
--- a/tools/run_tests/run_build_statistics.py
+++ b/tools/run_tests/run_build_statistics.py
@@ -88,6 +88,10 @@ _KNOWN_ERRORS = [
'FAILED: bins/tsan/qps_openloop_test GRPC_POLL_STRATEGY=poll',
('tests.bins/asan/h2_proxy_test streaming_error_response '
'GRPC_POLL_STRATEGY=legacy'),
+ 'hudson.plugins.git.GitException',
+ 'Couldn\'t find any revision to build',
+ 'org.jenkinsci.plugin.Diskcheck.preCheckout',
+ 'Something went wrong while deleting Files',
]
_NO_REPORT_FILES_FOUND_ERROR = 'No test report files were found.'
_UNKNOWN_ERROR = 'Unknown error'
@@ -161,8 +165,9 @@ def _process_build(json_url, console_url):
html = urllib.urlopen(console_url).read()
build_result['pass_count'] = 0
build_result['failure_count'] = 1
- # In this case, the string doesn't exist but the fact that we fail to parse
- # the result html indicate Jenkins failure and hence missing report files.
+ # In this case, the string doesn't exist in the result html but the fact
+ # that we fail to parse the result html indicates Jenkins failure and hence
+ # no report files were generated.
build_result['no_report_files_found'] = True
error_list = _scrape_for_known_errors(html)
@@ -210,6 +215,15 @@ for build_name in _BUILDS.keys() if 'all' in args.builds else args.builds:
build = None
try:
build = job.get_build_metadata(build_number)
+ print('====> Build status: %s.' % build.get_status())
+ if build.get_status() == 'ABORTED':
+ continue
+ # If any build is still running, stop processing this job. Next time, we
+ # start from where it was left so that all builds are processed
+ # sequentially.
+ if build.is_running():
+ print('====> Build %d is still running.' % build_number)
+ break
except KeyError:
print('====> Build %s is missing. Skip.' % build_number)
continue
@@ -222,10 +236,10 @@ for build_name in _BUILDS.keys() if 'all' in args.builds else args.builds:
json_url = '%s/testReport/api/json' % url_base
console_url = '%s/consoleFull' % url_base
build_result['duration'] = build.get_duration().total_seconds()
- build_result.update(_process_build(json_url, console_url))
+ build_stat = _process_build(json_url, console_url)
+ build_result.update(build_stat)
rows = [big_query_utils.make_row(build_number, build_result)]
if not big_query_utils.insert_rows(bq, _PROJECT_ID, _DATASET_ID, build_name,
rows):
print('====> Error uploading result to bigquery.')
sys.exit(1)
-