Skip to content
Snippets Groups Projects
Commit 36166178 authored by Scott Wittenburg's avatar Scott Wittenburg Committed by Todd Gamblin
Browse files

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.
parent 90c7c743
No related branches found
No related tags found
No related merge requests found
...@@ -153,11 +153,20 @@ def setup_parser(subparser): ...@@ -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,9 +72,12 @@ def __init__(self, args): ...@@ -72,9 +72,12 @@ 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())
buildstamp_format = "%Y%m%d-%H%M-{0}".format(args.cdash_track) if args.cdash_buildstamp:
self.buildstamp = time.strftime(buildstamp_format, self.buildstamp = args.cdash_buildstamp
time.localtime(self.endtime)) 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.buildId = None
self.revision = '' self.revision = ''
git = which('git') git = which('git')
......
...@@ -8,6 +8,7 @@ ...@@ -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): ...@@ -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,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment