Parcourir la source

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.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 64a2121a875ce128959ee0a62e310d5f91f87b0d)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Richard Purdie il y a 4 ans
Parent
commit
0b513274a0
2 fichiers modifiés avec 28 ajouts et 15 suppressions
  1. 14 7
      scripts/lib/resulttool/log.py
  2. 14 8
      scripts/lib/resulttool/resultutils.py

+ 14 - 7
scripts/lib/resulttool/log.py

@@ -34,13 +34,17 @@ def log(args, logger):
         return 1
         return 1
 
 
     for _, run_name, _, r in resultutils.test_run_results(results):
     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:
                 if logdata is not None:
                     dest_dir = args.dump_ptest
                     dest_dir = args.dump_ptest
                     if args.prepend_run:
                     if args.prepend_run:
                         dest_dir = os.path.join(dest_dir, run_name)
                         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)
                     os.makedirs(dest_dir, exist_ok=True)
                     dest = os.path.join(dest_dir, '%s.log' % name)
                     dest = os.path.join(dest_dir, '%s.log' % name)
@@ -49,10 +53,13 @@ def log(args, logger):
                         f.write(logdata)
                         f.write(logdata)
 
 
         if args.raw_ptest:
         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')
                 print('Raw ptest logs not found')
                 return 1
                 return 1
 
 

+ 14 - 8
scripts/lib/resulttool/resultutils.py

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