xref: /aosp_15_r20/external/openthread/tools/harness-automation/gencsv.py (revision cfb92d1480a9e65faed56933e9c12405f45898b4)
1*cfb92d14SAndroid Build Coastguard Worker#!/usr/bin/env python
2*cfb92d14SAndroid Build Coastguard Workerimport json
3*cfb92d14SAndroid Build Coastguard Workerimport sys
4*cfb92d14SAndroid Build Coastguard Worker
5*cfb92d14SAndroid Build Coastguard Workerif len(sys.argv) > 1:
6*cfb92d14SAndroid Build Coastguard Worker    filename = sys.argv[1]
7*cfb92d14SAndroid Build Coastguard Workerelse:
8*cfb92d14SAndroid Build Coastguard Worker    filename = './result.json'
9*cfb92d14SAndroid Build Coastguard Worker
10*cfb92d14SAndroid Build Coastguard Worker
11*cfb92d14SAndroid Build Coastguard Workerdef get_key(item):
12*cfb92d14SAndroid Build Coastguard Worker    ds = item[0].split('_')
13*cfb92d14SAndroid Build Coastguard Worker    no = int(ds[1]) * 10000 + int(ds[2]) * 100 + int(ds[3])
14*cfb92d14SAndroid Build Coastguard Worker    ro = ds[0]
15*cfb92d14SAndroid Build Coastguard Worker    return '%d-%s' % (no, ro)
16*cfb92d14SAndroid Build Coastguard Worker
17*cfb92d14SAndroid Build Coastguard Worker
18*cfb92d14SAndroid Build Coastguard Workerresult = json.load(open(filename, 'r'))
19*cfb92d14SAndroid Build Coastguard Workero = open('./result.csv', 'w')
20*cfb92d14SAndroid Build Coastguard Workero.write('Case,Status,Started,Stopped,Reason\n')
21*cfb92d14SAndroid Build Coastguard Workerfor k, v in sorted(result.items(), key=get_key):
22*cfb92d14SAndroid Build Coastguard Worker    o.write('%s,%s,%s,%s,%s\n' % (
23*cfb92d14SAndroid Build Coastguard Worker        k,
24*cfb92d14SAndroid Build Coastguard Worker        (v['passed'] and 'Pass') or 'Fail',
25*cfb92d14SAndroid Build Coastguard Worker        v['started'],
26*cfb92d14SAndroid Build Coastguard Worker        v['stopped'],
27*cfb92d14SAndroid Build Coastguard Worker        (v['error'] or '').replace('\n', ' '),
28*cfb92d14SAndroid Build Coastguard Worker    ))
29