resulttool/resultutils: Enable add extra configurations to results

Current resultutils library always add "TESTSERIES" configuration
to results. Enhance this to allow control of adding "TESTSERIES"
configuration as well as allow adding extra configurations
when needed.

(From OE-Core rev: 443c0acc14ef2451b10878fc83dd11b46805daf0)

Signed-off-by: Yeoh Ee Peng <ee.peng.yeoh@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Yeoh Ee Peng 2019-04-04 10:30:35 +08:00 committed by Richard Purdie
parent eb92c13421
commit 588f455082

View File

@ -42,10 +42,12 @@ def is_url(p):
""" """
return p.startswith('http://') or p.startswith('https://') return p.startswith('http://') or p.startswith('https://')
extra_configvars = {'TESTSERIES': ''}
# #
# Load the json file and append the results data into the provided results dict # Load the json file and append the results data into the provided results dict
# #
def append_resultsdata(results, f, configmap=store_map): def append_resultsdata(results, f, configmap=store_map, configvars=extra_configvars):
if type(f) is str: if type(f) is str:
if is_url(f): if is_url(f):
with urllib.request.urlopen(f) as response: with urllib.request.urlopen(f) as response:
@ -61,12 +63,15 @@ def append_resultsdata(results, f, configmap=store_map):
for res in data: for res in data:
if "configuration" not in data[res] or "result" not in data[res]: if "configuration" not in data[res] or "result" not in data[res]:
raise ValueError("Test results data without configuration or result section?") raise ValueError("Test results data without configuration or result section?")
if "TESTSERIES" not in data[res]["configuration"]: for config in configvars:
data[res]["configuration"]["TESTSERIES"] = testseries if config == "TESTSERIES" and "TESTSERIES" not in data[res]["configuration"]:
data[res]["configuration"]["TESTSERIES"] = testseries
continue
if config not in data[res]["configuration"]:
data[res]["configuration"][config] = configvars[config]
testtype = data[res]["configuration"].get("TEST_TYPE") testtype = data[res]["configuration"].get("TEST_TYPE")
if testtype not in configmap: if testtype not in configmap:
raise ValueError("Unknown test type %s" % testtype) raise ValueError("Unknown test type %s" % testtype)
configvars = configmap[testtype]
testpath = "/".join(data[res]["configuration"].get(i) for i in configmap[testtype]) testpath = "/".join(data[res]["configuration"].get(i) for i in configmap[testtype])
if testpath not in results: if testpath not in results:
results[testpath] = {} results[testpath] = {}
@ -76,16 +81,16 @@ def append_resultsdata(results, f, configmap=store_map):
# Walk a directory and find/load results data # Walk a directory and find/load results data
# or load directly from a file # or load directly from a file
# #
def load_resultsdata(source, configmap=store_map): def load_resultsdata(source, configmap=store_map, configvars=extra_configvars):
results = {} results = {}
if is_url(source) or os.path.isfile(source): if is_url(source) or os.path.isfile(source):
append_resultsdata(results, source, configmap) append_resultsdata(results, source, configmap, configvars)
return results return results
for root, dirs, files in os.walk(source): for root, dirs, files in os.walk(source):
for name in files: for name in files:
f = os.path.join(root, name) f = os.path.join(root, name)
if name == "testresults.json": if name == "testresults.json":
append_resultsdata(results, f, configmap) append_resultsdata(results, f, configmap, configvars)
return results return results
def filter_resultsdata(results, resultid): def filter_resultsdata(results, resultid):