resulttool/log: Add ability to dump ltp logs as well as ptest

Currently only ptest logs are accessible with the log command, this
adds support so the ltp logs can be extracted too.

(From OE-Core rev: 64a2121a875ce128959ee0a62e310d5f91f87b0d)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2020-05-26 21:56:18 +01:00
parent 7a6739398a
commit f08831c5a9
2 changed files with 29 additions and 16 deletions

View File

@@ -34,13 +34,17 @@ def log(args, logger):
return 1
for _, run_name, _, r in resultutils.test_run_results(results):
if args.dump_ptest and 'ptestresult.sections' in r:
for name, ptest in r['ptestresult.sections'].items():
logdata = resultutils.ptestresult_get_log(r, name)
if args.dump_ptest:
for sectname in ['ptestresult.sections', 'ltpposixresult.sections', 'ltpresult.sections']:
if sectname in r:
for name, ptest in r[sectname].items():
logdata = resultutils.generic_get_log(sectname, r, name)
if logdata is not None:
dest_dir = args.dump_ptest
if args.prepend_run:
dest_dir = os.path.join(dest_dir, run_name)
if not sectname.startswith("ptest"):
dest_dir = os.path.join(dest_dir, sectname.split(".")[0])
os.makedirs(dest_dir, exist_ok=True)
dest = os.path.join(dest_dir, '%s.log' % name)
@@ -49,10 +53,13 @@ def log(args, logger):
f.write(logdata)
if args.raw_ptest:
rawlog = resultutils.ptestresult_get_rawlogs(r)
if rawlog is not None:
print(rawlog)
else:
found = False
for sectname in ['ptestresult.rawlogs', 'ltpposixresult.rawlogs', 'ltpresult.rawlogs']:
rawlog = resultutils.generic_get_rawlogs(sectname, r)
if rawlog is not None:
print(rawlog)
found = True
if not found:
print('Raw ptest logs not found')
return 1

View File

@@ -130,23 +130,29 @@ def decode_log(logdata):
return data.decode("utf-8", errors='ignore')
return None
def ptestresult_get_log(results, section):
if 'ptestresult.sections' not in results:
def generic_get_log(sectionname, results, section):
if sectionname not in results:
return None
if section not in results['ptestresult.sections']:
if section not in results[sectionname]:
return None
ptest = results['ptestresult.sections'][section]
ptest = results[sectionname][section]
if 'log' not in ptest:
return None
return decode_log(ptest['log'])
def ptestresult_get_log(results, section):
return generic_get_log('ptestresuls.sections', results, section)
def generic_get_rawlogs(sectname, results):
if sectname not in results:
return None
if 'log' not in results[sectname]:
return None
return decode_log(results[sectname]['log'])
def ptestresult_get_rawlogs(results):
if 'ptestresult.rawlogs' not in results:
return None
if 'log' not in results['ptestresult.rawlogs']:
return None
return decode_log(results['ptestresult.rawlogs']['log'])
return generic_get_rawlogs('ptestresult.rawlogs', results)
def save_resultsdata(results, destdir, fn="testresults.json", ptestjson=False, ptestlogs=False):
for res in results: