diff options
author | Lei Zhang <thestig@chromium.org> | 2018-10-10 16:52:20 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-10-10 16:52:20 +0000 |
commit | b3a0fc30102042be6f5db0c1f644cc21ec69394a (patch) | |
tree | 75b82e88734fe865bd5efe4965a0e3f861f15402 /testing/tools/gold.py | |
parent | 76ec926e732926e84de9c8b4ef0018464172e73b (diff) | |
download | pdfium-b3a0fc30102042be6f5db0c1f644cc21ec69394a.tar.xz |
Catch SSL errors when fetching Gold JSON data.
Also increase timeout value when retrying.
Change-Id: I14dd3f76fd1a7555c3a5e1bd8c7bf8f214bc8ec0
Reviewed-on: https://pdfium-review.googlesource.com/c/43616
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'testing/tools/gold.py')
-rw-r--r-- | testing/tools/gold.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/testing/tools/gold.py b/testing/tools/gold.py index ce158be319..2987508ccf 100644 --- a/testing/tools/gold.py +++ b/testing/tools/gold.py @@ -7,6 +7,7 @@ import json import os import shlex import shutil +import ssl import urllib2 @@ -72,19 +73,22 @@ class GoldBaseline(object): url = GOLD_BASELINE_URL + ('/' + cl_number_str if cl_number_str else '') json_data = '' - RETRIES = 5 - attempts = 0 - while not json_data and attempts < RETRIES: + MAX_TIMEOUT = 33 # 5 tries. (2, 4, 8, 16, 32) + timeout = 2 + while True: try: - response = urllib2.urlopen(url, timeout=2) + response = urllib2.urlopen(url, timeout=timeout) c_type = response.headers.get('Content-type', '') EXPECTED_CONTENT_TYPE = 'application/json' if c_type != EXPECTED_CONTENT_TYPE: raise ValueError('Invalid content type. Got %s instead of %s' % ( c_type, EXPECTED_CONTENT_TYPE)) json_data = response.read() - attempts += 1 - except (urllib2.HTTPError, urllib2.URLError) as e: + break # If this line is reached, then no exception occurred. + except (ssl.SSLError, urllib2.HTTPError, urllib2.URLError) as e: + timeout *= 2 + if timeout < MAX_TIMEOUT: + continue print ('Error: Unable to read skia gold json from %s: %s' % (url, e)) return None |