| 1 | #! /usr/bin/python3 |
| 2 | from subprocess import call |
| 3 | from collections import defaultdict |
| 4 | import csv |
| 5 | import numpy as np |
| 6 | import pandas as pd |
| 7 | import sys |
| 8 | |
| 9 | def 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 | |
| 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 | |
| 41 | def main(): |
| 42 | results_file=sys.argv[1] |
| 43 | df = pd.read_csv(results_file) |
| 44 | results=defaultdict() |
| 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 | |
| 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 | |
| 64 | if __name__ == '__main__': |
| 65 | main() |