Cdash reporting timeout (#44213)
* Add timeout to cdash reporter PUT request Add cdash timeout everywhere Correct mock responder api * Style * brief doc
This commit is contained in:
parent
04258f9cce
commit
ac5d5485b9
3 changed files with 8 additions and 6 deletions
|
@ -44,6 +44,7 @@
|
||||||
from spack import traverse
|
from spack import traverse
|
||||||
from spack.error import SpackError
|
from spack.error import SpackError
|
||||||
from spack.reporters import CDash, CDashConfiguration
|
from spack.reporters import CDash, CDashConfiguration
|
||||||
|
from spack.reporters.cdash import SPACK_CDASH_TIMEOUT
|
||||||
from spack.reporters.cdash import build_stamp as cdash_build_stamp
|
from spack.reporters.cdash import build_stamp as cdash_build_stamp
|
||||||
|
|
||||||
# See https://docs.gitlab.com/ee/ci/yaml/#retry for descriptions of conditions
|
# See https://docs.gitlab.com/ee/ci/yaml/#retry for descriptions of conditions
|
||||||
|
@ -1500,7 +1501,7 @@ def download_and_extract_artifacts(url, work_dir):
|
||||||
request = Request(url, headers=headers)
|
request = Request(url, headers=headers)
|
||||||
request.get_method = lambda: "GET"
|
request.get_method = lambda: "GET"
|
||||||
|
|
||||||
response = opener.open(request)
|
response = opener.open(request, timeout=SPACK_CDASH_TIMEOUT)
|
||||||
response_code = response.getcode()
|
response_code = response.getcode()
|
||||||
|
|
||||||
if response_code != 200:
|
if response_code != 200:
|
||||||
|
@ -2248,7 +2249,7 @@ def create_buildgroup(self, opener, headers, url, group_name, group_type):
|
||||||
|
|
||||||
request = Request(url, data=enc_data, headers=headers)
|
request = Request(url, data=enc_data, headers=headers)
|
||||||
|
|
||||||
response = opener.open(request)
|
response = opener.open(request, timeout=SPACK_CDASH_TIMEOUT)
|
||||||
response_code = response.getcode()
|
response_code = response.getcode()
|
||||||
|
|
||||||
if response_code not in [200, 201]:
|
if response_code not in [200, 201]:
|
||||||
|
@ -2294,7 +2295,7 @@ def populate_buildgroup(self, job_names):
|
||||||
request = Request(url, data=enc_data, headers=headers)
|
request = Request(url, data=enc_data, headers=headers)
|
||||||
request.get_method = lambda: "PUT"
|
request.get_method = lambda: "PUT"
|
||||||
|
|
||||||
response = opener.open(request)
|
response = opener.open(request, timeout=SPACK_CDASH_TIMEOUT)
|
||||||
response_code = response.getcode()
|
response_code = response.getcode()
|
||||||
|
|
||||||
if response_code != 200:
|
if response_code != 200:
|
||||||
|
|
|
@ -58,7 +58,8 @@
|
||||||
# Initialize data structures common to each phase's report.
|
# Initialize data structures common to each phase's report.
|
||||||
CDASH_PHASES = set(MAP_PHASES_TO_CDASH.values())
|
CDASH_PHASES = set(MAP_PHASES_TO_CDASH.values())
|
||||||
CDASH_PHASES.add("update")
|
CDASH_PHASES.add("update")
|
||||||
|
# CDash request timeout in seconds
|
||||||
|
SPACK_CDASH_TIMEOUT = 45
|
||||||
|
|
||||||
CDashConfiguration = collections.namedtuple(
|
CDashConfiguration = collections.namedtuple(
|
||||||
"CDashConfiguration", ["upload_url", "packages", "build", "site", "buildstamp", "track"]
|
"CDashConfiguration", ["upload_url", "packages", "build", "site", "buildstamp", "track"]
|
||||||
|
@ -447,7 +448,7 @@ def upload(self, filename):
|
||||||
# By default, urllib2 only support GET and POST.
|
# By default, urllib2 only support GET and POST.
|
||||||
# CDash expects this file to be uploaded via PUT.
|
# CDash expects this file to be uploaded via PUT.
|
||||||
request.get_method = lambda: "PUT"
|
request.get_method = lambda: "PUT"
|
||||||
response = opener.open(request)
|
response = opener.open(request, timeout=SPACK_CDASH_TIMEOUT)
|
||||||
if self.current_package_name not in self.buildIds:
|
if self.current_package_name not in self.buildIds:
|
||||||
resp_value = response.read()
|
resp_value = response.read()
|
||||||
if isinstance(resp_value, bytes):
|
if isinstance(resp_value, bytes):
|
||||||
|
|
|
@ -51,7 +51,7 @@ def __init__(self, response_code=200, content_to_read=[]):
|
||||||
self._content = content_to_read
|
self._content = content_to_read
|
||||||
self._read = [False for c in content_to_read]
|
self._read = [False for c in content_to_read]
|
||||||
|
|
||||||
def open(self, request):
|
def open(self, request, data=None, timeout=object()):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def getcode(self):
|
def getcode(self):
|
||||||
|
|
Loading…
Reference in a new issue