diff options
author | Jeremy Laine <jeremy.laine@m4x.org> | 2008-05-18 19:52:49 +0000 |
---|---|---|
committer | Jeremy Laine <jeremy.laine@m4x.org> | 2008-05-18 19:52:49 +0000 |
commit | deaea737cb8197cbd8c333f3158692774683dc9c (patch) | |
tree | 077a67518070b897eeaf893156cad06c0bba9cac | |
parent | 79ff83371cd1be7c68d56b35e5679c4944ab3e54 (diff) |
oestats-client.bbclass: upload log file when a task fails
-rw-r--r-- | classes/oestats-client.bbclass | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/classes/oestats-client.bbclass b/classes/oestats-client.bbclass index 880f02e62d..69c708c151 100644 --- a/classes/oestats-client.bbclass +++ b/classes/oestats-client.bbclass @@ -6,7 +6,7 @@ # # INHERIT += "oestats-client" # OESTATS_SERVER = "some.server.org:8000" -# OESTATS_BUILDER = "some title" +# OESTATS_BUILDER = "some_nickname" def oestats_setid(d, val): import bb @@ -18,7 +18,7 @@ def oestats_getid(d): f = file(bb.data.getVar('TMPDIR', d, True) + '/oestats.id', 'r') return f.read() -def oestats_send(server, action, vars = {}): +def oestats_send(server, action, vars = {}, files = {}): import httplib # build body @@ -30,6 +30,14 @@ def oestats_send(server, action, vars = {}): output.append('Content-Disposition: form-data; name="%s"' % key) output.append('') output.append(vars[key]) + for key in files: + assert files[key] + output.append('--' + bound) + output.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, files[key]['filename'])) + output.append('Content-Type: %s' % files[key]['content-type']) + + output.append('') + output.append(files[key]['content']) output.append('--' + bound + '--') output.append('') body = "\r\n".join(output) @@ -90,6 +98,7 @@ def oestats_stop(server, d, status): def oestats_task(server, d, task, status): import bb + import glob import time # retrieve build id @@ -101,7 +110,19 @@ def oestats_task(server, d, task, status): elapsed = time.time() - float(bb.data.getVar('OESTATS_STAMP', d, True)) except: elapsed = 0 - + + # send the log for failures + files = {} + if status == 'Failed': + logs = glob.glob("%s/log.%s.*" % (bb.data.getVar('T', d, True), task)) + if len(logs) > 0: + log = logs[0] + bb.note("oestats: sending log file : %s" % log) + files['log'] = { + 'filename': 'log.txt', + 'content': file(log).read(), + 'content-type': 'text/plain'} + # send report try: response = oestats_send(server, "/builds/task/%s/" % id, { @@ -111,7 +132,7 @@ def oestats_task(server, d, task, status): 'task': task, 'status': status, 'time': str(elapsed), - }) + }, files) except: bb.note("oestats: error sending task, disabling stats") oestats_setid(d, "") |