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.
|
||||
Defaults to current system hostname."""
|
||||
)
|
||||
subparser.add_argument(
|
||||
cdash_subgroup = subparser.add_mutually_exclusive_group()
|
||||
cdash_subgroup.add_argument(
|
||||
'--cdash-track',
|
||||
default='Experimental',
|
||||
help="""Results will be reported to this group on CDash.
|
||||
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'])
|
||||
|
||||
|
@ -72,9 +72,12 @@ def __init__(self, args):
|
||||
self.site = args.cdash_site or socket.gethostname()
|
||||
self.osname = platform.system()
|
||||
self.endtime = int(time.time())
|
||||
buildstamp_format = "%Y%m%d-%H%M-{0}".format(args.cdash_track)
|
||||
self.buildstamp = time.strftime(buildstamp_format,
|
||||
time.localtime(self.endtime))
|
||||
if args.cdash_buildstamp:
|
||||
self.buildstamp = args.cdash_buildstamp
|
||||
else:
|
||||
buildstamp_format = "%Y%m%d-%H%M-{0}".format(args.cdash_track)
|
||||
self.buildstamp = time.strftime(buildstamp_format,
|
||||
time.localtime(self.endtime))
|
||||
self.buildId = None
|
||||
self.revision = ''
|
||||
git = which('git')
|
||||
|
@ -8,6 +8,7 @@
|
||||
import filecmp
|
||||
import re
|
||||
from six.moves import builtins
|
||||
import time
|
||||
|
||||
import pytest
|
||||
|
||||
@ -505,6 +506,33 @@ def test_cdash_upload_extra_params(tmpdir, mock_fetch, install_mockery, capfd):
|
||||
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
|
||||
def test_cdash_install_from_spec_yaml(tmpdir, mock_fetch, install_mockery,
|
||||
capfd, mock_packages, mock_archive,
|
||||
|
Loading…
Reference in New Issue
Block a user