jjb: binutils-gdb: don't run tests in parallel
[lttng-ci.git] / scripts / system-tests / parse-results.py
CommitLineData
b3d73c46
FD
1#! /usr/bin/python3
2from subprocess import call
9294e9a4
FD
3from collections import defaultdict
4import csv
b3d73c46
FD
5import numpy as np
6import pandas as pd
9294e9a4 7import sys
b3d73c46
FD
8
9def test_case(df):
f758d98b
FD
10 # Duration is in usec
11 # usecPecIter = Duration/(average number of iteration per thread)
12 df['usecperiter'] = (df['nbthreads'] * df['duration']) / df['nbiter']
13
14 periter_mean = pd.DataFrame({'periter_mean' :
15 df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['usecperiter'].mean()}).reset_index()
16
17 periter_stdev = pd.DataFrame({'periter_stdev' :
18 df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['usecperiter'].std()}).reset_index()
19
20 nbiter_mean = pd.DataFrame({'nbiter_mean' :
21 df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['nbiter'].mean()}).reset_index()
22
23 nbiter_stdev = pd.DataFrame({'nbiter_stdev' :
24 df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['nbiter'].std()}).reset_index()
25
26 duration_mean = pd.DataFrame({'duration_mean' :
27 df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['duration'].mean()}).reset_index()
28
29 duration_stdev = pd.DataFrame({'duration_stdev' :
30 df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['duration'].std()}).reset_index()
31
32 tmp = periter_mean.merge(periter_stdev)
33
34 tmp = tmp.merge(nbiter_mean)
35 tmp = tmp.merge(nbiter_stdev)
36
37 tmp = tmp.merge(duration_mean)
38 tmp = tmp.merge(duration_stdev)
39
40 # if there is any NaN or None value in the DF we raise an exeception
41 if tmp.isnull().values.any():
42 raise Exception('NaN value found in dataframe')
b3d73c46 43
b3d73c46 44 for i, row in tmp.iterrows():
f758d98b
FD
45 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'peritermean'])
46 yield( {"name": testcase_name, "result": "pass", "units": "usec/iter",
47 "measurement": str(row['periter_mean'])})
48
49 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'periterstdev'])
50 yield( {"name": testcase_name, "result": "pass", "units": "usec/iter",
51 "measurement": str(row['periter_stdev'])})
52
53 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'nbitermean'])
54 yield( {"name": testcase_name, "result": "pass", "units": "iterations",
55 "measurement": str(row['nbiter_mean'])})
56
57 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'nbiterstdev'])
58 yield( {"name": testcase_name, "result": "pass", "units": "iterations",
59 "measurement": str(row['nbiter_stdev'])})
60
61 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'durationmean'])
62 yield( {"name": testcase_name, "result": "pass", "units": "usec",
63 "measurement": str(row['duration_mean'])})
b3d73c46 64
f758d98b
FD
65 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'durationstdev'])
66 yield( {"name": testcase_name, "result": "pass", "units": "usec",
67 "measurement": str(row['duration_stdev'])})
b3d73c46 68
b3d73c46
FD
69def main():
70 results_file=sys.argv[1]
71 df = pd.read_csv(results_file)
9294e9a4 72 results=defaultdict()
b3d73c46
FD
73 data = test_case(df)
74 for res in data:
75 call(
76 ['lava-test-case',
77 res['name'],
78 '--result', res['result'],
79 '--measurement', res['measurement'],
80 '--units', res['units']])
81
9294e9a4 82 # Save the results to write to the CSV file
f758d98b 83 results[res['name']]=res['measurement']
9294e9a4
FD
84
85 # Write the dictionnary to a csv file where each key is a column
86 with open('processed_results.csv', 'w') as output_csv:
87 dict_csv_write=csv.DictWriter(output_csv, results.keys())
88 dict_csv_write.writeheader()
89 dict_csv_write.writerow(results)
90
b3d73c46
FD
91if __name__ == '__main__':
92 main()
This page took 0.032142 seconds and 4 git commands to generate.