diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/dmidecode.yaml | 30 | ||||
-rw-r--r-- | common/fwts.yaml | 32 | ||||
-rwxr-xr-x | common/scripts/fwts-parser.py | 63 |
3 files changed, 125 insertions, 0 deletions
diff --git a/common/dmidecode.yaml b/common/dmidecode.yaml new file mode 100644 index 0000000..38c5d09 --- /dev/null +++ b/common/dmidecode.yaml @@ -0,0 +1,30 @@ +metadata: + name: dmidecode + format: "Lava-Test-Shell Test Definition 1.0" + description: "DMI Decode Test" + version: 1.0 + os: + - ubuntu + - openembedded + devices: + - arndale + - panda + - beaglebone-black + - beagle-xm + - mx53loco + - rtsm_fvp_base-aemv8a + scope: + - functional + +install: + deps: + - dmidecode + - grep +run: + steps: + - lava-test-case kernel-space-sysfs-dmi-exist --shell ls /sys/class/dmi/ + - lava-test-case kernel-space-sysfs-dmi-id-exist --shell ls /sys/class/dmi/id + - lava-test-case kernel-space-sysfs-bios-date --shell cat /sys/class/dmi/id/bios_date + - lava-test-case kernel-space-sysfs-bios-vendor --shell cat /sys/class/dmi/id/bios_vendor + - lava-test-case kernel-space-sysfs-bios-version --shell cat /sys/class/dmi/id/bios_version + - ./common/scripts/dmidecode.sh diff --git a/common/fwts.yaml b/common/fwts.yaml new file mode 100644 index 0000000..3524472 --- /dev/null +++ b/common/fwts.yaml @@ -0,0 +1,32 @@ +metadata: + name: fwts + format: "Lava-Test-Shell Test Definition 1.0" + description: "Ubuntu Firmware Test Suite (fwts). The FWTS tool comprises of over fifty tests + that are designed to exercise and test different aspects of a machine's firmware. + More details - https://wiki.linaro.org/LEG/Engineering/test-acpi#Ubuntu_Firmware_test_suite" + maintainer: + - naresh.bhat@linaro.org + os: + - ubuntu + - openembedded + scope: + - functional + devices: + - panda + - panda-es + - arndale + - vexpress-a9 + - vexpress-tc2 + - rtsm_fvp_base-aemv8a + +install: + deps: + - fwts +run: + steps: + - lava-test-case fwts --shell fwts -a --log-filter=ALL --log-format='%owner-%field:' -w 250 + - lava-test-case-attach fwts results.log text/plain + - ./common/scripts/fwts-parser.py results.log + +parse: + pattern: "(?P<test_case_id>.*):\\s(?P<result>(pass|fail|skip)$)" diff --git a/common/scripts/fwts-parser.py b/common/scripts/fwts-parser.py new file mode 100755 index 0000000..bc20133 --- /dev/null +++ b/common/scripts/fwts-parser.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python + +import re +import sys + +RESULT_MAP = { 'PAS': 'pass', + 'FAL': 'fail', + 'SKP': 'skip', + 'ABT': 'fail', + 'WRN': 'fail', + 'ERR': 'fail' } +line = re.compile("(?P<owner>[a-z_]+)\\s*-(?P<field>[A-Z]+):(?P<content>.*)") +header = re.compile("(?P<gowner>[a-z]+):\\s(?P<group_name>[ ()a-zA-Z-_]+)") +result = re.compile("(?P<r>.*):\\s(?P<test_name>Test [0-9]),\\s(?P<comment>.*)") +summary = re.compile("(?P<passed_no>[0-9]+) passed, (?P<failed_no>[0-9]+) failed, (?P<warning_no>[0-9]+) warning, (?P<aborted_no>[0-9]+) aborted, (?P<skil_no>[0-9]+) skipped, (?P<info_no>[0-9]+) info only") + +grouplist = {} + +with open(sys.argv[1], 'r') as f: + for l in f.readlines(): + linere = line.search(l) + if linere: + owner = linere.group('owner') + field = linere.group('field') + content = linere.group('content') + if field == 'HED': + headerre = header.search(content) + if headerre: + group_name = headerre.group('group_name') + gt = {'name': group_name, 'subtests': [], 'result': ''} + grouplist[owner] = gt + elif field in RESULT_MAP: + resultre = result.search(content) + if resultre: + test = {'test_name': resultre.group('test_name'), + 'result': RESULT_MAP[field], + 'comment': resultre.group('comment')} + grouplist[owner]['subtests'].append(test) + else: + if 'comment' not in grouplist[owner]: + grouplist[owner]['comment'] = content + grouplist[owner]['result'] = RESULT_MAP[field] + elif field == 'SUM': + sumre = summary.search(content) + if sumre: + if re.match("^0000", ''.join(sumre.groups())): # 0 passed, 0 failed, 0 warning, 0 aborted + grouplist[owner]['result'] = 'skip' + +for gname, t in grouplist.iteritems(): + if len(t['subtests']) == 0: + t_result = 'skip' + t_comment = t['name'] + if t['result']: + t_result = t['result'] + if 'comment' in t: + t_comment = t['comment'] + print("%s (%s): %s" % (gname, t_comment, t_result)) + else: + for tt in t['subtests']: + if tt['comment']: + print("%s %s(%s): %s" % (gname, tt['test_name'], tt['comment'], tt['result'])) + else: + print("%s %s(%s): %s" % (gname, tt['test_name'], t['name'], tt['result'])) |