From ba6caa021fea2edc5483bcde6d71122f2a2a871a Mon Sep 17 00:00:00 2001 From: Marius Avram Date: Mon, 17 Mar 2014 15:04:10 +0000 Subject: buildstats: use TaskBase time for elapsed time To avoid any further inconsistencies between buildstats and buildinfohelper from toaster, buildstats will measure task duration using the time field from within the TaskBase events: TaskStarted and TaskSucceeded/TaskFailed. (From OE-Core rev: 406acd647a288694c2f776a9faa1f5607f3e8e7a) Signed-off-by: Marius Avram Signed-off-by: Richard Purdie --- meta/classes/buildstats.bbclass | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'meta/classes/buildstats.bbclass') diff --git a/meta/classes/buildstats.bbclass b/meta/classes/buildstats.bbclass index 72fff1167f..89ae72c679 100644 --- a/meta/classes/buildstats.bbclass +++ b/meta/classes/buildstats.bbclass @@ -109,14 +109,17 @@ def get_diskdata(var, dev, data): diskdata["End"+key] = str(int(newdiskdata[key])) return diskdata -def set_timedata(var, data): +def set_timedata(var, data, server_time=None): import time - time = time.time() + if server_time: + time = server_time + else: + time = time.time() cputime = get_cputime() proctime = get_process_cputime(os.getpid()) data.setVar(var, (time, cputime, proctime)) -def get_timedata(var, data): +def get_timedata(var, data, server_time=None): import time timedata = data.getVar(var, False) if timedata is None: @@ -124,7 +127,11 @@ def get_timedata(var, data): oldtime, oldcpu, oldproc = timedata procdiff = get_process_cputime(os.getpid()) - oldproc cpudiff = get_cputime() - oldcpu - timediff = time.time() - oldtime + if server_time: + end_time = server_time + else: + end_time = time.time() + timediff = end_time - oldtime if cpudiff > 0: cpuperc = float(procdiff) * 100 / cpudiff else: @@ -136,7 +143,7 @@ def write_task_data(status, logfile, dev, e): bsdir = os.path.join(e.data.getVar('BUILDSTATS_BASE', True), bn) taskdir = os.path.join(bsdir, e.data.expand("${PF}")) file = open(os.path.join(logfile), "a") - timedata = get_timedata("__timedata_task", e.data) + timedata = get_timedata("__timedata_task", e.data, e.time) if timedata: elapsedtime, cpu = timedata file.write(bb.data.expand("${PF}: %s: Elapsed time: %0.2f seconds \n" % @@ -160,7 +167,7 @@ def write_task_data(status, logfile, dev, e): file.write("Status: PASSED \n") else: file.write("Status: FAILED \n") - file.write("Ended: %0.2f \n" % time.time()) + file.write("Ended: %0.2f \n" % e.time) file.close() python run_buildstats () { @@ -234,7 +241,7 @@ python run_buildstats () { taskdir = os.path.join(bsdir, e.data.expand("${PF}")) if device != "NoLogicalDevice": set_diskdata("__diskdata_task", device, e.data) - set_timedata("__timedata_task", e.data) + set_timedata("__timedata_task", e.data, e.time) try: bb.utils.mkdirhier(taskdir) except: @@ -242,7 +249,7 @@ python run_buildstats () { # write into the task event file the name and start time file = open(os.path.join(taskdir, e.task), "a") file.write("Event: %s \n" % bb.event.getName(e)) - file.write("Started: %0.2f \n" % time.time()) + file.write("Started: %0.2f \n" % e.time) file.close() elif isinstance(e, bb.build.TaskSucceeded): -- cgit 1.2.3-korg