| 1 | #! /usr/bin/python3 |
| 2 | from subprocess import call |
| 3 | import sys |
| 4 | import numpy as np |
| 5 | import pandas as pd |
| 6 | |
| 7 | def test_case(df): |
| 8 | df['nsecperiter']=(df['duration']*1000)/(df['nbiter']) |
| 9 | stdev = pd.DataFrame({'perevent_stdev' : |
| 10 | df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['nsecperiter'].std()}).reset_index() |
| 11 | mean = pd.DataFrame({'perevent_mean' : |
| 12 | df.groupby(['nbthreads', 'tracer', 'testcase','sleeptime'])['nsecperiter'].mean()}).reset_index() |
| 13 | mem_mean = pd.DataFrame({'mem_mean' : |
| 14 | df.groupby(['nbthreads','tracer','testcase','sleeptime'])['maxmem'].mean()}).reset_index() |
| 15 | mem_stdev = pd.DataFrame({'mem_stdev' : |
| 16 | df.groupby(['nbthreads','tracer','testcase','sleeptime'])['maxmem'].std()}).reset_index() |
| 17 | tmp = mean.merge(stdev) |
| 18 | tmp = tmp.merge(mem_mean) |
| 19 | tmp = tmp.merge(mem_stdev) |
| 20 | |
| 21 | |
| 22 | for i, row in tmp.iterrows(): |
| 23 | testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'pereventmean']) |
| 24 | yield( {"name": testcase_name, "result": "pass", "units": "nsec/event", |
| 25 | "measurement": str(row['perevent_mean'])}) |
| 26 | |
| 27 | testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'pereventstdev']) |
| 28 | yield( {"name": testcase_name, "result": "pass", "units": "nsec/event", |
| 29 | "measurement": str(row['perevent_stdev'])}) |
| 30 | |
| 31 | testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'memmean']) |
| 32 | yield( {"name": testcase_name, "result": "pass", "units": "kB", |
| 33 | "measurement": str(row['mem_mean'])}) |
| 34 | |
| 35 | testcase_name='_'.join([row['tracer'],str(row['nbthreads'])+'thr', 'memstdev']) |
| 36 | yield( {"name": testcase_name, "result": "pass", "units": "kB", |
| 37 | "measurement": str(row['mem_stdev'])}) |
| 38 | |
| 39 | |
| 40 | def main(): |
| 41 | results_file=sys.argv[1] |
| 42 | df = pd.read_csv(results_file) |
| 43 | data = test_case(df) |
| 44 | for res in data: |
| 45 | call( |
| 46 | ['lava-test-case', |
| 47 | res['name'], |
| 48 | '--result', res['result'], |
| 49 | '--measurement', res['measurement'], |
| 50 | '--units', res['units']]) |
| 51 | |
| 52 | if __name__ == '__main__': |
| 53 | main() |