Lava: Generate plots including all past benchmark results
[lttng-ci.git] / scripts / lttng-baremetal-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):
10 df['nsecperiter']=(df['duration']*1000)/(df['nbiter'])
11 stdev = pd.DataFrame({'perevent_stdev' :
12 df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['nsecperiter'].std()}).reset_index()
13 mean = pd.DataFrame({'perevent_mean' :
14 df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['nsecperiter'].mean()}).reset_index()
15 mem_mean = pd.DataFrame({'mem_mean' :
16 df.groupby(['nbthreads','tracer','testcase','sleeptime'])['maxmem'].mean()}).reset_index()
17 mem_stdev = pd.DataFrame({'mem_stdev' :
18 df.groupby(['nbthreads','tracer','testcase','sleeptime'])['maxmem'].std()}).reset_index()
19 tmp = mean.merge(stdev)
20 tmp = tmp.merge(mem_mean)
21 tmp = tmp.merge(mem_stdev)
22
b3d73c46
FD
23 for i, row in tmp.iterrows():
24 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'pereventmean'])
25 yield( {"name": testcase_name, "result": "pass", "units": "nsec/event",
26 "measurement": str(row['perevent_mean'])})
27
28 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'pereventstdev'])
29 yield( {"name": testcase_name, "result": "pass", "units": "nsec/event",
30 "measurement": str(row['perevent_stdev'])})
31
32 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'memmean'])
33 yield( {"name": testcase_name, "result": "pass", "units": "kB",
34 "measurement": str(row['mem_mean'])})
35
36 testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'memstdev'])
37 yield( {"name": testcase_name, "result": "pass", "units": "kB",
38 "measurement": str(row['mem_stdev'])})
39
40
41def main():
42 results_file=sys.argv[1]
43 df = pd.read_csv(results_file)
9294e9a4 44 results=defaultdict()
b3d73c46
FD
45 data = test_case(df)
46 for res in data:
47 call(
48 ['lava-test-case',
49 res['name'],
50 '--result', res['result'],
51 '--measurement', res['measurement'],
52 '--units', res['units']])
53
9294e9a4
FD
54 # Save the results to write to the CSV file
55 if 'pereventmean' in res['name']:
56 results[res['name']]=res['measurement']
57
58 # Write the dictionnary to a csv file where each key is a column
59 with open('processed_results.csv', 'w') as output_csv:
60 dict_csv_write=csv.DictWriter(output_csv, results.keys())
61 dict_csv_write.writeheader()
62 dict_csv_write.writerow(results)
63
b3d73c46
FD
64if __name__ == '__main__':
65 main()
This page took 0.024375 seconds and 4 git commands to generate.