diff options
Diffstat (limited to 'classes/oestats-client.bbclass')
-rw-r--r-- | classes/oestats-client.bbclass | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/classes/oestats-client.bbclass b/classes/oestats-client.bbclass index da70a77825..f87b58f817 100644 --- a/classes/oestats-client.bbclass +++ b/classes/oestats-client.bbclass @@ -8,6 +8,16 @@ # OESTATS_SERVER = "some.server.org:8000" # OESTATS_BUILDER = "some title" +def oestats_setid(d, val): + import bb + f = file(bb.data.getVar('TMPDIR', d, True) + '/oestats.id', 'w') + f.write(val) + +def oestats_getid(d): + import bb + f = file(bb.data.getVar('TMPDIR', d, True) + '/oestats.id', 'r') + return f.read() + def oestats_revision(dir): import re try: @@ -34,7 +44,7 @@ def oestats_start(server, builder, d): import os.path # collect information about revisions - path_bb = bb.data.getVar('BBPATH', d, 1) + path_bb = bb.data.getVar('BBPATH', d, True) for p in (path_bb or "").split(':'): revision = oestats_revision(p) if revision: @@ -44,22 +54,19 @@ def oestats_start(server, builder, d): response = oestats_send(server, "/builds/start/", { 'builder': builder, 'revision': revision, - 'machine': bb.data.getVar( 'MACHINE', d, True ), - 'distro': bb.data.getVar( 'DISTRO', d, True ), + 'machine': bb.data.getVar('MACHINE', d, True), + 'distro': bb.data.getVar('DISTRO', d, True), }) id = response.read() # save the build id - bb.note("Stats id: %s" % id) - f = file(bb.data.getVar('TMPDIR', d, True)+"/oestats.id", 'w') - f.write(id) + oestats_setid(d, id) def oestats_stop(server, d, status): import bb # retrieve build id - f = file(bb.data.getVar('TMPDIR',d,True)+"/oestats.id", 'r') - id = f.read() + id = oestats_getid(d) # send report response = oestats_send(server, "/builds/stop/%s/" % id, { @@ -68,10 +75,14 @@ def oestats_stop(server, d, status): def oestats_task(server, d, task, status): import bb + import time # retrieve build id - f = file(bb.data.getVar('TMPDIR',d,True)+"/oestats.id", 'r') - id = f.read() + id = oestats_getid(d) + try: + elapsed = time.time() - float(bb.data.getVar('OESTATS_STAMP', d, True)) + except: + elapsed = 0 # send report response = oestats_send(server, "/builds/task/%s/" % id, { @@ -80,12 +91,14 @@ def oestats_task(server, d, task, status): 'revision': bb.data.getVar('PR', d, True), 'task': task, 'status': status, + 'time': elapsed, }) addhandler oestats_eventhandler python oestats_eventhandler () { from bb.event import getName import bb + import time if e.data is None or getName(e) == "MsgNote": return NotHandled @@ -99,6 +112,8 @@ python oestats_eventhandler () { oestats_start(server, builder, e.data) elif getName(e) == 'BuildCompleted': oestats_stop(server, e.data, 'Completed') + elif getName(e) == 'TaskStarted': + bb.data.setVar('OESTATS_STAMP', repr(time.time()), e.data) elif getName(e) == 'TaskSucceeded': oestats_task(server, e.data, e.task, 'Succeeded') elif getName(e) == 'TaskFailed': |