Allow spack install to take either cdash stamp or track (#11106)
When providing a track, the cdash reporter will format the stamp itself, as it has always done, and register the build during the package installation process. When providing a stamp, it should first be formatted as cdash expects, and then cdash will be sure to report results to same build id which was registered manually elsewhere.
This commit is contained in:
parent
90c7c74334
commit
3616617804
@ -153,11 +153,20 @@ def setup_parser(subparser):
|
|||||||
help="""The site name that will be reported to CDash.
|
help="""The site name that will be reported to CDash.
|
||||||
Defaults to current system hostname."""
|
Defaults to current system hostname."""
|
||||||
)
|
)
|
||||||
subparser.add_argument(
|
cdash_subgroup = subparser.add_mutually_exclusive_group()
|
||||||
|
cdash_subgroup.add_argument(
|
||||||
'--cdash-track',
|
'--cdash-track',
|
||||||
default='Experimental',
|
default='Experimental',
|
||||||
help="""Results will be reported to this group on CDash.
|
help="""Results will be reported to this group on CDash.
|
||||||
Defaults to Experimental."""
|
Defaults to Experimental."""
|
||||||
|
)
|
||||||
|
cdash_subgroup.add_argument(
|
||||||
|
'--cdash-buildstamp',
|
||||||
|
default=None,
|
||||||
|
help="""Instead of letting the CDash reporter prepare the
|
||||||
|
buildstamp which, when combined with build name, site and project,
|
||||||
|
uniquely identifies the build, provide this argument to identify
|
||||||
|
the build yourself. Format: %%Y%%m%%d-%%H%%M-[cdash-track]"""
|
||||||
)
|
)
|
||||||
arguments.add_common_arguments(subparser, ['yes_to_all'])
|
arguments.add_common_arguments(subparser, ['yes_to_all'])
|
||||||
|
|
||||||
|
@ -72,6 +72,9 @@ def __init__(self, args):
|
|||||||
self.site = args.cdash_site or socket.gethostname()
|
self.site = args.cdash_site or socket.gethostname()
|
||||||
self.osname = platform.system()
|
self.osname = platform.system()
|
||||||
self.endtime = int(time.time())
|
self.endtime = int(time.time())
|
||||||
|
if args.cdash_buildstamp:
|
||||||
|
self.buildstamp = args.cdash_buildstamp
|
||||||
|
else:
|
||||||
buildstamp_format = "%Y%m%d-%H%M-{0}".format(args.cdash_track)
|
buildstamp_format = "%Y%m%d-%H%M-{0}".format(args.cdash_track)
|
||||||
self.buildstamp = time.strftime(buildstamp_format,
|
self.buildstamp = time.strftime(buildstamp_format,
|
||||||
time.localtime(self.endtime))
|
time.localtime(self.endtime))
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
import filecmp
|
import filecmp
|
||||||
import re
|
import re
|
||||||
from six.moves import builtins
|
from six.moves import builtins
|
||||||
|
import time
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
@ -505,6 +506,33 @@ def test_cdash_upload_extra_params(tmpdir, mock_fetch, install_mockery, capfd):
|
|||||||
assert '-my_custom_track' in content
|
assert '-my_custom_track' in content
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.disable_clean_stage_check
|
||||||
|
def test_cdash_buildstamp_param(tmpdir, mock_fetch, install_mockery, capfd):
|
||||||
|
# capfd interferes with Spack's capturing
|
||||||
|
with capfd.disabled():
|
||||||
|
with tmpdir.as_cwd():
|
||||||
|
cdash_track = 'some_mocked_track'
|
||||||
|
buildstamp_format = "%Y%m%d-%H%M-{0}".format(cdash_track)
|
||||||
|
buildstamp = time.strftime(buildstamp_format,
|
||||||
|
time.localtime(int(time.time())))
|
||||||
|
with pytest.raises((HTTPError, URLError)):
|
||||||
|
install(
|
||||||
|
'--log-file=cdash_reports',
|
||||||
|
'--cdash-build=my_custom_build',
|
||||||
|
'--cdash-site=my_custom_site',
|
||||||
|
'--cdash-buildstamp={0}'.format(buildstamp),
|
||||||
|
'--cdash-upload-url=http://localhost/fakeurl/submit.php?project=Spack',
|
||||||
|
'a')
|
||||||
|
report_dir = tmpdir.join('cdash_reports')
|
||||||
|
assert report_dir in tmpdir.listdir()
|
||||||
|
report_file = report_dir.join('Build.xml')
|
||||||
|
assert report_file in report_dir.listdir()
|
||||||
|
content = report_file.open().read()
|
||||||
|
assert 'Site BuildName="my_custom_build"' in content
|
||||||
|
assert 'Name="my_custom_site"' in content
|
||||||
|
assert buildstamp in content
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.disable_clean_stage_check
|
@pytest.mark.disable_clean_stage_check
|
||||||
def test_cdash_install_from_spec_yaml(tmpdir, mock_fetch, install_mockery,
|
def test_cdash_install_from_spec_yaml(tmpdir, mock_fetch, install_mockery,
|
||||||
capfd, mock_packages, mock_archive,
|
capfd, mock_packages, mock_archive,
|
||||||
|
Loading…
Reference in New Issue
Block a user