Fix cdash reporter time stamps (#38825)

* Fix cdash reporter time stamps (#38818).
   The cdash reporter is created before packages are installed so save the
   starttime then instead of the endtime.
* Use endtime instead of starttime for the endtime of update

---------

Co-authored-by: Tamara Dahlgren <dahlgren1@llnl.gov>
This commit is contained in:
Victor Brunini 2023-12-07 11:32:10 -08:00 committed by GitHub
parent 5722a13af0
commit 0a6045eadf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -92,11 +92,11 @@ def __init__(self, configuration: CDashConfiguration):
self.osname = platform.system() self.osname = platform.system()
self.osrelease = platform.release() self.osrelease = platform.release()
self.target = spack.platforms.host().target("default_target") self.target = spack.platforms.host().target("default_target")
self.endtime = int(time.time()) self.starttime = int(time.time())
self.buildstamp = ( self.buildstamp = (
configuration.buildstamp configuration.buildstamp
if configuration.buildstamp if configuration.buildstamp
else build_stamp(configuration.track, self.endtime) else build_stamp(configuration.track, self.starttime)
) )
self.buildIds: Dict[str, str] = {} self.buildIds: Dict[str, str] = {}
self.revision = "" self.revision = ""
@ -125,7 +125,7 @@ def build_report_for_package(self, report_dir, package, duration):
report_data[phase] = {} report_data[phase] = {}
report_data[phase]["loglines"] = [] report_data[phase]["loglines"] = []
report_data[phase]["status"] = 0 report_data[phase]["status"] = 0
report_data[phase]["endtime"] = self.endtime report_data[phase]["starttime"] = self.starttime
# Track the phases we perform so we know what reports to create. # Track the phases we perform so we know what reports to create.
# We always report the update step because this is how we tell CDash # We always report the update step because this is how we tell CDash
@ -179,9 +179,9 @@ def build_report_for_package(self, report_dir, package, duration):
build_pos = phases_encountered.index("build") build_pos = phases_encountered.index("build")
phases_encountered.insert(0, phases_encountered.pop(build_pos)) phases_encountered.insert(0, phases_encountered.pop(build_pos))
self.starttime = self.endtime - duration self.endtime = self.starttime + duration
for phase in phases_encountered: for phase in phases_encountered:
report_data[phase]["starttime"] = self.starttime report_data[phase]["endtime"] = self.endtime
report_data[phase]["log"] = "\n".join(report_data[phase]["loglines"]) report_data[phase]["log"] = "\n".join(report_data[phase]["loglines"])
errors, warnings = parse_log_events(report_data[phase]["loglines"]) errors, warnings = parse_log_events(report_data[phase]["loglines"])
@ -328,7 +328,7 @@ def test_report_for_package(self, report_dir, package, duration):
self.buildname = "{0}-{1}".format(self.current_package_name, package["id"]) self.buildname = "{0}-{1}".format(self.current_package_name, package["id"])
else: else:
self.buildname = self.report_build_name(self.current_package_name) self.buildname = self.report_build_name(self.current_package_name)
self.starttime = self.endtime - duration self.endtime = self.starttime + duration
report_data = self.initialize_report(report_dir) report_data = self.initialize_report(report_dir)
report_data["hostname"] = socket.gethostname() report_data["hostname"] = socket.gethostname()
@ -373,7 +373,7 @@ def concretization_report(self, report_dir, msg):
self.buildname = self.base_buildname self.buildname = self.base_buildname
report_data = self.initialize_report(report_dir) report_data = self.initialize_report(report_dir)
report_data["update"] = {} report_data["update"] = {}
report_data["update"]["starttime"] = self.endtime report_data["update"]["starttime"] = self.starttime
report_data["update"]["endtime"] = self.endtime report_data["update"]["endtime"] = self.endtime
report_data["update"]["revision"] = self.revision report_data["update"]["revision"] = self.revision
report_data["update"]["log"] = msg report_data["update"]["log"] = msg